Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.0.7, 3.1.4
-
None
-
Unknown
Description
This issue affets WS-RM feature used with RMStore.
When the source sequence is closed by an out-of-band close message (sending CloseSequence in WS-RM 1.1 or sending an empty LastMessage in WS-RM 1.0), the sequence status in the RMStore is not updated. As a result, when the endpoint is shutdown and restarted, it will find the old sequence which was actually closed and use that sequence to send new messages. This may lead to message loss at the server under WS-RM 1.0 or to a permanent error under WS-RM 1.1.
More precisely, this issue can happen when the following conditions hold.
1. the sequence is closed either upon the shutdown of the WS-RM endpoint (e.g., when its terminateOnShutdown is set to true) or when the closeSequence operation is invoked by other means (e.g., over JMX console)
2. there is at least one unacknowledged message still stored in the sequence
3. a persistent storage is used
Although the underlining issue itself also existed in CXF 2.7.x, because the default value of termninateOnShutdown property in CXF 3.0 was changed [1] from false to true, this issue can be observed when migrating scenarios from CXF 2.7.x to CXF 3.x.x.
[1]
https://github.com/apache/cxf/commit/98d04f03af91e51e3e700f6ddb1c5fb91af07495