I have SymmetricDS running between PostgreSQL nodes, on windows. The registration node runs on Windows and also on 5 clients. I am migrating to Linux, so I have attempted to launch a slave on Linux. However I get the following error which I am unable to resolve
PullService - Could not communicate with node 'null:null:?' at http://XXX:8081/sync because of unexpected error
java.lang.NullPointerException
The remainder of the log is as follows
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
The Client engine file is as follows
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
The Registration Server Engine is setup as follows
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
This is the line of code that throws the NullPointerException
:
ProcessInfo processInfo = statisticManager.newProcessInfo(
new ProcessInfoKey(
remote.getNodeId(),
Constants.CHANNEL_CONFIG,
local.getNodeId(),
PULL_CONFIG_JOB));
Many things could’ve gone wrong. I would recommend to run symmetricDs server in debug mode, checkout the 3.11.7 source in your IDE, put a breakpoint to the line 508, connect remotely to the process and observe what’s null