View Issue Details

IDProjectCategoryView StatusLast Update
0004472SymmetricDSBugpublic2020-09-14 19:59
Reporterpmarzullo Assigned Topmarzullo  
Prioritynormal 
Status resolvedResolutionfixed 
Product Version3.11.5 
Target Version3.10.13Fixed in Version3.10.13 
Summary0004472: Staging Purge stops extracts from continuing on when running on the same instance
DescriptionWhen Staging Purge is running, a JVM lock is made on the StagingManager object, because the clean() method is a synchronized method.

Also, before the cleaning is started, the resourcePathsCache object is cleared.

When an extract of a batch is completed writing to the .CREATE file, the extractor then attempts to find the staged resource so that the state can be changed to the DONE state (.DONE extension).

During the StagingManager.find() method, the resourcePathsCache object is looked at to find the cached path to the staged resource. Because the StagingManager purge has already cleared out the resourcePathsCache object, the find() method does not find the cached object, then must go into a synchronized block of code that is synchronized on the "this" object, which is the same object that the synchronized method already has a lock on. So the find() method must wait until the StagingManager.clean() method is complete before continuing on with creating the staged resource to return to the caller, which is the data extractor.

So the data extractor can not continue on with extracting while the StagingManager.clean() is running.
Steps To Reproduce1. Create an initial load for a node.
2. Watch the creation of the batch files.
3. Run the StagingManager job.
4. Notice that the creation of the batch files is paused.
Tagsextract, performance, purge

Relationships

related to 0004545 resolvedelong Data Extractor gets "java.lang.IllegalStateException: There is no content to read" from staging 
related to 0004546 closedelong Data Extractor gets "java.lang.IllegalStateException: There is no content to read" from staging 
related to 0004547 closedelong Data Extractor gets "java.lang.IllegalStateException: There is no content to read" from staging 

Activities

pmarzullo

2020-07-09 19:16

developer   ~0001731

Also merged into 3.11 and 3.12.

pmarzullo

2020-07-09 19:17

developer   ~0001732

Also merged into 3.11 and 3.12

Related Changesets

SymmetricDS: 3.10 fe0ded90

2020-07-09 15:13:29

Philip Marzullo

Details Diff
0004472: Staging Purge stops extracts from continuing on when running on
the same instance
Affected Issues
0004472
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagingManager.java Diff File

Issue History

Date Modified Username Field Change
2020-07-09 16:14 pmarzullo New Issue
2020-07-09 16:14 pmarzullo Status new => assigned
2020-07-09 16:14 pmarzullo Assigned To => pmarzullo
2020-07-09 16:14 pmarzullo Tag Attached: extract
2020-07-09 16:14 pmarzullo Tag Attached: purge
2020-07-09 19:16 pmarzullo Target Version => 3.10.13
2020-07-09 19:16 pmarzullo Note Added: 0001731
2020-07-09 19:17 pmarzullo Status assigned => resolved
2020-07-09 19:17 pmarzullo Resolution open => fixed
2020-07-09 19:17 pmarzullo Fixed in Version => 3.10.13
2020-07-09 19:17 pmarzullo Note Added: 0001732
2020-07-09 20:00 Changeset attached => SymmetricDS 3.10 fe0ded90
2020-07-10 14:07 pmarzullo Tag Attached: performance
2020-09-14 19:52 elong Relationship added related to 0004545
2020-09-14 19:58 elong Relationship added related to 0004546
2020-09-14 19:59 elong Relationship added related to 0004547