microsoft / garnet

Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.
https://microsoft.github.io/garnet/
MIT License
10.4k stars 526 forks source link

Bug title #777

Closed slqd3781 closed 2 weeks ago

slqd3781 commented 2 weeks ago

Describe the bug

After using the publish subscribe feature, the Garnet service will encounter this exception

ProcessMessages threw an exception: System.Threading.LockRecursionException: The calling thread already holds the lock. at System.Threading.SpinLock.ContinueTryEnter(Int32 millisecondsTimeout, Boolean& lockTaken) at Garnet.server.RespServerSession.Publish(Byte& keyPtr, Int32 keyLength, Byte& valPtr, Int32 valLength, Byte& inputPtr, Int32 sid) at Garnet.server.SubscribeBroker`3.Broadcast(Byte[] key, Byte valPtr, Int32 valLength, Boolean ascii) at Garnet.server.RespServerSession.NetworkPUBLISH() at Garnet.server.RespServerSession.ProcessMessages() at Garnet.server.RespServerSession.TryConsumeMessages(Byte* reqBuffer, Int32 bytesReceived)

Steps to reproduce the bug

used StackExchange.Redis

Expected behavior

No response

Screenshots

No response

Release version

v1.0.35

IDE

No response

OS version

No response

Additional context

No response