Skip to content
This repository was archived by the owner on Jul 8, 2022. It is now read-only.
This repository was archived by the owner on Jul 8, 2022. It is now read-only.

push_change_event() - events stop being issued after some time #444

@mkomel

Description

@mkomel

We've noticed a problem where the events from some of our device servers stop coming to the clients some time after startup.
By troubleshooting and testing we were able to create a minimalistic setup with which we can reliably reproduce the problem: simpledevice.zip

The zip file contains a simple device server and two types of clients (one is PyTango-based, the other written in c++ by using tango libraries.. we experience the same issue with both).
The device server contains a single DevULong attribute simplepushedvalue, which is actively being pushed from code via push_change_event(). The attribute is configured with set_event_abs_change("1") and set_change_event(true, true); (note that the result is the same if we use set_change_event(true, false); ).
The sample should be set up with 2 device server instances, each one with a single device:

  • device server instance simple1 => simple/test/1
  • device server instance simple2 => simple/test/2

After starting both device server instances, the client (or both clients) should be started, which will show the events as they come in.
Approximately after 8-9minutes (interestingly it is reliably after cca.8-9minutes), the events from one of the device servers will stop coming to the client (at least this is how we experience the issue).
It's interesting to note that if the affected device server is then stopped, the client will correctly detect API_EventTimeout. And if that device server is then restarted, the events will again correctly start to arrive to the client (but then again, after cca.8-9 minutes the problem reappears, although not necessarily on the same device server).

We are using Tango 9.2.5, omniorb 4.1.6, zmq 4.2.1 (all Ubuntu apt packages) on Ubuntu 17.10.

To summarize, we can reproduce the issue with broken events if:

  • client subscribes to an attribute which is not polled, but rather manually pushed from code
  • client subscribes on at least two devices from two separate device server instances (if only one device server instance hosts both devices, we do not observe this problem)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions