Bridge API / Callback removed after a while

Hi folks!

I have the problem that once a callback has been added, it is deleted after a while for no apparent reason.
Or does the callback have to be set again every time after it has been fired?

Thanks in advance.

Update: I’ve been monitoring the behavior of the callbacks. And it seems to be removed sporadically for no apparent reason.

My workaround:

  1. After each callback, I check whether it is still set.
  2. I check every 10 seconds whether the callback still exists.
    If not, I’ll add it.

That’s not very satisfactory.

Am i alone with this problem?
What is causing the problem? Could it be a restart of the bridge? Or a BLE-Reconnect? A memory leak?

I have a clue:
It always seems to happen at the same time as an HTTP info request.

Here some logs:

{"timestamp": "2022-05-24T08:56:38+00:00", "type": "HTTP-Log"},
{"timestamp": "2022-05-24T08:56:11+00:00", "type": "HTTP-List"},
{"timestamp": "2022-05-24T08:55:43+00:00", "type": "HTTP-List"},
{"timestamp": "2022-05-24T08:55:43+00:00", "type": "HTTP-Info"},
{"timestamp": "2022-05-24T08:55:41+00:00", "type": "HTTP-List"},
{"timestamp": "2022-05-24T08:55:11+00:00", "type": "HTTP-List"},

Here my observer log:

24.5.2022, 10:55:27 { callbacks: array[1] }
24.5.2022, 10:56:03 { callbacks: array[0] }

My timezone: GMT+2 / MESZ

You can see the coincidence.

Hi Sebastian,

There is no automatic removal of callbacks implemented.
Can you please recheck if the callbacks are really gone (access the /callback/list endpoint directly via your browser) in that case or if your observer log is maybe showing an empty array due to an HTTP timeout or an HTTP error (e.g. 503)?

Also which firmware version is installed on that bridge?

best,
Marc

Hi Marc,

thanks for your support!

Can you please recheck if the callbacks are really gone (access the /callback/list endpoint directly via your browser) in that case or if your observer log is maybe showing an empty array due to an HTTP timeout or an HTTP error (e.g. 503)?

Already done this.
The HTTP return code is always 200. The observer is implemented in NodeRed and I can see the raw body of the call to /callback/list endpoint. It’s an empty JSON {“callbacks”:[]} if the callbacks are lost.

I’ve done further investigations and now I can say that I can’t identify any correlating event which could lead to this state. It happens just randomly. Sometimes once per day, sometimes 5 times an hour.

Is it possible to increase the log level / details?

Version of the bridge firmware is 2.12.0.

./Sebastian

Ok, thanks.
You mentioned the coincidence with the /info request. Did you check if the problem is gone if you do not call /info regularly?

Sorry for the late answer.
I’ve narrowed it down to some observations:

  1. Often there was the info endpoint called before the bridge loses it’s callbacks
  2. It happens sporadically

I’ve done these test cases in hope to get a safe repro case:

  • I polled the /callback/list endpoint in an 30s interval for 3 hours
    • Result: stable, no loss
  • I polled the /callback/list endpoint in an 30s interval and I polled the /info endpoint in an 17s interval for 3 hours
    • Result: unstable, sporadic loss

Further I tested over one week without calling the info endpoint. No loss.
As soon as I call the endpoint once, the problem occurs.

So I’m very confident that the info endpoint causes the problem. It looks like a memory leak or out of range problem.

Thanks for providing this update.
We’ll try to reproduce this on our end and I’ll come back to you.

@marc Any news on this issue? Has been a while and I found this conversation because I have the same problem .