You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by "fanpipi (via GitHub)" <gi...@apache.org> on 2026/02/04 02:58:44 UTC
[I] [BUG] GsonUtils TimestampTypeAdapter uses non-thread-safe SimpleDateFormat causing concurrent serialization exceptions [shenyu]
fanpipi opened a new issue, #6286:
URL: https://github.com/apache/shenyu/issues/6286
### Is there an existing issue for this?
- [x] I have searched the existing issues
### Current Behavior
GsonUtils中TimestampTypeAdapter使用非线程安全的SimpleDateFormat导致并发序列化异常。
When using GsonUtils for concurrent serialization operations involving classes with Timestamp fields, exceptions like the following may occur:
在使用 GsonUtils 进行并发序列化操作时,如果涉及包含 Timestamp 类型的类,可能会抛出类似以下异常:
`java.lang.NumberFormatException: For input string: "502.E5022E2"
`
`java.lang.NumberFormatException: multiple points
`
### Expected Behavior
After investigation, the root cause was found to be the use of the non-thread-safe SimpleDateFormat in GsonUtils.TimestampTypeAdapter. In high-concurrency scenarios, multiple threads accessing and modifying the same SimpleDateFormat instance can lead to race conditions, resulting in the above exceptions.
Suggested Fix:
1. Replace SimpleDateFormat with a thread-safe alternative, such as:
- Using DateTimeFormatter (recommended)
- Or creating a new SimpleDateFormat instance each time (poor performance, not recommended)
2. Update the implementation of TimestampTypeAdapter to ensure thread safety.
I would like to contribute a fix for this issue and submit a PR. Please confirm if this approach is acceptable. Thank you!
### Steps To Reproduce
RUN
```jsx
public` static void main(String[] args) {
String source = "{\"groupType\":\"DISCOVER_UPSTREAM\",\"eventType\":\"UPDATE\",\"data\":[{\"selectorId\":\"2013139628408594432\",\"pluginName\":\"divide\",\"selectorName\":\"test\",\"upstreamDataList\":[{\"id\":\"2018848401582067712\",\"dateCreated\":\"2026-02-04 00:45:41\",\"dateUpdated\":\"2026-02-04 00:45:41\",\"discoveryHandlerId\":\"2013139629532667904\",\"protocol\":\"http://\",\"url\":\"127.0.0.1:8080\",\"status\":0,\"weight\":1,\"namespaceId\":\"649330b6-c2d7-4edc-be8e-8a54df9eb385\"}],\"namespaceId\":\"649330b6-c2d7-4edc-be8e-8a54df9eb385\"}]}";
WebsocketData<?> websocketData = GsonUtils.getInstance().fromJson(source, WebsocketData.class);
String json = GsonUtils.getInstance().toJson(websocketData.getData());
System.out.println(json);
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int i = 0; i < 100; i++) {
final int taskId = i;
executorService.submit(() -> {
try {
final List<DiscoverySyncData> discoverySyncData = GsonUtils.getInstance().fromList(json, DiscoverySyncData.class);
System.out.println("Task " + taskId + ": " + discoverySyncData);
} catch (Exception e) {
// 打印异常日志
System.out.println("Task failed with exception: " + e);
}
});
}
executorService.shutdown();
}
```
### Environment
```markdown
ShenYu version(s): master
```
### Debug logs
_No response_
### Anything else?
_No response_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@shenyu.apache.org.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] [BUG] GsonUtils TimestampTypeAdapter uses non-thread-safe SimpleDateFormat causing concurrent serialization exceptions [shenyu]
Posted by "Aias00 (via GitHub)" <gi...@apache.org>.
Aias00 closed issue #6286: [BUG] GsonUtils TimestampTypeAdapter uses non-thread-safe SimpleDateFormat causing concurrent serialization exceptions
URL: https://github.com/apache/shenyu/issues/6286
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@shenyu.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [I] [BUG] GsonUtils TimestampTypeAdapter uses non-thread-safe SimpleDateFormat causing concurrent serialization exceptions [shenyu]
Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on issue #6286:
URL: https://github.com/apache/shenyu/issues/6286#issuecomment-3844958041
👋 Hello @yuluo-yx
A new issue has been opened by @fanpipi:
- **Title**: [BUG] GsonUtils TimestampTypeAdapter uses non-thread-safe SimpleDateFormat causing concurrent serialization exceptions
- **Link**: https://github.com/apache/shenyu/issues/6286
Please review when you have time. Thank you! 🙏
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@shenyu.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org