View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006815 | SymmetricDS Pro | Bug | public | 2025-04-10 15:16 | 2025-04-10 15:16 |
Reporter | pbelov | Assigned To | pbelov | ||
Priority | normal | ||||
Status | assigned | Resolution | open | ||
Product Version | 3.16.1 | ||||
Target Version | 3.16.2 | ||||
Summary | 0006815: Prevent node miscommunication regarding state of a Compare & Repair request for a table. | ||||
Description | Currently 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 Information | Here 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 | ||||
Tags | No tags attached. | ||||