Skip to content

Releases: TaskarCenterAtUW/TDEI-python-ms-core

v0.0.25

19 Mar 10:22
e517451

Choose a tag to compare

What's Changed

This fixes a locking/settlement issue in AzureTopic.subscribe by moving message settlement back onto the receiver-owned loop instead of settling from worker callback threads. It also tracks pending tasks and in-flight slots more explicitly so concurrency limits and max_receivable_messages remain accurate while messages are still processing.

Additional changes include lock-renew failure logging for better diagnostics on long-running jobs, new unit coverage for task settlement behavior, adding requirements.txt to the package manifest, and bumping the package version to 0.0.25.

Why This Fix Was Added

The previous flow settled messages from worker-thread callbacks while the receiver loop continued managing message intake. For long-running jobs, that creates a risk that receive, lock renewal, and complete/abandon operations fall out of sync, which can surface as lock-related failures or unreliable settlement behavior. The internal in-flight slot count also was not managed in a way that consistently reflected active work, so concurrency limits and bounded receives could become inaccurate under load. We added this fix to keep settlement in the receiver flow, make slot accounting deterministic, and improve diagnosis when lock renewal fails.

Impact

  • Improves reliability of message completion and abandon handling for long-running Azure Service Bus consumers.
  • Keeps in-flight concurrency tracking accurate so the subscriber does not over-receive while work is still running.
  • Preserves max_receivable_messages behavior more predictably during active processing.
  • Adds visibility into lock-renew failures through logging, which makes production issues easier to diagnose.
  • Reduces the chance of message-processing instability caused by receiver/worker thread coordination.
  • Fix Azure topic settlement flow for long-running messages by @sujata-m in #47
  • [Main] Fix Azure topic settlement flow for long-running messages by @sujata-m in #48
  • Updated package version by @sujata-m in #49
  • Develop to Main by @sujata-m in #50

Full Changelog: 0.0.24...0.0.25

v0.0.24

13 Mar 08:51
9feffa4

Choose a tag to compare

What's Changed

Full Changelog: 0.0.23...0.0.24

0.0.23

27 Nov 19:02
70b1174

Choose a tag to compare

What's Changed

Full Changelog: 0.0.22...0.0.23

0.0.22

26 Aug 04:50
776e8a9

Choose a tag to compare

What's Changed

Full Changelog: 0.0.21...0.0.22

0.0.21

12 Aug 09:49
060b529

Choose a tag to compare

What's Changed

New Features and Enhancements

  • Message Lock Renewal: Implemented a mechanism to automatically renew message locks during processing. This ensures that messages remain active and are not returned to the queue for reprocessing while they are being handled.
  • Concurrent Message Processing: Enhanced the system to process messages concurrently using a number of worker threads equal to the number of available CPU cores by default. Users can override this default by specifying the max_concurrent_messages parameter, for example, core.get_topic(topic_name=topic_name, max_concurrent_messages=10). This optimization leverages system resources for improved performance and throughput.
  • Completion Acknowledgement: Updated the processing flow to wait until message processing is fully completed before sending the acknowledgement of message completion. This change ensures reliable processing and accurate message handling.
  • Version Tracking: Introduced a version.py file to maintain and track the package version. This addition facilitates version control and package management.
  • Unit Test Updates: Updated unit test cases to cover the new features and enhancements, ensuring robust testing and quality assurance.
  • Documentation Update: Updated the README file to reflect the new features and enhancements, providing clearer guidance and information for users.

Full Changelog: 0.0.19...0.0.21

0.0.19

17 May 05:02
bbf79af

Choose a tag to compare

What's Changed

Full Changelog: 0.0.18...0.0.19

0.0.18

16 May 11:54
8f0e4bb

Choose a tag to compare

What's Changed

Full Changelog: 0.0.17...0.0.18

v0.0.17

10 Nov 09:25
61aa3b5

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.0.16...0.0.17

0.0.16

26 Apr 08:11
12eb01e

Choose a tag to compare

0.0.16

  • Removed extra logs

0.0.15

24 Apr 14:25
1b97072

Choose a tag to compare

0.0.15

This fixes the inconsistent listening behavior for the subscription of a topic from core.

  • Due to the usage of for message in receiver logic in the topic, it is unknown when the loop will end and the core will stop listening to the topic.
  • This is tried with various combinations and figured out that at probably 4 hours from launch, this happens. The root cause for this is the socket / connection timeout of the underlying amqp client which throws an exception when trying to iterate next message

Fix made:

  • The above for loop is kept in an infinite while loop which triggers the creation of the receiver and subsequent listening to the messages.
  • This was tested overnight with messages varying in the time differences (1h to 3h)
  • Specific method to look for the fix start_listening

Reference task:
302