spring-projects / spring-projects/spring-integration

Store the Plain Text Group Id instead or in addition to a UUID [INT-2675]

Open
#6,650 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

in: jdbc type: task
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.