View Issue Details

IDProjectCategoryView StatusLast Update
0004346SymmetricDSBugpublic2020-04-21 15:02
ReporterelongAssigned Toelong 
Prioritynormal 
Status closedResolutionfixed 
Product Version3.11.3 
Target Version3.11.8Fixed in Version3.11.8 
Summary0004346: Routing hash collision does not clean up properly
DescriptionWhen routing with common groups, a hash collision can occur and does not clean up properly, so it continues to try routing and gets stuck:

ERROR [SEDE-015] [RouterJob] Exception while executing job 'Routing' StackTraceKey.init [CommonBatchCollisionException:1959824104]
org.jumpmind.symmetric.route.CommonBatchCollisionException: Collision detected for common batch group
        at org.jumpmind.symmetric.service.impl.RouterService.insertDataEvents(RouterService.java:1011)
        at org.jumpmind.symmetric.service.impl.RouterService.routeData(RouterService.java:915)
        at org.jumpmind.symmetric.service.impl.RouterService.selectDataAndRoute(RouterService.java:761)
        at org.jumpmind.symmetric.service.impl.RouterService.routeDataForChannel(RouterService.java:507)
        at org.jumpmind.symmetric.service.impl.RouterService.routeDataForEachChannel(RouterService.java:279)
        at org.jumpmind.symmetric.service.impl.RouterService.routeData(RouterService.java:217)
        at org.jumpmind.symmetric.job.RouterJob.doJob(RouterJob.java:49)
        at org.jumpmind.symmetric.job.AbstractJob.invoke(AbstractJob.java:227)
        at org.jumpmind.symmetric.job.AbstractJob.run(AbstractJob.java:298)
        at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:835)
Steps To Reproduce1. Setup nodes 001, Aa, and BB

2. Send a table through a router that can to 001 and Aa or 001 and BB.

id = String.valueOf(ID);
if (id.contains("0")) {
    targetNodes.add("Aa");
    targetNodes.add("001");
} else {
    targetNodes.add("BB");
    targetNodes.add("001");
}
return targetNodes;

3. Change data that will route to both groups

insert into mytest values (10);
insert into mytest values (11);

4. Collision will occur because group (001, Aa) is the same hash code as (001, BB)
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Related Changesets

SymmetricDS: 3.11 a70b1723

2020-04-15 09:13:33

admin

Details Diff
0004346: Routing hash collision does not clean up properly
0004346
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RouterService.java Diff File

SymmetricDS: 3.11 88428e7b

2020-04-21 09:00:20

admin

Details Diff
0004346: detect collision only for common group mode
0004346
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RouterService.java Diff File

Issue History

Date Modified Username Field Change
2020-04-15 09:03 elong New Issue
2020-04-15 09:03 elong Status new => assigned
2020-04-15 09:03 elong Assigned To => elong
2020-04-15 09:14 elong Status assigned => resolved
2020-04-15 09:14 elong Resolution open => fixed
2020-04-15 09:14 elong Fixed in Version => 3.11.8
2020-04-15 10:00 admin Changeset attached => SymmetricDS 3.11 a70b1723
2020-04-21 10:00 admin Changeset attached => SymmetricDS 3.11 88428e7b
2020-04-21 15:02 admin Status resolved => closed