fix: harden message seq allocation against stale redis replicas
- use sentinel failover client for group message runtime when sentinel_master_name/sentinel_addrs are configured, so seq counter reads never hit a stale replica after failover - re-seed missing redis seq counter from DB topic seqid instead of trusting the caller in-memory baseline - on unique-key conflict during async persist, re-allocate seq from DB latest, bump redis counter and fix the idempotency record so resends with the same client mid return the final seq - add uk(topic, seqid) unique keys for im_messages in tenant DDL
This commit is contained in:
@@ -1109,7 +1109,8 @@ CREATE TABLE IF NOT EXISTS `im_messages` (
|
||||
`head` json DEFAULT NULL,
|
||||
`content` json DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `messages_sender_client_mid` (`from`,`client_msg_id`)
|
||||
UNIQUE KEY `messages_sender_client_mid` (`from`,`client_msg_id`),
|
||||
UNIQUE KEY `uk_im_messages_topic_seq` (`topic`,`seqid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `im_monthly_reports` (
|
||||
|
||||
Reference in New Issue
Block a user