View Issue Details

IDProjectCategoryView StatusLast Update
0003282SymmetricDSBugpublic2017-11-15 16:00
ReportermmichalekAssigned Tommichalek 
PrioritynormalSeverityminorReproducibilitysometimes
Status closedResolutionfixed 
Product Version3.8.0 
Target Version3.8.31Fixed in Version3.8.31 
Summary0003282: Common batch extracts may fail when a cluster is using a shared staging area
DescriptionTypically batches are extracted on demand. And common batches are batches that share the same data, but need to be delivered to different nodes. So a common batch only should be extracted once to serve up to any number of clients.

But when clients simultaneously pull from multiple servers in a cluster, and that cluster is using a shared staging area (ie, some shared storage like a SAN) there is no locking mechanism at the file system level to say who is in control of extracting the batch. In other words, there is a race condition when extracting common batches on a clustered server that uses a shared staging location. This can result in undefined behavior at the file writing level. A couple of the observed errors related to this include:

Caused by: java.io.IOException: Stream closed
OR
Caused by: java.io.IOException: Stale file handle
OR
java.lang.IllegalStateException: There is no content to read. Memory buffer was empty and /Users/userid/tmp/shared-staging/staging/server/outgoing/common/0000000116.create was not found.
OR
java.lang.IllegalStateException: Could not find the staged resource for batch client3-143

Full stack trace examples:

2017-10-04 05:03:16,525 ERROR [SymmetricDS] [DataExtractorService] [http-bio-8080-exec-6] Failed to extract batch 08286-210478 StackTraceKey.init [RuntimeException:1766863430]
java.lang.RuntimeException: org.jumpmind.exception.IoException: java.io.IOException: Stale file handle
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:664)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:537)
    at org.jumpmind.symmetric.web.PullUriHandler.pull(PullUriHandler.java:130)
    at org.jumpmind.symmetric.web.PullUriHandler.handleWithCompression(PullUriHandler.java:100)
    at org.jumpmind.symmetric.web.AbstractCompressionUriHandler.handle(AbstractCompressionUriHandler.java:84)
    at org.jumpmind.symmetric.web.SymmetricServlet.service(SymmetricServlet.java:114)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.jumpmind.exception.IoException: java.io.IOException: Stale file handle
    at org.jumpmind.symmetric.io.data.writer.StagingDataWriter.print(StagingDataWriter.java:122)
    at org.jumpmind.symmetric.io.data.writer.AbstractProtocolDataWriter.println(AbstractProtocolDataWriter.java:253)
    at org.jumpmind.symmetric.io.data.writer.AbstractProtocolDataWriter.write(AbstractProtocolDataWriter.java:161)
    at org.jumpmind.symmetric.io.data.writer.NestedDataWriter.write(NestedDataWriter.java:64)
    at org.jumpmind.symmetric.model.ProcessInfoDataWriter.write(ProcessInfoDataWriter.java:65)
    at org.jumpmind.symmetric.io.data.writer.NestedDataWriter.write(NestedDataWriter.java:64)
    at org.jumpmind.symmetric.io.data.writer.TransformWriter.write(TransformWriter.java:207)
    at org.jumpmind.symmetric.io.data.DataProcessor.forEachDataInTable(DataProcessor.java:200)
    at org.jumpmind.symmetric.io.data.DataProcessor.forEachTableInBatch(DataProcessor.java:170)
    at org.jumpmind.symmetric.io.data.DataProcessor.process(DataProcessor.java:116)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extractOutgoingBatch(DataExtractorService.java:897)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extractBatch(DataExtractorService.java:774)
    at org.jumpmind.symmetric.service.impl.DataExtractorService$1.call(DataExtractorService.java:604)
    at org.jumpmind.symmetric.service.impl.DataExtractorService$1.call(DataExtractorService.java:602)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more
Caused by: java.io.IOException: Stale file handle
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:326)
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
    at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:282)
    at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)
    at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)
    at java.io.BufferedWriter.write(BufferedWriter.java:188)
    at org.jumpmind.symmetric.io.stage.ThresholdFileWriter.write(ThresholdFileWriter.java:87)
    at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)
    at java.io.BufferedWriter.write(BufferedWriter.java:230)
    at java.io.Writer.write(Writer.java:157)
    at java.io.Writer.append(Writer.java:269)
    at org.jumpmind.symmetric.io.data.writer.StagingDataWriter.print(StagingDataWriter.java:119)
    ... 17 more


2017-10-13 11:40:40,796 ERROR [server] [DataExtractorService] [qtp1381233299-14] Failed to extract batch client1-116
java.lang.IllegalStateException: There is no content to read. Memory buffer was empty and /Users/userid/tmp/shared-staging/staging/server/outgoing/common/0000000116.create was not found.
    at org.jumpmind.symmetric.io.stage.StagedResource.getReader(StagedResource.java:195)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.transferFromStaging(DataExtractorService.java:1144)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.sendOutgoingBatch(DataExtractorService.java:1105)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:652)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:539)
    at org.jumpmind.symmetric.web.PullUriHandler.pull(PullUriHandler.java:130)
    at org.jumpmind.symmetric.web.PullUriHandler.handleWithCompression(PullUriHandler.java:100)
    at org.jumpmind.symmetric.web.AbstractCompressionUriHandler.handle(AbstractCompressionUriHandler.java:77)
    at org.jumpmind.symmetric.web.SymmetricServlet.service(SymmetricServlet.java:114)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:62)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)



2017-10-13 11:57:02,758 ERROR [server] [DataExtractorService] [qtp89832223-15] Failed to extract batch client3-143
java.lang.IllegalStateException: Could not find the staged resource for batch client3-143
    at org.jumpmind.symmetric.service.impl.DataExtractorService.sendOutgoingBatch(DataExtractorService.java:1128)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:652)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:539)
    at org.jumpmind.symmetric.web.PullUriHandler.pull(PullUriHandler.java:130)
    at org.jumpmind.symmetric.web.PullUriHandler.handleWithCompression(PullUriHandler.java:100)
    at org.jumpmind.symmetric.web.AbstractCompressionUriHandler.handle(AbstractCompressionUriHandler.java:77)
    at org.jumpmind.symmetric.web.SymmetricServlet.service(SymmetricServlet.java:114)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:62)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)



[server] - DataExtractorService - Failed to extract batch client5-140
java.lang.RuntimeException: org.jumpmind.exception.IoException: java.io.IOException: Stream closed
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:669)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:539)
    at org.jumpmind.symmetric.web.PullUriHandler.pull(PullUriHandler.java:130)
    at org.jumpmind.symmetric.web.PullUriHandler.handleWithCompression(PullUriHandler.java:100)
    at org.jumpmind.symmetric.web.AbstractCompressionUriHandler.handle(AbstractCompressionUriHandler.java:77)
    at org.jumpmind.symmetric.web.SymmetricServlet.service(SymmetricServlet.java:114)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:62)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.jumpmind.exception.IoException: java.io.IOException: Stream closed
    at org.jumpmind.symmetric.io.data.writer.StagingDataWriter.print(StagingDataWriter.java:126)
    at org.jumpmind.symmetric.io.data.writer.AbstractProtocolDataWriter.println(AbstractProtocolDataWriter.java:253)
    at org.jumpmind.symmetric.io.data.writer.AbstractProtocolDataWriter.start(AbstractProtocolDataWriter.java:96)
    at org.jumpmind.symmetric.io.data.writer.NestedDataWriter.start(NestedDataWriter.java:56)
    at org.jumpmind.symmetric.model.ProcessInfoDataWriter.start(ProcessInfoDataWriter.java:51)
    at org.jumpmind.symmetric.io.data.writer.NestedDataWriter.start(NestedDataWriter.java:56)
    at org.jumpmind.symmetric.io.data.writer.TransformWriter.start(TransformWriter.java:97)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.cleanupIgnoredBatch(DataExtractorService.java:1019)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extractOutgoingBatch(DataExtractorService.java:866)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extractBatch(DataExtractorService.java:779)
    at org.jumpmind.symmetric.service.impl.DataExtractorService$1.call(DataExtractorService.java:609)
    at org.jumpmind.symmetric.service.impl.DataExtractorService$1.call(DataExtractorService.java:607)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    ... 1 more
Caused by: java.io.IOException: Stream closed
    at java.io.BufferedWriter.ensureOpen(BufferedWriter.java:116)
    at java.io.BufferedWriter.write(BufferedWriter.java:221)
    at java.io.Writer.write(Writer.java:157)
    at java.io.Writer.append(Writer.java:269)
    at org.jumpmind.symmetric.io.data.writer.StagingDataWriter.print(StagingDataWriter.java:123)
    ... 15 more


2017-10-13 11:57:02,758 ERROR [server] [DataExtractorService] [qtp89832223-15] Failed to extract batch client3-143
java.lang.IllegalStateException: Could not find the staged resource for batch client3-143
    at org.jumpmind.symmetric.service.impl.DataExtractorService.sendOutgoingBatch(DataExtractorService.java:1128)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:652)
    at org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java:539)
    at org.jumpmind.symmetric.web.PullUriHandler.pull(PullUriHandler.java:130)
    at org.jumpmind.symmetric.web.PullUriHandler.handleWithCompression(PullUriHandler.java:100)
    at org.jumpmind.symmetric.web.AbstractCompressionUriHandler.handle(AbstractCompressionUriHandler.java:77)
    at org.jumpmind.symmetric.web.SymmetricServlet.service(SymmetricServlet.java:114)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:62)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:499)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:745)
Steps To ReproduceThis was reproduced in dev by pointed 2 SymmetricDS servers at the same MySQL database and the same staging location on the HD (a valid, 2 server cluster). Then the following script was used and an error was observed the majority of the time when running this script:

# start script
rm -rf /Users/userid/tmp/shared-staging/staging/server/outgoing/common/*

# 6 nodes hitting server1.
curl 'http://localhost:31415/sync/server/pull?nodeId=client1&securityToken=secret' &
curl 'http://localhost:31415/sync/server/pull?nodeId=client2&securityToken=secret' &
curl 'http://localhost:31415/sync/server/pull?nodeId=client3&securityToken=secret' &
curl 'http://localhost:31415/sync/server/pull?nodeId=client4&securityToken=secret' &
curl 'http://localhost:31415/sync/server/pull?nodeId=client5&securityToken=secret' &
curl 'http://localhost:31415/sync/server/pull?nodeId=client6&securityToken=secret' &

# 6 nodes hitting server2.
curl 'http://localhost:31416/sync/server/pull?nodeId=client1&securityToken=secret' &
curl 'http://localhost:31416/sync/server/pull?nodeId=client2&securityToken=secret' &
curl 'http://localhost:31416/sync/server/pull?nodeId=client3&securityToken=secret' &
curl 'http://localhost:31416/sync/server/pull?nodeId=client4&securityToken=secret' &
curl 'http://localhost:31416/sync/server/pull?nodeId=client5&securityToken=secret' &
curl 'http://localhost:31416/sync/server/pull?nodeId=client6&securityToken=secret' &
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Related Changesets

SymmetricDS: 3.8 50da75ce

2017-10-17 11:04:13

mmichalek

Details Diff
0003282: Common batch extracts may fail when a cluster is using a shared
staging area

0003282
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java Diff File
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/StagingDataWriter.java Diff File
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/IStagingManager.java Diff File
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagedResource.java Diff File
add - symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagingFileLock.java Diff File
mod - symmetric-io/src/main/java/org/jumpmind/symmetric/io/stage/StagingManager.java Diff File

SymmetricDS: 3.8 8d59af6c

2017-11-15 15:24:43

chenson42

Details Diff
0003282: Common batch extracts may fail when a cluster is using a shared
staging area

0003282
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java Diff File

Issue History

Date Modified Username Field Change
2017-10-17 09:29 mmichalek New Issue
2017-10-17 09:29 mmichalek Status new => assigned
2017-10-17 09:29 mmichalek Assigned To => mmichalek
2017-10-17 09:29 mmichalek Project SymmetricDS Pro => SymmetricDS
2017-10-17 11:05 mmichalek Status assigned => resolved
2017-10-17 11:05 mmichalek Resolution open => fixed
2017-10-17 11:05 mmichalek Fixed in Version => 3.8.31
2017-10-17 12:00 mmichalek Changeset attached => SymmetricDS 3.8 50da75ce
2017-11-06 08:13 chenson Status resolved => closed
2017-11-15 16:00 chenson42 Changeset attached => SymmetricDS 3.8 8d59af6c