#1001639 RM: python-hbmqtt -- RoQA; broken; low popcon; unmaintained

#1001639#5
Date:
2021-12-13 14:38:57 UTC
From:
To:
Control: found 998912 0.9.6-1
Control: forwarded 998912 https://github.com/beerfactory/hbmqtt/issues/223

python3-hbmqtt can be used for connecting to a mqtt broker or for
running a mqtt broker. I guess that the former is more widespread. The
version of python3-hbmqtt cannot connect to a broker at all.

[ Reason ]

In python the way asyncio Lock objects can be used has changed. This
results in a traceback when the hbmqtt client attempts to acquire such a
Lock object. For full details, please refer to 998912.

[ Impact ]

Any attempt to connect to a mqtt broker using the hbmqtt client fails.
This renders hbmqtt mostly unusable. The fact that nobody noticed
suggests that few people use hbmqtt.

[ Tests ]

If the code had been tested, this would likely have been noticed
earlier. The version in unstable now has autopkgtests to cover for this,
but adding such tests in stable does not seem reasonable to me.

If you run a mqtt broker on localhost (e.g. mosquitto), the following
command can be used to test for the issue:

python3 -c 'from hbmqtt.client import MQTTClient as C; __import__("asyncio").get_event_loop().run_until_complete(C().connect("mqtt://localhost"))'

[ Risks ]

The proposed solution is minimally invasive. It changes precisely the
code that currently raises an exception in a relatively obvious way.

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]

In older versions of python, it was possible to do:

    with (yield from somelock): ...

That no longer works. The preferred method now is:

    async with somelock: ...

However hbmqtt does not yet use the async/await syntax. So the
contextmanager can be emulated:

    yield from somelock.acquire()
    try:
        ....
    finally:
        somelock.release

While this is verbose, it works in all relevant Python versions.

[ Upstreaming ]

While the proposed fix has not been upstreamed, it has been reported
upstream as https://github.com/beerfactory/hbmqtt/issues/223. The
preferred solution there is switching to the async/await syntax. As
such, upstreaming does not seem reasonable.

[ Hats ]

I am not a python-mqtt maintainer. I intend to NMU this fix. The issue
was fixed in unstable using a NMU by me.

Helmut

#1001639#10
Date:
2022-03-15 21:15:16 UTC
From:
To:
Control: tags -1 + confirmed

Please go ahead; sorry for the delay.

Regards,

Adam

#1001639#17
Date:
2022-04-29 05:29:09 UTC
From:
To:
Hi Adam,

In the mean time, hbmqtt has been deleted from unstable as unmaintained.
As such, I now prefer spending my time on migrating stuff away from
hbmqtt and propose removing the (dysfunctional) package from stable. The
sooner we get rid of it, the fewer people will try using something that
isn't sustainable. Do you concur?

If yes, can you directly turn this bug into an appropriate RM request?

Sorry for the delay.

Helmut

#1001639#22
Date:
2022-07-01 18:59:05 UTC
From:
To:
# BCC control@bugs
user release.debian.org@packages.debian.org
usertags 1001639 = rm
retitle 1001639 RM: python-hbmqtt -- RoQA; broken; low popcon; unmaintained
tags 1001639 -confirmed +pending
thanks

Let's do that then.

Regards,

Adam

#1001639#33
Date:
2022-07-09 08:22:01 UTC
From:
To:
We believe that the bug you reported is now fixed; the following
package(s) have been removed from stable:

python-hbmqtt |    0.9.6-1 | source
python3-hbmqtt |    0.9.6-1 | all
------------------- Reason ------------------- RoQA; broken; low popcon; unmaintained ---------------------------------------------- Note that the package(s) have simply been removed from the tag database and may (or may not) still be in the pool; this is not a bug. The package(s) will be physically removed automatically when no suite references them (and in the case of source, when no binary references it). Please also remember that the changes have been done on the master archive and will not propagate to any mirrors until the next dinstall run at the earliest. Packages are usually not removed from testing by hand. Testing tracks unstable and will automatically remove packages which were removed from unstable when removing them from testing causes no dependency problems. The release team can force a removal from testing if it is really needed, please contact them if this should be the case. Bugs which have been reported against this package are not automatically removed from the Bug Tracking System. Please check all open bugs and close them or re-assign them to another package if the removed package was superseded by another one. The version of this package that was in Debian prior to this removal can still be found using http://snapshot.debian.org/. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 1001639@bugs.debian.org. The full log for this bug can be viewed at https://bugs.debian.org/1001639 This message was generated automatically; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@ftp-master.debian.org. Debian distribution maintenance software pp. Archive Administrator (the ftpmaster behind the curtain)