#3740·hydra

断言可能会被重复使用且导致死锁

作者: Class-public创建于 2024年3月18日更新于 2026年7月30日
标签bug

1、Assertions 可以被重复使用。在大多数数据库中,CURRENT_TIMESTAMP 函数返回当前数据库系统时间,通常是基于操作系统所在的时区的本地时间,而不是 UTC 时间。 2、使用断言来换取令牌时,在并发条件下会出现死锁问题。数据库的事务隔离级别为读取提交。死锁信息: 2024-03-18 10:17:28 2163520 [Note] InnoDB: Transactions deadlock detected, dumping detailed information. 2024-03-18 10:17:28 2163520 [Note] InnoDB: *** (1) TRANSACTION: TRANSACTION 44843587, ACTIVE 0 sec updating or deleting MySQL tables in use 1, locked 1 LOCK WAIT 3 lock struct(s), heap size 1128, 2 row lock(s), undo log entries 1 MySQL thread id 2163522, OS thread handle 140058828142144, query id 18313939954 192.169.56.182 xxx Updating DELETE FROM hydra_oauth2_jti_blacklist WHERE nid = '5a91dfdb-c4e9-11ee-a7e2-5a07348f807e' AND expires_at < CURRENT_TIMESTAMP 2024-03-18 10:17:28 2163520 [Note] InnoDB: *** (1) WAITING FOR THIS LOCK TO BE GRANTED: RECORD LOCKS space id 903 page no 5 n bits 80 index hydra_oauth2_jti_blacklist_nid_fk_idx of table `hydra_v2`.`hydra_oauth2_jti_blacklist` trx id 44843587 lock_mode X locks rec but not gap waiting Record lock, heap no 7 PHYSICAL RECORD: n_fields 2; compact format; info bits 0 0: len 30; hex 35613931646664622d633465392d313165652d613765322d356130373334; asc 5a91dfdb-c4e9-11ee-a7e2-5a0734; (total 36 bytes); 1: len 30; hex 343865653031333365366632643331653363313930373035363563633362; asc 48ee0133e6f2d31e3c19070565cc3b; (total 64 bytes); 2024-03-18 10:17:28 2163520 [Note] InnoDB: *** (2) TRANSACTION: TRANSACTION 44843599, ACTIVE 0 sec starting index read MySQL tables in use 1, locked 1 4 lock struct(s), heap size 1128, 2 row lock(s) MySQL thread id 2163520, OS thread handle 140063380387392, query id 18313939978 192.169.56.182 xxx Updating DELETE FROM hydra_oauth2_jti_blacklist WHERE nid = '5a91dfdb-c4e9-11ee-a7e2-5a07348f807e' AND expires_at < CURRENT_TIMESTAMP 2024-03-18 10:17:28 2163520 [Note] InnoDB: *** (2) HOLDS THE LOCK(S): RECORD LOCKS space id 903 page no 5 n bits 80 index hydra_oauth2_jti_blacklist_nid_fk_idx of table `hydra_v2`.`hydra_oauth2_jti_blacklist` trx id 44843599 lock_mode X locks rec but not …