View Issue Details

IDProjectCategoryView StatusLast Update
0006815SymmetricDS ProBugpublic2025-04-10 15:16
Reporterpbelov Assigned Topbelov  
Prioritynormal 
Status assignedResolutionopen 
Product Version3.16.1 
Target Version3.16.2 
Summary0006815: Prevent node miscommunication regarding state of a Compare & Repair request for a table.
DescriptionCurrently the CompareService fails to process a table-level step, when one database endpoint is significantly slower than the other.
When faster node attempts to push data to the slower node, their status codes do not match causing a rejected call and closed connection.

The CompareService.handlePutCompare method reports error:
"Not ready to handle PUT for SQL08_Trigger-49-884 because level R does not match requested level F"

Consider improving the CompareTransportManager.transportPushResource
Steps To Reproduce* One database endpoint much slower than the other.
* Multiple large tables in the Compare & Repair request (Fix level=4)
Additional InformationHere is a symmetric.log file for a mult-homed two-node environment:
* SQL08_Trigger = faster one
* Sybase (load-only with embedded H2 database for runtime) = slower one


2025-04-08 22:57:56,855 INFO [SQL08_Trigger] [o] [sql08_trigger-compare-49|884-7] Comparing rows for compare request SQL08_Trigger-49-884 for table mypace_data_exchge for 60 seconds and 54596870 rows

2025-04-08 22:58:11,183 INFO [SQL08_Trigger] [o] [sql08_trigger-compare-49|884-7] Compared 67802669 rows for compare request SQL08_Trigger-49-884 for table mypace_data_exchge in 74 seconds: match=0 diff=0 miss=0 extra=67802665

2025-04-08 22:58:13,058 INFO [SQL08_Trigger] [r] [sql08_trigger-compare-49|884-21] Pushing resource 49-884-repair.done to node Sybase:Sybase:Sybase

2025-04-08 22:58:13,059 INFO [Sybase] [CompareService] [qtp1407492510-61] Not ready to handle PUT for SQL08_Trigger-49-884 because level R does not match requested level F

2025-04-08 22:58:13,068 ERROR [SQL08_Trigger] [CompareService] [sql08_trigger-compare-49|884-21] Failed to compare request SQL08_Trigger-49-884: StackTraceKey.init [IoException:2760975633] org.jumpmind.exception.IoException: java.io.IOException: closed
    at org.jumpmind.symmetric.transport.http.HttpOutgoingTransport.closeOutputStream(HttpOutgoingTransport.java:132)
    at org.jumpmind.symmetric.transport.http.HttpOutgoingTransport.close(HttpOutgoingTransport.java:106)
    at com.jumpmind.symmetric.console.impl.r.a(CompareTransportManager.java:92)
    at com.jumpmind.symmetric.console.impl.r.a(CompareTransportManager.java:62)
    at com.jumpmind.symmetric.console.impl.m.a(CompareRepair.java:37)
    at com.jumpmind.symmetric.console.service.impl.CompareService.execute(CompareService.java:684)
    at org.jumpmind.symmetric.service.impl.NodeCommunicationService$1.run(NodeCommunicationService.java:553)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.io.IOException: closed
    at java.base/sun.net.www.http.ChunkedOutputStream.ensureOpen(ChunkedOutputStream.java:185)
    at java.base/sun.net.www.http.ChunkedOutputStream.flush(ChunkedOutputStream.java:317)
    at java.base/java.io.FilterOutputStream.flush(FilterOutputStream.java:153)
    at org.jumpmind.symmetric.transport.http.HttpOutgoingTransport.closeOutputStream(HttpOutgoingTransport.java:130)
    ... 9 more
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2025-04-10 15:16 pbelov New Issue
2025-04-10 15:16 pbelov Status new => assigned
2025-04-10 15:16 pbelov Assigned To => pbelov