View Issue Details

IDProjectCategoryView StatusLast Update
0006928SymmetricDSBugpublic2025-06-20 20:48
Reporterpbelov Assigned Topbelov  
Prioritynormal 
Status closedResolutionfixed 
Product Version3.15.0 
Target Version3.15.18Fixed in Version3.15.18 
Summary0006928: Guard against nulll FileModifiedTime in FileSyncService.acknowledgeFiles
DescriptionWhenever 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)
TagsNo tags attached.

Activities

pbelov

2025-06-20 20:48

manager   ~0003125

Included in the 3.15.18 release

Related Changesets

SymmetricDS: 3.15 93c9557a

2025-06-10 15:48:24

pbelov


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

pbelov

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

Issue History

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