[
https://issues.apache.org/jira/browse/SDAP-410?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17751774#comment-17751774
]
Riley Kuttruff commented on SDAP-410:
-------------------------------------
Recent work with RMQ has led me to 2 potential causes of this:
# Heartbeat frames from remote aren't being returned by client due to the
thread that owns the BlockingConnection being busy. Solvable by handling
received messages in a worker thread then waiting for it to complete, calling
the connection's sleep method while waiting.
# (Most likely) Message processing times are exceeding the default consumer
ACK timeout (30 minutes). Unfortunately, there's no easy (read: in code) fix
for this; it requires manually setting the value in /etc/rabbitmq/rabbitmq.conf
. The Bitnami image/chart provides no way to do this through environment
variables; it must be mounted to the container as a volume.
These were found while working with pika instead of aiopika.
> Granule Ingester fails on ack-ing RMQ message after pipeline completion
> -----------------------------------------------------------------------
>
> Key: SDAP-410
> URL: https://issues.apache.org/jira/browse/SDAP-410
> Project: Apache Science Data Analytics Platform
> Issue Type: Bug
> Components: granule-ingester
> Reporter: Riley Kuttruff
> Priority: Minor
>
> Seems to happen only when the pipeline runs for a very long time.
>
> Traceback:
>
> 2022-11-10 00:57:02,974 [ERROR] [__main__::197] Shutting down because of an
> unrecoverable error:
> 'NoneType' object has no attribute 'write'
> Traceback (most recent call last):
> File
> "/opt/conda/lib/python3.7/site-packages/sdap_granule_ingester-1.0.0_SNAPSHOT-py3.7.egg/granule_ingester/consumer/MessageConsumer.py",
> line 80, in _received_message
> await message.ack()
> File
> "/opt/conda/lib/python3.7/site-packages/aio_pika-6.7.1-py3.7.egg/aio_pika/message.py",
> line 582, in ack
> delivery_tag=self.delivery_tag, multiple=multiple,
> File
> "/opt/conda/lib/python3.7/site-packages/aiormq-3.3.1-py3.7.egg/aiormq/channel.py",
> line 436, in basic_ack
> self.writer.write(
> AttributeError: 'NoneType' object has no attribute 'write'
> During handling of the above exception, another exception occurred:
> Traceback (most recent call last):
> File "/sdap/granule_ingester/main.py", line 191, in main
> await consumer.start_consuming(args.max_threads)
> File
> "/opt/conda/lib/python3.7/site-packages/sdap_granule_ingester-1.0.0_SNAPSHOT-py3.7.egg/granule_ingester/consumer/MessageConsumer.py",
> line 113, in start_consuming
> raise e
> File
> "/opt/conda/lib/python3.7/site-packages/sdap_granule_ingester-1.0.0_SNAPSHOT-py3.7.egg/granule_ingester/consumer/MessageConsumer.py",
> line 105, in start_consuming
> pipeline_max_concurrency)
> File
> "/opt/conda/lib/python3.7/site-packages/sdap_granule_ingester-1.0.0_SNAPSHOT-py3.7.egg/granule_ingester/consumer/MessageConsumer.py",
> line 92, in _received_message
> await message.reject(requeue=True)
> File
> "/opt/conda/lib/python3.7/site-packages/aio_pika-6.7.1-py3.7.egg/aio_pika/message.py",
> line 611, in reject
> delivery_tag=self.delivery_tag, requeue=requeue,
> File
> "/opt/conda/lib/python3.7/site-packages/aiormq-3.3.1-py3.7.egg/aiormq/channel.py",
> line 468, in basic_reject
> self.writer.write(
> AttributeError: 'NoneType' object has no attribute 'write'
--
This message was sent by Atlassian Jira
(v8.20.10#820010)