Deconz Binding fails on startup but restarting gateway thing manually works

For a quite a long time already I am experiencing the issue that the deconz binding fails on OH startup which is kind of annoying because on every startup I have to manually start it. The gateway thing has the following error on startup

When stop the thing (press (||) button) and start it again it works right away!

Note that I have set the threads to the following in cd /etc/openhab/services/runtime.cfg

org.openhab.webclient:minThreadsShared = 10
org.openhab.webclient:maxThreadsShared = 40
org.openhab.webclient:minThreadsCustom = 10
org.openhab.webclient:maxThreadsCustom = 40

Here are the logs

2022-06-25 10:57:04.515 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@83d0a0{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.517 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ReservedThreadExecutor@7b6307{reserved=0/4,pending=0} requires 4 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.519 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@11ae0b8{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.521 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@1886660{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.523 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@15ca2a1{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.525 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@f29216{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.527 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@c9bcd0{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.528 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@a4740f{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.530 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@4f9810{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.532 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@33c36d{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.534 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@1ffc807{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.536 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@a0c4fb{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.538 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@895c67{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.540 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@fbc4f0{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.542 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@19d9b18{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.543 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@1600bcc{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.545 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@19a01a3{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.547 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@1188f64{FAILED} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

2022-06-25 10:57:04.549 [INFO ] [e.jetty.util.thread.ThreadPoolBudget] - ClientSelectorManager@d651bc{STARTING} requires 2 threads from QueuedThreadPool[OH-httpClient--deconz-000000000000]@1ca1ac0{STARTED,10<=17<=40,i=0,r=-1,q=0}[ReservedThreadExecutor@7b6307{reserved=0/4,pending=0}]

Does anyone have an idea why it does not automatically start but when starting/stopping it, it works?

other activities do make use of the pool during startup alread ?
What would be if you increase the max to 50 ? would that be sufficient ?
Do you run OH on a Pi or on other hardware with more CPUs/cores ?

I turned it up now to

org.openhab.webclient:minThreadsShared = 10
org.openhab.webclient:maxThreadsShared = 60
org.openhab.webclient:minThreadsCustom = 10
org.openhab.webclient:maxThreadsCustom = 60

and guess what, it works. I didn’t have the guts to just turned up again (I remember doing it a year ago to 40)

I just wonder

  • if we have a way to log who is using so many threads in my system?
  • if it is general not recommended to go that high?

btw, I have a RPI4