@@ -500,8 +500,13 @@ def task(self):
500500
501501 def session_updated (self , session_lifetime_ms ):
502502 """Capture broker-advertised session lifetime after each successful
503- auth round (initial and subsequent re-auths)."""
503+ auth round (initial and subsequent re-auths). Clamp negative values to 0,
504+ and require minimum non-zero lifetime of 1sec (1000)."""
504505 self .session_lifetime_ms = session_lifetime_ms or 0
506+ if self .session_lifetime_ms < 0 :
507+ self .session_lifetime_ms = 0
508+ elif 0 < self .session_lifetime_ms <= 1000 :
509+ self .session_lifetime_ms = 1000
505510 self .authenticated_at = time .monotonic ()
506511
507512 def schedule (self ):
@@ -513,7 +518,7 @@ def schedule(self):
513518 if not self ._conn .sasl_enabled or not self .session_lifetime_ms :
514519 return
515520 pct = random .uniform (0.85 , 0.95 )
516- delay = max ( 0.1 , ( self .session_lifetime_ms * pct ) / 1000 )
521+ delay = ( self .session_lifetime_ms * pct ) / 1000
517522 log .debug ('%s: Scheduling SASL re-authentication in %.3fs (session_lifetime_ms=%d)' ,
518523 self ._conn , delay , self .session_lifetime_ms )
519524 self ._task = self ._conn .net .call_later (delay , self ._run )
0 commit comments