SymmetricDS 注册从 Linux 到 Windows

SymmetricDS Registration from Linux to Windows

我在 windows 上的 PostgreSQL 节点之间有 SymmetricDS 运行。 注册节点在 Windows 和 5 个客户端上运行。我正在迁移到 Linux,所以我试图在 Linux 上启动一个从服务器。但是我收到以下无法解决的错误

PullService - Could not communicate with node 'null:null:?' at http://XXX:8081/sync because of unexpected error
java.lang.NullPointerException

日志剩余部分如下

Log output will be written to /usr/lib/symmetric-server-3.11.7/logs/symmetric.log
[startup] - AbstractCommandLauncher - Option: name=port, value={8082}
[startup] - SymmetricUtils -
   _____                              __       _       ____   _____
  / ___/ __  _____ __  ___ __  ___  _/ /_ ____(_)___  / __ | / ___/
  \__ \ / / / / _ `_ \/ _ `_ \/ _ \/_ __// __/ / __/ / / / / \__ \
 ___/ // /_/ / // // / // // /  __// /  / / / / /_  / /_/ / ___/ /
/____/ \__  /_//_//_/_//_//_/\___/ \_/ /_/ /_/\__/ /_____/ /____/
      /____/
+-----------------------------------------------------------------+
| Copyright (C) 2007-2020 JumpMind, Inc.                          |
|                                                                 |
| Licensed under the GNU General Public License version 3.        |
| This software comes with ABSOLUTELY NO WARRANTY.                |
| See http://www.gnu.org/licenses/gpl.html                        |
+-----------------------------------------------------------------+
[startup] - SymmetricWebServer - About to start SymmetricDS web server on host:port 0.0.0.0:8082
[fil4-104] - AbstractSymmetricEngine - Initializing connection to database
[fil4-104] - JdbcDatabasePlatformFactory - Detected database 'postgres95', version '11', protocol 'postgresql'
[fil4-104] - JdbcDatabasePlatformFactory - The IDatabasePlatform being used is org.jumpmind.db.platform.postgresql.PostgreSql95DatabasePlatform
[fil4-104] - PostgreSqlSymmetricDialect - The DbDialect being used is org.jumpmind.symmetric.db.postgresql.PostgreSqlSymmetricDialect
[fil4-104] - ExtensionService - Found 0 extension points from the database that will be registered
[fil4-104] - StagingManager - The staging directory was initialized at the following location: /usr/lib/symmetric-server-3.11.7/tmp/fil4-104
[fil4-104] - ExtensionService - Found 0 extension points from the database that will be registered
[fil4-104] - ClientExtensionService - Found 8 extension points from spring that will be registered
[fil4-104] - AbstractSymmetricEngine - Initializing SymmetricDS database
[fil4-104] - PostgreSqlSymmetricDialect - Checking if SymmetricDS tables need created or altered
[startup] - SymmetricWebServer - Starting JMX HTTP console on port 8083
[startup] - SymmetricWebServer - Joining the web server main thread
HttpAdaptor version 3.0.1 started on port 8083
[fil4-104] - AbstractSymmetricEngine - Done initializing SymmetricDS database
[fil4-104] - AbstractSymmetricEngine - SymmetricDS database version : 3.11.4
[fil4-104] - AbstractSymmetricEngine - SymmetricDS software version : 3.11.7
[fil4-104] - AbstractSymmetricEngine - SymmetricDS database version does not match the current software version, running software upgrade listeners.
[fil4-104] - AbstractSymmetricEngine - Starting registered node [group=fil4, id=104, nodeId=104]
[fil4-104] - ClusterService - This node picked a server id of filefour
[fil4-104] - TriggerRouterService - Synchronizing triggers
[fil4-104] - TriggerRouterService - Done synchronizing triggers
[fil4-104] - PullService - Could not communicate with node 'null:null:?' at http://XXX:8081/sync because of unexpected error
java.lang.NullPointerException
        at org.jumpmind.symmetric.service.impl.DataLoaderService.loadDataFromConfig(DataLoaderService.java:508)
        at org.jumpmind.symmetric.service.impl.PullService.pullConfigData(PullService.java:192)
        at org.jumpmind.symmetric.AbstractSymmetricEngine.start(AbstractSymmetricEngine.java:688)
        at org.jumpmind.symmetric.AbstractSymmetricEngine.start(AbstractSymmetricEngine.java:646)
        at org.jumpmind.symmetric.ClientSymmetricEngine.start(ClientSymmetricEngine.java:271)
        at org.jumpmind.symmetric.web.SymmetricEngineHolder$EngineStarter.run(SymmetricEngineHolder.java:601)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
[fil4-104] - RouterJob - Starting Routing on periodic schedule: every 3000ms with the first run at Mon Jun 08 16:33:54 CEST 2020
[fil4-104] - PushJob - Starting Push on periodic schedule: every 3000ms with the first run at Mon Jun 08 16:33:54 CEST 2020
[fil4-104] - PullJob - Starting Pull on periodic schedule: every 3000ms with the first run at Mon Jun 08 16:33:54 CEST 2020
[fil4-104] - JobManager - Job Offline Push not configured for auto start
[fil4-104] - JobManager - Job Offline Pull not configured for auto start
[fil4-104] - OutgoingPurgeJob - Starting job 'Purge Outgoing' with cron expression: '0 0 */4 * * *'
[fil4-104] - IncomingPurgeJob - Starting job 'Purge Incoming' with cron expression: '0 0 */4 * * *'
[fil4-104] - StatisticFlushJob - Starting job 'Stat Flush' with cron expression: '0 0/5 * * * *'
[fil4-104] - SyncTriggersJob - Starting job 'SyncTriggers' with cron expression: '0 0 0 * * *'
[fil4-104] - JobManager - Job Heartbeat not configured for auto start
[fil4-104] - WatchdogJob - Starting Watchdog on periodic schedule: every 3600000ms with the first run at Mon Jun 08 16:33:54 CEST 2020
[fil4-104] - StageManagementJob - Starting job 'Stage Management' with cron expression: '0 0 * * * *'
[fil4-104] - JobManager - Job Refresh Cache not configured for auto start
[fil4-104] - JobManager - Job File Sync Tracker not configured for auto start
[fil4-104] - JobManager - Job File Sync Pull not configured for auto start
[fil4-104] - JobManager - Job File Sync Push not configured for auto start
[fil4-104] - InitialLoadExtractorJob - Starting Initial Load Extract on periodic schedule: every 10000ms with the first run at Mon Jun 08 16:33:54 CEST 2020
[fil4-104] - MonitorJob - Starting Monitor on periodic schedule: every 60000ms with the first run at Mon Jun 08 16:33:54 CEST 2020
[fil4-104] - JobManager - Job Report Status not configured for auto start
[fil4-104] - JobManager - Job Log Miner not configured for auto start
[fil4-104] - InitialLoadJob - Starting Initial Load Queue on periodic schedule: every 10000ms with the first run at Mon Jun 08 16:33:54 CEST 2020
[fil4-104] - AbstractSymmetricEngine - SymmetricDS Node STARTED:
         nodeId=104
         groupId=fil4
         type=server
         subType=null
         name=fil4-104
         softwareVersion=3.11.7
         databaseName=PostgreSQL
         databaseVersion=11.8
         driverName=PostgreSQL JDBC Driver
         driverVersion=42.2.8
         uptime=0 sec.
[fil4-104] - DataGapFastDetector - Full gap analysis is running
[fil4-104] - DataGapFastDetector - Querying data in gaps from database took 5 ms
[fil4-104] - DataGapFastDetector - Full gap analysis is done after 6 ms

Client引擎文件如下

engine.name=fil4-104

db.driver=org.postgresql.Driver db.url=jdbc:postgresql://localhost/track?stringtype=unspecified

db.user=* db.password=*

registration.url=http://XXXX:8081/sync sync.url=http://ME:8082/sync

group.id=fil4 external.id=104

job.routing.period.time.ms=3000

job.push.period.time.ms=3000

job.pull.period.time.ms=3000

auto.registration=true

start.purge.job=true

job.purge.period.time.ms=3000000

purge.retention.minutes=120

start.heartbeat.job=false initial.load.delete.first=false auto.sync.triggers=true auto.reload=false auto.sync.configuration=false auto.sync.configuration.on.incoming=false file.sync.enable=false

stream.to.file.enabled=true

db.sql.query.timeout.seconds=180

注册服务器引擎设置如下

engine.name=main-000 db.driver=org.postgresql.Driver db.url=jdbc:postgresql://localhost/track?stringtype=unspecified db.user=* db.password=*

registration.url=http://XXX:8081/sync sync.url=http://XXX:8081/sync group.id=main external.id=000 start.purge.job=true job.purge.period.time.ms=3000000 purge.retention.minutes=120 job.routing.period.time.ms=5000 db.sql.query.timeout.seconds=600 job.push.period.time.ms=3000 job.pull.period.time.ms=3000 auto.registration=true start.heartbeat.job=false initial.load.delete.first=false auto.sync.triggers=false auto.reload=false auto.sync.configuration=true auto.sync.configuration.on.incoming=true file.sync.enable=false http.push.stream.output.enabled=true stream.to.file.enabled=true initial.load.create.first = false

这是抛出 NullPointerException:

的代码行
ProcessInfo processInfo = statisticManager.newProcessInfo(
  new ProcessInfoKey(
    remote.getNodeId(), 
    Constants.CHANNEL_CONFIG, 
    local.getNodeId(), 
    PULL_CONFIG_JOB));

很多事情都可能出错。我建议 运行 symmetricDs 服务器处于调试模式,检查 IDE 中的 3.11.7 源代码,在第 508 行放置一个断点,远程连接到进程并观察什么是 null