View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006928 | SymmetricDS | Bug | public | 2025-06-09 17:49 | 2025-06-20 20:48 |
Reporter | pbelov | Assigned To | pbelov | ||
Priority | normal | ||||
Status | closed | Resolution | fixed | ||
Product Version | 3.15.0 | ||||
Target Version | 3.15.18 | Fixed in Version | 3.15.18 | ||
Summary | 0006928: Guard against nulll FileModifiedTime in FileSyncService.acknowledgeFiles | ||||
Description | Whenever user manually injects a new record into sym_file_snapshot and does not specify FILE_MODIFIED_TIME, the acknowledgeFiles method throws a java.lang.NumberFormatException: Cannot parse null string This results in a failed ACK call and a database connection leak. | ||||
Steps To Reproduce | * Set up file sync * Create a new file test2.csv in the source folder. * Manually inject a new record into sym_file_snapshot - without FILE_MODIFIED_TIME INSERT INTO lab50pg17central.sym_file_snapshot (trigger_id, router_id, relative_dir, file_name, channel_id, reload_channel_id, last_event_type, last_update_time, last_update_by, create_time) VALUES ('lab50test1', 'server waits for pull from client', '.', 'test2.csv', 'filesync', 'filesync_reload', 'C', now(), null, now()); * Observe test2.csv file delivered to the target successfully. * Observe acknowledgement call back to the source node failing with exception: 2025-06-09 10:49:46,686 ERROR [server-lab50pg17central] [SymmetricServlet] [qtp1494382097-57] Error while processing POST request for node: lab50pg17store at 127.0.0.1 with path: /server-lab50pg17central/ack StackTraceKey.init [NumberFormatException:1438599195] java.lang.NumberFormatException: Cannot parse null string at java.base/java.lang.Long.parseLong(Long.java:674) at java.base/java.lang.Long.parseLong(Long.java:836) at org.jumpmind.symmetric.service.impl.FileSyncService.acknowledgeFiles(FileSyncService.java:802) at org.jumpmind.symmetric.service.impl.AcknowledgeService.ack(AcknowledgeService.java:215) at org.jumpmind.symmetric.web.AckUriHandler.handle(AckUriHandler.java:74) at org.jumpmind.symmetric.web.SymmetricServlet.service(SymmetricServlet.java:101) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665) at org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:170) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:60) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1580) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1381) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1553) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1303) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) at org.eclipse.jetty.server.Server.handle(Server.java:563) at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) at java.base/java.lang.Thread.run(Thread.java:840) | ||||
Tags | No tags attached. | ||||
SymmetricDS: 3.15 93c9557a 2025-06-10 15:48:24 Committer: GitHub Details Diff |
0006928: Guard against null value for FileModifiedTime (#294) 0006928: Guard against null value for FileModifiedTime |
Affected Issues 0006928 |
|
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/FileSyncService.java | Diff File | ||
SymmetricDS: 3.16 d50c041b 2025-06-10 15:48:24 Details Diff |
0006928: Guard against null value for FileModifiedTime (#294) 0006928: Guard against null value for FileModifiedTime |
Affected Issues 0006928 |
|
mod - symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/FileSyncService.java | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2025-06-09 17:49 | pbelov | New Issue | |
2025-06-09 17:49 | pbelov | Status | new => assigned |
2025-06-09 17:49 | pbelov | Assigned To | => pbelov |
2025-06-09 19:44 | pbelov | Status | assigned => confirmed |
2025-06-10 15:48 | pbelov | Status | confirmed => resolved |
2025-06-10 15:48 | pbelov | Resolution | open => fixed |
2025-06-10 15:48 | pbelov | Fixed in Version | => 3.16.4 |
2025-06-10 16:00 | pbelov | Changeset attached | => SymmetricDS 3.15 93c9557a |
2025-06-10 18:30 | pbelov | Fixed in Version | 3.16.4 => 3.15.18 |
2025-06-10 19:00 | pbelov | Changeset attached | => SymmetricDS 3.16 d50c041b |
2025-06-20 20:48 | pbelov | Note Added: 0003125 | |
2025-06-20 20:48 | pbelov | Status | resolved => closed |