spring-projects / spring-projects/spring-integration
Store the Plain Text Group Id instead or in addition to a UUID [INT-2675]
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.6k
- Forks
- 1.2k
- Avg merge
- 17h 48m
- Merged PRs (30d)
- 62
Description
Gunnar Hillert opened INT-2675 and commented
When operating on the JDBCMessageStore lookups are made by providing the groupId, which calls getKey(Object input) which then calls
UUIDConverter.getUUID(input).toString()
The PointToPointChannelParser parses the MessageStore attribute (message-store) and initializes a MessageGroupQueue. When we initialize the MessageGroupQueue we provid the groupId via its contructor. The groupId is the concatenation of the string representation of the message-store attribute + ":" + channel name.
In the JDBC Message Store, we convert the group id from e.g. "jdbcMessageStore:inputChannel" to an UUID.
As users may need to investigate the tables, this may be cumbersome and s(he) may not have a clue what group key refers to the UUID value in the table.
A side question is how portable (between JVMs) is :
UUID.nameUUIDFromBytes(("jdbcMessageStore:inputChannel").getBytes("UTF-8"))
Ideally, we should probably store the clear text groupId in the tables, considering:
- this must not impact efficiency
- avoid table locking in concurrent access situations
Affects: 2.1.3
This issue is a sub-task of #6647
Issue Links:
-
#6735 Optimize AbstractCorrelatingMessageHandler Lock Keys
-
#6726 JDBC Message Store - Reaper Can Reap Released Group of Messages
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with JDBCMessageStore.getKey(Object), then trace how PointToPointChannelParser initializes MessageGroupQueue and supplies its groupId. Confirm how the JDBC tables currently represent the UUID and how related locking paths behave. Done means the plain-text groupId is available for table investigation without harming efficiency or concurrent access.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- databases
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100