zenoh-python icon indicating copy to clipboard operation
zenoh-python copied to clipboard

[Bug] AdvancedSubscriber does not garbage collect on session.close()

Open jeffective opened this issue 2 months ago • 1 comments

Describe the bug

This script hangs:


import zenoh
from zenoh.ext import declare_advanced_subscriber

class ManagedSession:

    def __init__(self):
        pass

    def __enter__(self):
        self.session = zenoh.open(config=zenoh.Config())
        self.subscriber = declare_advanced_subscriber(self.session, "test", self.sample_callback)
        return self
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        # workaround is to call 
        # self.subscriber.undeclare()
        self.session.close()
    
    def sample_callback(self, sample):
        pass 


with ManagedSession() as session:
    pass

This script does not hang:

import zenoh

class ManagedSession:

    def __init__(self):
        pass

    def __enter__(self):
        self.session = zenoh.open(config=zenoh.Config())
        self.subscriber = self.session.declare_subscriber("test", self.sample_callback)
        return self
    
    def __exit__(self, exc_type, exc_val, exc_tb):
        self.session.close()
    
    def sample_callback(self, sample):
        pass 


with ManagedSession() as session:
    pass

To reproduce

See code examples above.

System info

eclipse-zenoh version 1.6.2 on x86-64 linux

jeffective avatar Oct 30 '25 00:10 jeffective