View Issue Details

IDProjectCategoryView StatusLast Update
0006688SymmetricDS ProNew Featurepublic2025-03-17 20:15
Reporterelong Assigned Toelong  
Prioritynormal 
Status closedResolutionfixed 
Product Version3.16.0 
Target Version3.16.0Fixed in Version3.16.0 
Summary0006688: Dynamic reload queue to scale initial load
DescriptionTo make it easier for the initial load to scale across multiple threads, introduce a dynamic reload queue that assigns tables to a pool of threads. The number of threads is controlled by a parameter, one for extract threads and one for push/pull threads. All batches for a table are assigned to the same thread so there is no contention for the table. The initial load extract job makes assignments of batches to be extracted and loaded up to the max batches to sync, which allows for adjustment of the parameters during the load. When the reload channel is given the queue name of reload, this feature is enabled, which is the default configuration of the channel. Dynamic queues are internally named reload!1, reload!2, reload!3, etc based on the thread number assignment. The initial.load.queue.use.all.threads parameter controls if all threads can be used by an initial load with a setting of "auto" that uses all threads if table constraints have been deferred.

initial.load.extract.thread.per.server.count=20
initial.load.queue.sync.thread.count=20
initial.load.queue.use.all.threads=auto
Tagsinitial/partial load, performance

Activities

pbelov

2025-03-17 17:15

manager   ~0002695

Included in the 3.16.0 release

Related Changesets

SymmetricDS: 3.16 7bab5e18

2025-01-06 21:02:41

elong


Committer: GitHub Details Diff
0006688: Dynamic reload queue to scale initial load (0000217)

0006688: Dynamic reload queue to scale initial load
Affected Issues
0006688
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/AbstractSymmetricEngine.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/CacheManager.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/ICacheManager.java Diff File
add - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/OutgoingBatchCache.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/common/Constants.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/common/ParameterConstants.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/db/DatabaseUpgradeListener.java Diff File
add - symmetric-core/src/main/java/org/jumpmind/symmetric/ext/IReloadQueueThreadAssigner.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/extract/MultiBatchStagingWriter.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/extract/SelectFromSymDataSource.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/io/stage/SimpleStagingDataWriter.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/model/ExtractRequest.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/model/NodeSecurity.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/model/OutgoingBatch.java Diff File
add - symmetric-core/src/main/java/org/jumpmind/symmetric/model/ReadyChannels.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/IIncomingBatchService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/INodeService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/IOutgoingBatchService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/ITriggerRouterService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorServiceSqlMap.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataLoaderService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/FileSyncExtractorService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/IncomingBatchService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/InitialLoadService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeCommunicationService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/NodeServiceSqlMap.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/OutgoingBatchService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/OutgoingBatchServiceSqlMap.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PushService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/RouterService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java Diff File
add - symmetric-core/src/main/java/org/jumpmind/symmetric/util/QueueThread.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/web/WebConstants.java Diff File
mod - symmetric-core/src/main/resources/symmetric-default.properties Diff File
mod - symmetric-core/src/main/resources/symmetric-schema.xml Diff File
mod - symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/DataServiceTest.java Diff File
mod - symmetric-core/src/test/java/org/jumpmind/symmetric/service/impl/MockNodeService.java Diff File
mod - symmetric-db/src/main/java/org/jumpmind/db/sql/Row.java Diff File
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/DefaultDatabaseWriter.java Diff File
mod - symmetric-server/src/main/java/org/jumpmind/symmetric/web/PullUriHandler.java Diff File
mod - symmetric-server/src/main/java/org/jumpmind/symmetric/web/PushUriHandler.java Diff File

SymmetricDS: 3.16 680c309b

2025-01-10 18:23:26

admin

Details Diff
0006688: don't use ready queues if only 1 queue Affected Issues
0006688
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/CacheManager.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/ConfigurationCache.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/ICacheManager.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/OutgoingBatchCache.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/IConfigurationService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/AbstractService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/ConfigurationService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PushService.java Diff File
mod - symmetric-server/src/main/java/org/jumpmind/symmetric/web/PullUriHandler.java Diff File

SymmetricDS: 3.16 a46b865f

2025-02-13 13:37:23

evan-miller-jumpmind

Details Diff
0006688: Set default value of trigger.create.before.initial.load parameter back to true Affected Issues
0006688
mod - symmetric-core/src/main/resources/symmetric-default.properties Diff File

SymmetricDS: 3.16 5233c204

2025-03-03 21:49:28

admin

Details Diff
0006688: add flush of ready queues Affected Issues
0006688
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/CacheManager.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/ICacheManager.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/cache/OutgoingBatchCache.java Diff File

SymmetricDS: 3.16 32a571f3

2025-03-04 13:36:33

admin

Details Diff
0006688: don't use ready queues if route on extract Affected Issues
0006688
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PullService.java Diff File
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/PushService.java Diff File
mod - symmetric-server/src/main/java/org/jumpmind/symmetric/web/PullUriHandler.java Diff File

Issue History

Date Modified Username Field Change
2025-01-02 15:34 elong New Issue
2025-01-02 15:34 elong Status new => assigned
2025-01-02 15:34 elong Assigned To => elong
2025-01-02 15:34 elong Tag Attached: initial/partial load
2025-01-06 21:03 elong Status assigned => resolved
2025-01-06 21:03 elong Resolution open => fixed
2025-01-06 21:03 elong Fixed in Version => 3.16.0
2025-01-06 22:00 elong Changeset attached => SymmetricDS 3.16 7bab5e18
2025-01-10 19:00 admin Changeset attached => SymmetricDS 3.16 680c309b
2025-02-13 14:00 Changeset attached => SymmetricDS 3.16 a46b865f
2025-03-03 22:00 admin Changeset attached => SymmetricDS 3.16 5233c204
2025-03-04 14:00 admin Changeset attached => SymmetricDS 3.16 32a571f3
2025-03-17 17:15 pbelov Note Added: 0002695
2025-03-17 17:15 pbelov Status resolved => closed
2025-03-17 20:15 elong Tag Attached: performance