2881099 / FreeRedis

🦄 FreeRedis is .NET40+ redis client. supports cluster, sentinel, master-slave, pub-sub, lua, pipeline, transaction, streams, redisearch, client-side-caching, and pooling.
MIT License
925 stars 166 forks source link

feat(LockController): 增加HandleLostToken #212

Closed izanhzh closed 5 days ago

izanhzh commented 5 days ago

LockController的Refresh方法,当网络异常等原因无法连接到Redis服务器时会触发异常,虽然概率很小,但是我实际项目中的确遇到过,由于 _autoDelayTimer 这个线程的异常没有地方捕捉处理,从而导致整个应用程序崩溃了。

我增加上了try/catch处理,同时参照DistributedLock的Detecting handle loss设计,增加了HandleLostToken,用于当Refresh方法无法执行时,_autoDelayTimer 也被释放了,应用程序可以获知这个信息,及时做出一些应对的业务逻辑操作