FlowPortal 连接服务器”127.0.0.1″失败

今天早上FlowPortal系统突然出现如下报错:
连接服务器”127.0.0.1″失败。
原因:
No connection could be made because the target machine actively refused it 127.0.0.1:1590

经过一系列查询发现是角色表里有重复值造成的,如果有重复值,不重启服务,系统可以继续使用,如果有重复值,服务无法启动。
说一下查询思路:

  • 是不是服务器down掉了?发现服务器可以登录。
  • 是不是FlowPortal服务死掉了?登录查看,果然是服务没启动。尝试手动启动,结果:失败,提示如下:

提示不太明确,貌似和其它服务有关系,尝试重启服务器。结果:服务并没有自动重启,再次尝试手动启动,还是报同样的错误。

电话咨询了FlowPortal专家Troy Cui,建议先看日志,然后根据日志找原因,发现问题及时联系。

查看服务器日志,到底发生了什么。
把过去3小时的,System和Application中所有的Error和Warning日志依次查看,并没有发现和FlowPortal有关的内容。

然后查看YZSoft的日志,有很多Waring,但都没有导致服务down掉的信息。

剩下的都是Information,有三条貌似有关系。

Create connection failed(data source:Default)!reason:
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 – The specified network name is no longer available.)
Create connection failed(data source:Default)!reason:
Cannot open database “BPMDB” requested by the login. The login failed.
Login failed for user ‘sa’.
OUProvider BPMOUProvider.OrgProvider failed during loading! detail:
Loading BPMOU organization fialed, System exit, Reason
Object with the same name “5/GCM Actives” already exists.
看起来前两条比较严重,都是连接数据库出了问题。

  • 基于现在的查询,猜想:系统连接数据库出了问题,应该是程序出错了,丢失了什么文件,或者数据库出错了,不能打开。然后在错误的道路上一路狂奔,搞了接近6个小时。才发现方向错了。
  • 先验证数据库是否损坏,发现未损坏,完全可以打开。
  • 那说明FlowPortal系统出了问题,把数据和所有文件全部备份,然后重新装一下。
    重新建了个数据库,重新装,装完,发现可以打开。把老程序覆盖掉新程序,发现照样可以打开。不祥的感觉,程序没问题,数据库的问题。或者说数据的问题,那么多表,怎么找到错误的数据?
  • 下载了一个Data Delta,试用14天,然后对比两个数据库,先对比结构,发现没异常,然后对比数据,把能转移的表全部转移到新数据库。有主键的数据库都可以转移过去。转移完,发现数据库还是可以使用。

手动转移那些不包含主键的表。当转移到BPMSysOURoles时,突然报错。
删掉表BPMSysOURoles,系统可以正常访问。
查看BPMSysOURoles,里面竟然有两行同样的数据。所以系统报错。删掉其中一行,系统正常访问。突然想到前面的第三个报错,里面提示的就是表里面重复行的内容信息。

回顾整个过程,如果数据有重复行,不重启服务的情况下,是可以继续使用的。如果重启,则不能启动服务。这里面也包含了系统的一个Bug,维护角色的时候,系统应该提示,不能维护相同名称的角色。

总结:对系统日志要认真读,认真思考,然后再采取行动,有的放矢。