View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004044 | SymmetricDS | Improvement | public | 2019-07-15 20:10 | 2019-08-23 16:46 |
Reporter | elong | Assigned To | elong | ||
Priority | normal | ||||
Status | closed | Resolution | fixed | ||
Product Version | 3.7.0 | ||||
Target Version | 3.10.4 | Fixed in Version | 3.10.4 | ||
Summary | 0004044: Potential bottleneck from thread locking during initial load with multiple clients | ||||
Description | When loading multiple client nodes at the same, it was observed that many threads were waiting on a synchronized block in the extension service. The initial load extract is checking each row from the table with the router service to see if the row does need to be sent to the target node. Each call is looking up routers from the extension service. So, it seems to be the slowest part of the loop, but not necessarily slowing things down noticeably. However, let's optimize this section of code since it appears to be a hot spot. org.jumpmind.symmetric.service.impl.ExtensionService.getExtensionPointMap():240 org.jumpmind.symmetric.service.impl.RouterService.getRouters():1163 org.jumpmind.symmetric.service.impl.RouterService.getDataRouter():1100 org.jumpmind.symmetric.service.impl.RouterService.shouldDataBeRouted():160 org.jumpmind.symmetric.service.impl.DataExtractorService$SelectFromTableSource.next():2151 org.jumpmind.symmetric.service.impl.DataExtractorService$SelectFromSymDataSource.next():1900 org.jumpmind.symmetric.io.data.reader.ExtractDataReader.nextData():133 org.jumpmind.symmetric.io.data.DataProcessor.forEachDataInTable():191 org.jumpmind.symmetric.io.data.DataProcessor.forEachTableInBatch():170 org.jumpmind.symmetric.io.data.DataProcessor.process():116 org.jumpmind.symmetric.service.impl.DataExtractorService.extractOutgoingBatch():894 org.jumpmind.symmetric.service.impl.DataExtractorService.execute():1666 org.jumpmind.symmetric.service.impl.NodeCommunicationService$1.run():519 java.util.concurrent.ThreadPoolExecutor.runWorker():1149 java.util.concurrent.ThreadPoolExecutor$Worker.run():624 java.lang.Thread.run():748 | ||||
Tags | No tags attached. | ||||
Date Modified | Username | Field | Change |
---|---|---|---|
2019-07-15 20:10 | elong | New Issue | |
2019-07-15 20:10 | elong | Status | new => assigned |
2019-07-15 20:10 | elong | Assigned To | => elong |
2019-07-15 20:14 | elong | Status | assigned => resolved |
2019-07-15 20:14 | elong | Resolution | open => fixed |
2019-07-15 20:14 | elong | Fixed in Version | => 3.10.4 |
2019-07-15 21:00 | admin | Changeset attached | => SymmetricDS 3.10 f38acabb |
2019-08-23 16:46 | admin | Status | resolved => closed |