Bug #105131 Resend a message on a released subscription
Submitted: 5 Oct 2021 10:33 Modified: 8 Oct 2021 15:29
Reporter: Mikael Ronström Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S3 (Non-critical)
Version:8.0.26 OS:Any
Assigned to: CPU Architecture:Any

[5 Oct 2021 10:33] Mikael Ronström
Description:
In Suma.cpp events can be stored for later sending to
subscribing API nodes. If a node fails during the process
of sending we will resend from a bucket at times.

The bucket contains a subscription id, however this
subscription could be released before resend of the
bucket or it could be released and the subscription id
reused.

There is no way of checking this in the current code.

How to repeat:
No known way of reproducing in NDB.
Requires moving the Subscription from ArrayPool to TransientPool.
After that some autotest tests starts failing.

Suggested fix:
Make Subscription record unique by adding an auto increment value
to the Subscription. Add this also to the buffer from where resend
happens.

This makes it possible to detect that the buffer belongs to a
subscription that has been released.
[8 Oct 2021 15:29] MySQL Verification Team
Thanks Mikael,

All best
Bogdan