drachtio / drachtio-siprec-recording-server

SIPREC recording server based on drachtio and rtpengine
MIT License
81 stars 31 forks source link

redis entries are not deleted #36

Open aks-zero opened 4 years ago

aks-zero commented 4 years ago

Hi, I use this application with Freeswitch. Entries created in the redis server are not deleted and stay forever even after the SIPREC call is terminated with BYE gracefully. It seems it's happening all the time. Will appreciate any help for this. Thanks in advance.

davehorton commented 4 years ago

The redis keys are inserted with an expiry of 10 seconds, here

Therefore, they should disappear after 10 seconds. Perhaps the latter set request is somehow eliminating this expires value. Not sure, I will have to look into it

davehorton commented 4 years ago

could you do a test for me?

Try changing this line

from

.set(sessionId, sdp)

to

.set(sessionId, sdp, 'KEEPTTL')

and see if that fixes it?

aks-zero commented 4 years ago

You are right. I never see any TTL on the key as if it wasn't never set (it always returns -1). As you mentioned, I think the latter SET request is discarding the expiry value. From the Redis documetation:

Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type. Any previous time to live associated with the key is discarded on successful SET operation.

Since the KEEPTTL is supported only in Redis >= 6.0, I couldn't test. Will try after upgrading Redis.

Alternatively, may be we can set the the expiry again during the second call using 'SET EX' option or 'SETEX' command.

davehorton commented 4 years ago

yes, you could just replicate the set ex command as used earlier. Try that -- if it works let me know. Feel free to make a PR

aks-zero commented 4 years ago

Yes, that worked. Thanks a lot.

127.0.0.1:6379> KEYS *
1) "2fb147ed-549f-4ecf-aae0-0f9444cf9bb0"
127.0.0.1:6379> 
127.0.0.1:6379> ttl 2fb147ed-549f-4ecf-aae0-0f9444cf9bb0
(integer) 3
127.0.0.1:6379> 
127.0.0.1:6379> ttl 2fb147ed-549f-4ecf-aae0-0f9444cf9bb0
(integer) 0
127.0.0.1:6379> 
127.0.0.1:6379> ttl 2fb147ed-549f-4ecf-aae0-0f9444cf9bb0
(integer) -2
127.0.0.1:6379> 
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379>