Compare commits

..
Author SHA1 Message Date
renovate-bot 9afef46888 Add renovate.json 2026-09-29 11:06:01 +00:00
julienfastre adba75fd24 Add byUserId to message payload in worker for enhanced metadata
Build image and push it to registry / build (push) Successful in 1m25s
2026-05-20 22:41:46 +02:00
julienfastre 7c1d645447 Update dependencies in requirements.txt to latest versions
Build image and push it to registry / build (push) Successful in 1m23s
2026-05-20 16:00:48 +02:00
julienfastreandClaude Sonnet 4.6 dadf3d72e3 Fix infinite retry loop on signing errors in worker
Catch SigningError separately (logged at ERROR level) and fix the ack/nack
logic so failed messages are requeued once then discarded, instead of being
requeued indefinitely or lost. Remove the bare `raise e` that crashed the
worker after each error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 15:36:54 +02:00
3 changed files with 35 additions and 24 deletions

No files matched your search

+16 -16
View File
@@ -1,22 +1,22 @@
asn1crypto==1.5.1
certifi==2025.4.26
cffi==1.17.1
charset-normalizer==3.4.2
click==8.2.1
cryptography==45.0.3
idna==3.10
lxml==5.4.0
certifi==2026.5.20
cffi==2.0.0
charset-normalizer==3.4.7
click==8.4.0
cryptography==48.0.0
idna==3.15
lxml==6.1.1
oscrypto==1.3.0
pika==1.3.2
pika==1.4.0
pika-stubs==0.1.3
pycparser==2.22
pyHanko==0.29.0
pyhanko-certvalidator==0.27.0
pycparser==3.0
pyHanko==0.35.1
pyhanko-certvalidator==0.31.1
pypng==0.20220715.0
PyYAML==6.0.2
PyYAML==6.0.3
qrcode==8.2
requests==2.32.3
typing_extensions==4.14.0
requests==2.34.2
typing_extensions==4.15.0
tzlocal==5.3.1
uritools==5.0.0
urllib3==2.4.0
uritools==6.1.1
urllib3==2.7.0
+16 -8
View File
@@ -5,6 +5,7 @@ import os
import pika
import sign
from pyhanko.sign.general import SigningError
LOG_FORMAT = ('%(levelname) -10s %(asctime)s %(name) -30s %(funcName) '
'-35s %(lineno) -5d: %(message)s')
@@ -60,6 +61,7 @@ def on_message(channel, method_frame, header_frame, body):
channel.basic_publish(exchange=EXCHANGE_OUT,
body=json.dumps({'signatureId': body_content['signatureId'],
'signatureZoneIndex': body_content['signatureZoneIndex'],
'byUserId': body_content['byUserId'] if 'byUserId' in body_content else None,
'content': base64.b64encode(signed.read()).decode('utf-8')}),
properties=pika.BasicProperties(content_type='application/json',
delivery_mode=pika.DeliveryMode.Transient),
@@ -67,16 +69,22 @@ def on_message(channel, method_frame, header_frame, body):
LOGGER.debug("signed file resend to amqp")
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
except Exception as e:
LOGGER.warning(f"error encountered while signing: {e}")
except SigningError as e:
LOGGER.error(f"signing error for signatureId {body_content['signatureId']}: {e}", exc_info=True)
if method_frame.redelivered:
LOGGER.warning(
f"stopping handling this message, because the message is already redelivered, signatureId: {body_content['signatureId']}")
channel.basic_reject(delivery_tag=method_frame.delivery_tag, requeue=True)
LOGGER.error(f"message already redelivered, discarding signatureId: {body_content['signatureId']}")
channel.basic_reject(delivery_tag=method_frame.delivery_tag, requeue=False)
else:
LOGGER.warning(f"first try failed, signatureId: {body_content['signatureId']}")
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
raise e
LOGGER.warning(f"first try failed, requeueing for one retry, signatureId: {body_content['signatureId']}")
channel.basic_nack(delivery_tag=method_frame.delivery_tag, requeue=True)
except Exception as e:
LOGGER.warning(f"error encountered while signing, signatureId: {body_content['signatureId']}: {e}", exc_info=True)
if method_frame.redelivered:
LOGGER.warning(f"message already redelivered, discarding signatureId: {body_content['signatureId']}")
channel.basic_reject(delivery_tag=method_frame.delivery_tag, requeue=False)
else:
LOGGER.warning(f"first try failed, requeueing for one retry, signatureId: {body_content['signatureId']}")
channel.basic_nack(delivery_tag=method_frame.delivery_tag, requeue=True)
if __name__ == '__main__':
+3
View File
@@ -0,0 +1,3 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
}