Connecting to EdgeHub fails after several successful messages

OS and version used: Windows 11, 21H2 (OS Build 22000.493)
Python version: Python 3.10.2
pip version: pip 22.0.4
list of installed packages:

Package                    Version
-------------------------- ---------
altgraph                   0.17.2
applicationinsights        0.11.10
atomicwrites               1.4.0
attrs                      21.4.0
azure-iot-device           2.11.0
azure-iot-edge-runtime-ctl 1.0.0rc17
bcrypt                     3.2.0
cached-property            1.5.2
certifi                    2021.10.8
cffi                       1.15.0
chardet                    3.0.4
charset-normalizer         2.0.11
click                      8.0.3
colorama                   0.4.4
cryptography               36.0.1
decorator                  5.1.1
deprecation                2.1.0
docker                     2.6.0
docker-compose             1.24.0
docker-pycreds             0.4.0
dockerpty                  0.4.1
docopt                     0.6.2
future                     0.18.2
idna                       2.7
iniconfig                  1.1.1
iotedgehubdev              0.11.1
janus                      1.0.0
jsonpath-rw                1.4.0
jsonschema                 2.6.0
packaging                  21.3
paho-mqtt                  1.6.1
paramiko                   2.9.2
pefile                     2021.9.3
pip                        22.0.4
pluggy                     1.0.0
ply                        3.11
psutil                     5.9.0
py                         1.11.0
pycparser                  2.21
pyinstaller                4.9
pyinstaller-hooks-contrib  2022.2
PyNaCl                     1.5.0
pyOpenSSL                  21.0.0
pyparsing                  3.0.7
pypiwin32                  223
PySocks                    1.7.1
pytest                     7.0.1
python-dotenv              0.19.2
python-slugify             6.1.1
pywin32                    303
pywin32-ctypes             0.2.0
PyYAML                     4.2b4
requests                   2.27.1
requests-unixsocket        0.3.0
setuptools                 60.5.0
six                        1.16.0
text-unidecode             1.3
texttable                  0.9.1
tomli                      2.0.1
typing_extensions          4.0.1
urllib3                    1.26.8
websocket-client           0.59.0
wheel                      0.37.1

cloned repo: (https://github.com/Azure/azure-iot-sdk-python/blob/main/azure-iot-device/samples/simple_send_message.py)

Context

Azure IoT Hub
Azure IoT Edge device

Ubuntu 20.04.4 LTS

IoT Edge version 1.2.9

Symmetric Key Authentication

Installed certificates to enable communication with IoT device

Azure IoT device

Python on Windows

Symmetric Key Autenthication

Uses MQTT over WS

This is new issue, branching off from this one: https://github.com/Azure/azure-iot-sdk-python/issues/990#issuecomment-1112724888
Current behaviour
I'm using the sample here to simulate an IoT device on the windows machine, with only the connection string and logging setup changed:
https://github.com/Azure/azure-iot-sdk-python/blob/main/azure-iot-device/samples/simple_send_message.py
I can run the script and send a message successfully. I can do this several times (the number varies between 3 and 7 or 8 successful attempts). After that, the script cannot connect anymore.
What I'm also observing, but I'm not sure if it is the same issue:
I have another script that sends trivial messages through the same Edge Hub. It runs fine for several hours, but stops working without warning. I have modified it that it restarts on exceptions, and usually the messages can get through to the hub after several hours of downtime without.
I did setup a completely new edgeHub to see if it is an issue with the old Edge device, but the error also happens with the new one.
Expected behaviour
I can run the script successfully an unlimited number of time
Evidence
Python logs
Logfile of the device client with the last successful connect (ends at Client shutdown complete) and the subscequent failing connect attempt.

2022-05-03 08:59:20,223 [DEBUG] Using proactor: IocpProactor
2022-05-03 08:59:20,224 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:20,225 [DEBUG] Creating pipeline executor
2022-05-03 08:59:20,226 [DEBUG] Gateway Hostname Present. Setting Hostname to: [hidden hostname]
2022-05-03 08:59:20,226 [DEBUG] HTTPTransportStage(InitializePipelineOperation): got connection args
2022-05-03 08:59:20,226 [DEBUG] creating a SSL context
2022-05-03 08:59:20,240 [DEBUG] InitializePipelineOperation: completing without error
2022-05-03 08:59:20,240 [DEBUG] Starting <azure.iot.device.common.evented_callback.EventedCallback object at 0x000001A45D919600> in callback thread
2022-05-03 08:59:20,240 [DEBUG] Creating callback executor
2022-05-03 08:59:20,241 [DEBUG] Callback completed with result None
2022-05-03 08:59:20,241 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:20,241 [DEBUG] SasTokenStage: Scheduling automatic SAS Token renewal at epoch time:<PHONE_NUMBER>
2022-05-03 08:59:20,242 [DEBUG] Gateway Hostname Present. Setting Hostname to: [hidden hostname]
2022-05-03 08:59:20,242 [DEBUG] MQTTTransportStage(InitializePipelineOperation): got connection args
2022-05-03 08:59:20,242 [DEBUG] creating mqtt client
2022-05-03 08:59:20,242 [INFO] Creating client for connecting using MQTT over TCP
2022-05-03 08:59:20,242 [DEBUG] creating a SSL context
2022-05-03 08:59:20,243 [DEBUG] configuring SSL context with default certs
2022-05-03 08:59:20,251 [DEBUG] Created MQTT protocol client, assigned callbacks
2022-05-03 08:59:20,252 [DEBUG] InitializePipelineOperation: completing without error
2022-05-03 08:59:20,252 [DEBUG] Starting <azure.iot.device.common.evented_callback.EventedCallback object at 0x000001A45D91A4D0> in callback thread
2022-05-03 08:59:20,252 [DEBUG] Callback completed with result None
2022-05-03 08:59:20,252 [DEBUG] Creating new event loop - CLIENT_INTERNAL_LOOP
2022-05-03 08:59:20,252 [DEBUG] Using proactor: IocpProactor
2022-05-03 08:59:20,255 [INFO] Connecting to Hub...
2022-05-03 08:59:20,256 [DEBUG] Starting ConnectOperation on the pipeline
2022-05-03 08:59:20,256 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:20,256 [DEBUG] ReconnectStage(ConnectOperation): State changes DISCONNECTED -> CONNECTING. Sending op down
2022-05-03 08:59:20,256 [DEBUG] ConnectionLockStage(ConnectOperation): blocking
2022-05-03 08:59:20,256 [DEBUG] MQTTTransportStage(ConnectOperation): connecting
2022-05-03 08:59:20,256 [DEBUG] MQTTTransportStage(ConnectOperation): Starting watchdog
2022-05-03 08:59:20,257 [DEBUG] connecting to mqtt broker
2022-05-03 08:59:20,257 [INFO] Connect using port 8883 (TCP)
2022-05-03 08:59:20,347 [DEBUG] Sending CONNECT (u1, p1, wr0, wq0, wf0, c0, k60) client_id=b'python-test-device'
2022-05-03 08:59:20,347 [DEBUG] _mqtt_client.connect returned rc=0
2022-05-03 08:59:20,354 [DEBUG] Received CONNACK (0, 0)
2022-05-03 08:59:20,354 [INFO] connected with result code: 0
2022-05-03 08:59:20,354 [DEBUG] Starting _on_mqtt_connected in pipeline thread
2022-05-03 08:59:20,354 [INFO] _on_mqtt_connected called
2022-05-03 08:59:20,354 [DEBUG] ReconnectStage(ConnectedEvent): State changes CONNECTING -> CONNECTED. Connection established
2022-05-03 08:59:20,354 [DEBUG] PipelineRootStage: ConnectedEvent received. Calling on_connected_handler
2022-05-03 08:59:20,354 [DEBUG] Starting _on_connected in callback thread
2022-05-03 08:59:20,354 [DEBUG] MQTTTransportStage: completing connect op
2022-05-03 08:59:20,355 [INFO] Connection State - Connected
2022-05-03 08:59:20,355 [DEBUG] MQTTTransportStage(ConnectOperation): cancelling watchdog
2022-05-03 08:59:20,355 [DEBUG] ConnectOperation: completing without error
2022-05-03 08:59:20,355 [DEBUG] ConnectionLockStage(ConnectOperation): op succeeded.  Unblocking queue
2022-05-03 08:59:20,355 [DEBUG] ConnectionLockStage(ConnectOperation): unblocking and releasing queued ops.
2022-05-03 08:59:20,355 [DEBUG] ConnectionLockStage(ConnectOperation): processing 0 items in queue for error=None
2022-05-03 08:59:20,355 [DEBUG] Starting on_complete in callback thread
2022-05-03 08:59:20,356 [DEBUG] Callback completed with result None
2022-05-03 08:59:20,356 [INFO] Successfully connected to Hub
2022-05-03 08:59:20,356 [INFO] Sending message to Hub...
2022-05-03 08:59:20,357 [DEBUG] Starting SendD2CMessageOperation on the pipeline
2022-05-03 08:59:20,357 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:20,357 [DEBUG] SendD2CMessageOperation: creating worker op of type MQTTPublishOperation
2022-05-03 08:59:20,357 [DEBUG] MQTTTransportStage(MQTTPublishOperation): publishing on devices/python-test-device/messages/events/
2022-05-03 08:59:20,357 [INFO] publishing on devices/python-test-device/messages/events/
2022-05-03 08:59:20,358 [DEBUG] Sending PUBLISH (d0, q1, r0, m1), 'b'devices/python-test-device/messages/events/'', ... (36 bytes)
2022-05-03 08:59:20,358 [DEBUG] _mqtt_client.publish returned rc=0
2022-05-03 08:59:20,359 [DEBUG] Waiting for response on MID: 1
2022-05-03 08:59:20,364 [DEBUG] Received PUBACK (Mid: 1)
2022-05-03 08:59:20,364 [INFO] payload published for 1
2022-05-03 08:59:20,364 [DEBUG] Response received for recognized MID: 1 - triggering callback
2022-05-03 08:59:20,364 [DEBUG] Starting on_complete in pipeline thread
2022-05-03 08:59:20,364 [DEBUG] MQTTTransportStage(MQTTPublishOperation): PUBACK received. completing op.
2022-05-03 08:59:20,364 [DEBUG] MQTTPublishOperation: completing without error
2022-05-03 08:59:20,364 [DEBUG] SendD2CMessageOperation: Worker op (MQTTPublishOperation) has been completed
2022-05-03 08:59:20,364 [DEBUG] SendD2CMessageOperation: completing without error
2022-05-03 08:59:20,364 [DEBUG] Starting on_complete in callback thread
2022-05-03 08:59:20,365 [DEBUG] Callback completed with result None
2022-05-03 08:59:20,365 [INFO] Successfully sent message to Hub
2022-05-03 08:59:20,366 [INFO] Initiating client shutdown
2022-05-03 08:59:20,366 [INFO] Disconnecting from Hub...
2022-05-03 08:59:20,366 [DEBUG] Executing initial disconnect
2022-05-03 08:59:20,366 [DEBUG] Starting DisconnectOperation on the pipeline
2022-05-03 08:59:20,366 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:20,366 [DEBUG] ReconnectStage(DisconnectOperation): State changes CONNECTED -> DISCONNECTING. Sending op down.
2022-05-03 08:59:20,367 [DEBUG] ConnectionLockStage(DisconnectOperation): blocking
2022-05-03 08:59:20,367 [DEBUG] MQTTTransportStage(DisconnectOperation): disconnecting
2022-05-03 08:59:20,367 [INFO] disconnecting MQTT client
2022-05-03 08:59:20,367 [DEBUG] Sending DISCONNECT
2022-05-03 08:59:20,367 [INFO] disconnected with result code: 0
2022-05-03 08:59:20,367 [DEBUG] Starting _on_mqtt_disconnected in pipeline thread
2022-05-03 08:59:20,368 [DEBUG] _mqtt_client.disconnect returned rc=0
2022-05-03 08:59:20,368 [DEBUG] Cancelling all pending operations
2022-05-03 08:59:20,368 [INFO] MQTTTransportStage: _on_mqtt_disconnect called
2022-05-03 08:59:20,368 [DEBUG] ReconnectStage(DisconnectedEvent): State changes DISCONNECTING -> DISCONNECTED. Not attempting to reconnect (User-initiated disconnect)
2022-05-03 08:59:20,369 [DEBUG] PipelineRootStage: DisconnectedEvent received. Calling on_disconnected_handler
2022-05-03 08:59:20,369 [DEBUG] Starting _on_disconnected in callback thread
2022-05-03 08:59:20,369 [DEBUG] MQTTTransportStage: Expected disconnect - completing pending disconnect op
2022-05-03 08:59:20,369 [INFO] Connection State - Disconnected
2022-05-03 08:59:20,369 [DEBUG] DisconnectOperation: completing without error
2022-05-03 08:59:20,369 [INFO] Cleared all pending method requests due to disconnect
2022-05-03 08:59:20,369 [DEBUG] ConnectionLockStage(DisconnectOperation): op succeeded.  Unblocking queue
2022-05-03 08:59:20,370 [DEBUG] ConnectionLockStage(DisconnectOperation): unblocking and releasing queued ops.
2022-05-03 08:59:20,370 [DEBUG] ConnectionLockStage(DisconnectOperation): processing 0 items in queue for error=None
2022-05-03 08:59:20,370 [DEBUG] Starting on_complete in callback thread
2022-05-03 08:59:20,370 [DEBUG] Callback completed with result None
2022-05-03 08:59:20,370 [DEBUG] Successfully executed initial disconnect
2022-05-03 08:59:20,370 [DEBUG] Stopping handlers...
2022-05-03 08:59:20,370 [DEBUG] Successfully stopped handlers
2022-05-03 08:59:20,370 [DEBUG] Executing secondary disconnect...
2022-05-03 08:59:20,371 [DEBUG] Starting DisconnectOperation on the pipeline
2022-05-03 08:59:20,371 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:20,371 [DEBUG] ReconnectStage(DisconnectOperation): State is already DISCONNECTED. Sending op down
2022-05-03 08:59:20,371 [INFO] ConnectionLockStage(DisconnectOperation): Transport is already disconnected.  Completing.
2022-05-03 08:59:20,371 [DEBUG] DisconnectOperation: completing without error
2022-05-03 08:59:20,371 [DEBUG] Starting on_complete in callback thread
2022-05-03 08:59:20,371 [DEBUG] Callback completed with result None
2022-05-03 08:59:20,372 [DEBUG] Successfully executed secondary disconnect
2022-05-03 08:59:20,372 [INFO] Successfully disconnected from Hub
2022-05-03 08:59:20,372 [DEBUG] Beginning pipeline shutdown operation
2022-05-03 08:59:20,372 [DEBUG] Commencing shutdown of pipeline
2022-05-03 08:59:20,372 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:20,372 [DEBUG] Cancelling SAS Token update alarm
2022-05-03 08:59:20,373 [INFO] Forcing paho disconnect to prevent it from automatically reconnecting
2022-05-03 08:59:20,373 [DEBUG] Done forcing paho disconnect
2022-05-03 08:59:20,373 [DEBUG] Cancelling all pending operations
2022-05-03 08:59:20,373 [DEBUG] ShutdownPipelineOperation: completing without error
2022-05-03 08:59:20,373 [DEBUG] Starting on_complete in callback thread
2022-05-03 08:59:20,373 [DEBUG] Callback completed with result None
2022-05-03 08:59:20,374 [DEBUG] Completed pipeline shutdown operation
2022-05-03 08:59:20,374 [INFO] Client shutdown complete
2022-05-03 08:59:24,422 [DEBUG] Using proactor: IocpProactor
2022-05-03 08:59:24,422 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:24,422 [DEBUG] Creating pipeline executor
2022-05-03 08:59:24,422 [DEBUG] Gateway Hostname Present. Setting Hostname to: [hidden hostname]
2022-05-03 08:59:24,422 [DEBUG] HTTPTransportStage(InitializePipelineOperation): got connection args
2022-05-03 08:59:24,422 [DEBUG] creating a SSL context
2022-05-03 08:59:24,444 [DEBUG] InitializePipelineOperation: completing without error
2022-05-03 08:59:24,444 [DEBUG] Starting <azure.iot.device.common.evented_callback.EventedCallback object at 0x000001D662119600> in callback thread
2022-05-03 08:59:24,444 [DEBUG] Creating callback executor
2022-05-03 08:59:24,444 [DEBUG] Callback completed with result None
2022-05-03 08:59:24,445 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:24,445 [DEBUG] SasTokenStage: Scheduling automatic SAS Token renewal at epoch time:<PHONE_NUMBER>
2022-05-03 08:59:24,446 [DEBUG] Gateway Hostname Present. Setting Hostname to: [hidden hostname]
2022-05-03 08:59:24,446 [DEBUG] MQTTTransportStage(InitializePipelineOperation): got connection args
2022-05-03 08:59:24,446 [DEBUG] creating mqtt client
2022-05-03 08:59:24,446 [INFO] Creating client for connecting using MQTT over TCP
2022-05-03 08:59:24,446 [DEBUG] creating a SSL context
2022-05-03 08:59:24,446 [DEBUG] configuring SSL context with default certs
2022-05-03 08:59:24,454 [DEBUG] Created MQTT protocol client, assigned callbacks
2022-05-03 08:59:24,454 [DEBUG] InitializePipelineOperation: completing without error
2022-05-03 08:59:24,454 [DEBUG] Starting <azure.iot.device.common.evented_callback.EventedCallback object at 0x000001D66211A4D0> in callback thread
2022-05-03 08:59:24,454 [DEBUG] Callback completed with result None
2022-05-03 08:59:24,455 [DEBUG] Creating new event loop - CLIENT_INTERNAL_LOOP
2022-05-03 08:59:24,455 [DEBUG] Using proactor: IocpProactor
2022-05-03 08:59:24,457 [INFO] Connecting to Hub...
2022-05-03 08:59:24,458 [DEBUG] Starting ConnectOperation on the pipeline
2022-05-03 08:59:24,458 [DEBUG] Starting run_op in pipeline thread
2022-05-03 08:59:24,458 [DEBUG] ReconnectStage(ConnectOperation): State changes DISCONNECTED -> CONNECTING. Sending op down
2022-05-03 08:59:24,458 [DEBUG] ConnectionLockStage(ConnectOperation): blocking
2022-05-03 08:59:24,459 [DEBUG] MQTTTransportStage(ConnectOperation): connecting
2022-05-03 08:59:24,459 [DEBUG] MQTTTransportStage(ConnectOperation): Starting watchdog
2022-05-03 08:59:24,459 [DEBUG] connecting to mqtt broker
2022-05-03 08:59:24,459 [INFO] Connect using port 8883 (TCP)
2022-05-03 09:00:24,460 [DEBUG] Starting watchdog_function in pipeline thread
2022-05-03 09:00:24,476 [INFO] Forcing paho disconnect to prevent it from automatically reconnecting
2022-05-03 09:00:24,476 [DEBUG] Done forcing paho disconnect
2022-05-03 09:00:24,476 [INFO] transport.connect raised error
2022-05-03 09:00:24,479 [INFO] Traceback (most recent call last):
  File "C:\Users\pebneter\AppData\Local\Programs\Python\Python310\lib\site-packages\azure\iot\device\common\mqtt_transport.py", line 390, in connect
    rc = self._mqtt_client.connect(
  File "C:\Users\pebneter\AppData\Local\Programs\Python\Python310\lib\site-packages\paho\mqtt\client.py", line 914, in connect
    return self.reconnect()
  File "C:\Users\pebneter\AppData\Local\Programs\Python\Python310\lib\site-packages\paho\mqtt\client.py", line 1073, in reconnect
    sock.do_handshake()
  File "C:\Users\pebneter\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 1341, in do_handshake
    self._sslobj.do_handshake()
TimeoutError: _ssl.c:980: The handshake operation timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\pebneter\AppData\Local\Programs\Python\Python310\lib\site-packages\azure\iot\device\common\pipeline\pipeline_stages_mqtt.py", line 189, in _run_op
    self.transport.connect(password=password)
  File "C:\Users\pebneter\AppData\Local\Programs\Python\Python310\lib\site-packages\azure\iot\device\common\mqtt_transport.py", line 413, in connect
    raise exceptions.ConnectionFailedError() from e
azure.iot.device.common.transport_exceptions.ConnectionFailedError

2022-05-03 09:00:24,479 [DEBUG] MQTTTransportStage(ConnectOperation): cancelling watchdog
2022-05-03 09:00:24,479 [DEBUG] ConnectOperation: completing with error
2022-05-03 09:00:24,479 [DEBUG] ConnectionLockStage(ConnectOperation): op failed.  Unblocking queue with error:
2022-05-03 09:00:24,479 [DEBUG] ConnectionLockStage(ConnectOperation): unblocking and releasing queued ops.
2022-05-03 09:00:24,479 [DEBUG] ConnectionLockStage(ConnectOperation): processing 0 items in queue for error=
2022-05-03 09:00:24,479 [DEBUG] ReconnectStage(ConnectOperation): failed, state change CONNECTING -> DISCONNECTED
2022-05-03 09:00:24,479 [DEBUG] Starting on_complete in callback thread
2022-05-03 09:00:24,479 [DEBUG] Connection watchdog expired, but pending op is not the same op
2022-05-03 09:00:24,480 [INFO] Callback completed with error
2022-05-03 09:00:24,480 [INFO] ['azure.iot.device.common.transport_exceptions.ConnectionFailedError\n']

EdgeHub logs
It seems like the second attempt is not even showing up in these logs
<7> 2022-05-03 06:59:20.349 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.IDeviceScopeIdentitiesCache] - Getting service identity for python-test-device
<6> 2022-05-03 06:59:20.349 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.DeviceScopeAuthenticator] - Client python-test-device in device scope authenticated locally.
<7> 2022-05-03 06:59:20.349 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Authenticator] - Client python-test-device authentication successful
<6> 2022-05-03 06:59:20.350 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.DeviceIdentityProvider] - Successfully generated identity for clientId python-test-device and username iothubrag4.azure-devices.net/python-test-device/?api-version=2019-10-01&DeviceClientType=azure-iot-device-iothub-py%2F2.11.0%283.10.2%3BWindows%2010.0.22000%3BAMD64%29
<6> 2022-05-03 06:59:20.352 +00:00 [INF] [EdgeHub] - ClientAuthenticated, python-test-device, 0b2c609d
<6> 2022-05-03 06:59:20.357 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - New device connection for device python-test-device
<6> 2022-05-03 06:59:20.357 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.SubscriptionProcessor] - Client python-test-device connected to edgeHub, processing existing subscriptions.
<7> 2022-05-03 06:59:20.357 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Obtained cloud connection for device python-test-device
<7> 2022-05-03 06:59:20.357 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.EdgeHubConnection] - Updating device python-test-device connection status to Connected
<7> 2022-05-03 06:59:20.358 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Twin.StoringTwinManager] - Updating reported properties for connectivity-poc-edge-device-01/$edgeHub
<6> 2022-05-03 06:59:20.358 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.Device.DeviceMessageHandler] - Bind device proxy for device python-test-device
<6> 2022-05-03 06:59:20.358 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.MessagingServiceClient] - Binding message channel for device Id python-test-device
<7> 2022-05-03 06:59:20.359 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.MessageAddressConverter] - Message address devices/python-test-device/messages/events/ matches more than one topic. Picking first matching topic.
<7> 2022-05-03 06:59:20.359 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.MessagingServiceClient] - Processing message for device Id python-test-device
<7> 2022-05-03 06:59:20.359 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Routing.RoutingEdgeHub] - Received message from python-test-device
<7> 2022-05-03 06:59:20.360 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27220 with batch size 100.
<7> 2022-05-03 06:59:20.360 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 1. Next start offset = 27221.
<7> 2022-05-03 06:59:20.361 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 99.
<7> 2022-05-03 06:59:20.361 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 06:59:20.361 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Routing.CloudEndpoint] - Sending 1 message(s) upstream.
<7> 2022-05-03 06:59:20.361 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Routing.CloudEndpoint] - Sending 1 message(s) upstream, divided into 1 groups. Processing maximum 10 groups in parallel.
<7> 2022-05-03 06:59:20.361 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Obtained cloud connection for device python-test-device
<7> 2022-05-03 06:59:20.362 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] WRITE: PublishPacket[Type=PUBLISH, QualityOfService=AtLeastOnce, Duplicate=False, Retain=False], 36B
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|100000000| 54 68 69 73 20 69 73 20 61 20 6D 65 73 73 61 67 |This is a messag|
|100000010| 65 20 74 68 61 74 20 69 73 20 62 65 69 6E 67 20 |e that is being |
|100000020| 73 65 6E 74                                     |sent            |
+--------+-------------------------------------------------+----------------+
<7> 2022-05-03 06:59:20.362 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:20.362 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:20.362 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Routing.CloudEndpoint] - Finished processing messages to upstream
<6> 2022-05-03 06:59:20.367 +00:00 [INF] [EdgeHub] - Closing connection for device: python-test-device, ,
<6> 2022-05-03 06:59:20.368 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.MessagingServiceClient] - Disposing MessagingServiceClient for device Id python-test-device because of exception -
<6> 2022-05-03 06:59:20.368 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.DeviceProxy] - Setting device proxy inactive for device Id python-test-device
<6> 2022-05-03 06:59:20.368 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Removing device connection for device python-test-device with removeCloudConnection flag 'True'.
<7> 2022-05-03 06:59:20.368 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] WRITE: DisconnectPacket[Type=DISCONNECT, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:20.368 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Received connection status changed callback with connection status Disabled and reason Client_Close for python-test-device
<7> 2022-05-03 06:59:20.368 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:20.485 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:20.485 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:20.485 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:20.486 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 :> [::ffff:<IP_ADDRESS>]:8883] INACTIVE
<7> 2022-05-03 06:59:20.486 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 :> [::ffff:<IP_ADDRESS>]:8883] CLOSE
<7> 2022-05-03 06:59:20.486 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 :> [::ffff:<IP_ADDRESS>]:8883] UNREGISTERED
<7> 2022-05-03 06:59:20.489 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x5c8e98a1, [::ffff:<IP_ADDRESS>]:39778 :> [::ffff:<IP_ADDRESS>]:8883] HANDLER_REMOVED
<7> 2022-05-03 06:59:21.367 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Operation SendEventAsync failed for python-test-device
System.InvalidOperationException: Invalid transport state: Closed
   at Microsoft.Azure.Devices.Client.Transport.Mqtt.MqttTransportHandler.EnsureValidState(Boolean throwIfNotOpen)
   at Microsoft.Azure.Devices.Client.Transport.Mqtt.MqttTransportHandler.SendEventAsync(Message message, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.<>c__DisplayClass27_0.<<ExecuteWithErrorHandlingAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.ExecuteWithErrorHandlingAsync[T](Func`1 asyncOperation)
   at Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.<>c__DisplayClass15_0.<<SendEventAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.SendEventAsync(Message message, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Client.InternalClient.SendEventAsync(Message message)
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.<>c__DisplayClass30_0.<<InvokeFunc>b__0>d.MoveNext() in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 194
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.InvokeFunc[T](Func`1 func, String operation, Boolean useForConnectivityCheck) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 145
<7> 2022-05-03 06:59:21.377 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudProxy] - Error sending message for python-test-device in cloud proxy 26e74931-94f4-47cf-b0f6-f8a0d98bdb0d
System.InvalidOperationException: Invalid transport state: Closed
   at Microsoft.Azure.Devices.Client.Transport.Mqtt.MqttTransportHandler.EnsureValidState(Boolean throwIfNotOpen)
   at Microsoft.Azure.Devices.Client.Transport.Mqtt.MqttTransportHandler.SendEventAsync(Message message, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.<>c__DisplayClass27_0.<<ExecuteWithErrorHandlingAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.ExecuteWithErrorHandlingAsync[T](Func`1 asyncOperation)
   at Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.<>c__DisplayClass15_0.<<SendEventAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.SendEventAsync(Message message, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Client.InternalClient.SendEventAsync(Message message)
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.<>c__DisplayClass30_0.<<InvokeFunc>b__0>d.MoveNext() in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 194
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.InvokeFunc[T](Func`1 func, String operation, Boolean useForConnectivityCheck) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 145
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.InvokeFunc[T](Func`1 func, String operation, Boolean useForConnectivityCheck) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 181
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudProxy.SendMessageAsync(IMessage inputMessage) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/CloudProxy.cs:line 157
<6> 2022-05-03 06:59:21.379 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.Cloud.RetryingCloudProxy] - Retrying cloud proxy operation SendMessageAsync for python-test-device.
System.InvalidOperationException: Invalid transport state: Closed
   at Microsoft.Azure.Devices.Client.Transport.Mqtt.MqttTransportHandler.EnsureValidState(Boolean throwIfNotOpen)
   at Microsoft.Azure.Devices.Client.Transport.Mqtt.MqttTransportHandler.SendEventAsync(Message message, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.<>c__DisplayClass27_0.<<ExecuteWithErrorHandlingAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Client.Transport.ErrorDelegatingHandler.ExecuteWithErrorHandlingAsync[T](Func`1 asyncOperation)
   at Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.<>c__DisplayClass15_0.<<SendEventAsync>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Client.Transport.RetryDelegatingHandler.SendEventAsync(Message message, CancellationToken cancellationToken)
   at Microsoft.Azure.Devices.Client.InternalClient.SendEventAsync(Message message)
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.<>c__DisplayClass30_0.<<InvokeFunc>b__0>d.MoveNext() in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 194
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.InvokeFunc[T](Func`1 func, String operation, Boolean useForConnectivityCheck) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 145
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient.InvokeFunc[T](Func`1 func, String operation, Boolean useForConnectivityCheck) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/ConnectivityAwareClient.cs:line 181
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudProxy.SendMessageAsync(IMessage inputMessage) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/CloudProxy.cs:line 157
   at Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudProxy.SendMessageAsync(IMessage inputMessage) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.CloudProxy/CloudProxy.cs:line 165
   at Microsoft.Azure.Devices.Edge.Hub.Core.Cloud.RetryingCloudProxy.<>c__DisplayClass24_0.<<ExecuteOperation>b__0>d.MoveNext() in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.Core/cloud/RetryingCloudProxy.cs:line 64
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Azure.Devices.Edge.Hub.Core.Cloud.RetryingCloudProxy.ExecuteOperation[T](Func`2 func, String operation) in /mnt/vss/_work/1/s/edge-hub/core/src/Microsoft.Azure.Devices.Edge.Hub.Core/cloud/RetryingCloudProxy.cs:line 76
<7> 2022-05-03 06:59:21.380 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Cloud.RetryingCloudProxy] - Getting new cloud proxy for client python-test-device since current cloud proxy is not active
<7> 2022-05-03 06:59:21.380 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.IDeviceScopeIdentitiesCache] - Getting service identity for python-test-device
<7> 2022-05-03 06:59:21.380 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudConnection] - Creating cloud connection for client python-test-device using EdgeHub credentials
<6> 2022-05-03 06:59:21.381 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudConnection] - Attempting to connect to IoT Hub for client python-test-device via MQTT...
<7> 2022-05-03 06:59:21.413 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd] HANDLER_ADDED
<7> 2022-05-03 06:59:21.413 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd] REGISTERED
<7> 2022-05-03 06:59:21.413 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd] CONNECT: <IP_ADDRESS>:8883
<7> 2022-05-03 06:59:21.437 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] ACTIVE
<7> 2022-05-03 06:59:21.438 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] WRITE: ConnectPacket[Type=CONNECT, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:21.438 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:21.439 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.467 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:21.467 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.467 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.468 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:21.468 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.468 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.494 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] USER_EVENT: TlsHandshakeCompletionEvent(SUCCESS)
<7> 2022-05-03 06:59:21.496 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.497 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:21.497 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.497 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.548 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED: ConnAckPacket[Type=CONNACK, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:21.549 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] WRITE: SubscribePacket[Type=SUBSCRIBE, QualityOfService=AtLeastOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:21.549 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:21.549 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:21.549 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.549 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.550 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] WRITE: SubscribePacket[Type=SUBSCRIBE, QualityOfService=AtLeastOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:21.550 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:21.587 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED: SubAckPacket[Type=SUBACK, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:21.587 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:21.587 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.587 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.600 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED: SubAckPacket[Type=SUBACK, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:21.600 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:21.600 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.600 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.601 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Received connection status changed callback with connection status Connected and reason Connection_Ok for python-test-device
<7> 2022-05-03 06:59:21.601 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.DeviceConnectivityManager] - IotHub call succeeded
<6> 2022-05-03 06:59:21.605 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Cloud connection for python-test-device is True
<6> 2022-05-03 06:59:21.605 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Connection status for python-test-device changed to ConnectionEstablished
<7> 2022-05-03 06:59:21.605 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Invoking cloud connection established event for python-test-device
<6> 2022-05-03 06:59:21.605 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.SubscriptionProcessor] - Client python-test-device connected to cloud, processing existing subscriptions.
<7> 2022-05-03 06:59:21.605 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Operation OpenAsync succeeded for python-test-device
<6> 2022-05-03 06:59:21.605 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudConnection] - Created cloud proxy for client python-test-device via MQTT, with client operation timeout 20 seconds.
<6> 2022-05-03 06:59:21.606 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudProxy] - Initialized cloud proxy 6b39b089-3f50-4100-9593-738fbefdcf83 for python-test-device
<6> 2022-05-03 06:59:21.606 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudConnection] - Created cloud connection for client python-test-device
<7> 2022-05-03 06:59:21.606 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Obtained cloud connection for device python-test-device
<7> 2022-05-03 06:59:21.608 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Obtained cloud connection for device python-test-device
<7> 2022-05-03 06:59:21.608 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Cloud.RetryingCloudProxy] - Get new cloud proxy for client python-test-device
<7> 2022-05-03 06:59:21.613 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] WRITE: PublishPacket[Type=PUBLISH, QualityOfService=AtLeastOnce, Duplicate=False, Retain=False], 36B
         +-------------------------------------------------+
         |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |
+--------+-------------------------------------------------+----------------+
|100000000| 54 68 69 73 20 69 73 20 61 20 6D 65 73 73 61 67 |This is a messag|
|100000010| 65 20 74 68 61 74 20 69 73 20 62 65 69 6E 67 20 |e that is being |
|100000020| 73 65 6E 74                                     |sent            |
+--------+-------------------------------------------------+----------------+
<7> 2022-05-03 06:59:21.613 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:21.613 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:21.908 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED: PubAckPacket[Type=PUBACK, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:21.908 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:21.908 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.908 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x1f6d6dcd, [::ffff:<IP_ADDRESS>]:39780 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:21.909 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.DeviceConnectivityManager] - IotHub call succeeded
<7> 2022-05-03 06:59:21.909 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Operation SendEventAsync succeeded for python-test-device
<7> 2022-05-03 06:59:21.913 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudProxy] - Sending message for python-test-device
<7> 2022-05-03 06:59:21.914 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 06:59:21.914 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 06:59:26.124 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x4597ef45, [::ffff:<IP_ADDRESS>]:39744 => [::ffff:<IP_ADDRESS>]:8883] WRITE: PingReqPacket[Type=PINGREQ, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:26.124 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x4597ef45, [::ffff:<IP_ADDRESS>]:39744 => [::ffff:<IP_ADDRESS>]:8883] FLUSH
<7> 2022-05-03 06:59:26.149 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x4597ef45, [::ffff:<IP_ADDRESS>]:39744 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED: PingRespPacket[Type=PINGRESP, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]
<7> 2022-05-03 06:59:26.149 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x4597ef45, [::ffff:<IP_ADDRESS>]:39744 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE
<7> 2022-05-03 06:59:26.149 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x4597ef45, [::ffff:<IP_ADDRESS>]:39744 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:26.149 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - [id: 0x4597ef45, [::ffff:<IP_ADDRESS>]:39744 => [::ffff:<IP_ADDRESS>]:8883] READ
<7> 2022-05-03 06:59:31.912 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 06:59:31.912 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 06:59:41.915 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 06:59:41.915 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 06:59:51.918 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 06:59:51.918 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 07:00:01.920 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 07:00:01.920 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 07:00:11.918 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 07:00:11.918 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 07:00:21.922 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 07:00:21.922 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.
<7> 2022-05-03 07:00:31.921 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Getting next batch for endpoint iothub starting from 27221 with batch size 100.
<7> 2022-05-03 07:00:31.922 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.Core.Storage.MessageStore] - Obtained next batch for endpoint iothub with batch size 0. Next start offset = 27221.

@pebneter
Can you post your script you're running that would generate those logs? Also, which version of EdgeHub are you running? 1.0, 1.1 or 1.2?

Runtime version is 1.2.9
The script is from here: https://github.com/Azure/azure-iot-sdk-python/blob/main/azure-iot-device/samples/simple_send_message.py.
Just set the logging level to debug, otherwise no change.

@pebneter
Could you try using EdgeHub 1.1? We've seen reports recently of issues with using 1.2 - still not sure why that might be, we're investigating, but in the meantime, could you try that and let us know if that resolves the issue?

Ok, I will try with 1.1.

I setup a new edge device using the runtime 1.1 and used it in the exact same setup as before the verion 1.2.9.
So far I have not been able to reproduce the error with this version. So this is a strong hint it is a bug in the runtime 1.2.x.
I re-routed some other machines that run longer to use the 1.1 runtime device. I will report later how that evolves.

Excellent. Thank you very much @pebneter. We will work on attempting to get to the bottom of why this issue is appearing in 1.2, but for now I would suggest sticking with 1.1. We will post an update here when we know more.

A device connected to the Edge with runtime 1.1 has been running fine for 24 hours with no signs of issues.

@pebneter, checking in, are you still functioning okay on 1.1?

@cartertinney Yes has been working flawlessly since downgrading to 1.1

Closing since 1.1 workaround is working (for now)

The issue is for me still very relevant, because we want to move to version 1.3 of edgeHub.
I did tests with a version 1.3, and the issue was still present.

@pebneter - I'd recommend you moving to 1.4: https://github.com/Azure/azure-iotedge/releases/tag/1.4.0
@cartertinney - 1.1 is almost at the End of Life. The workaround isn't enough.
@jlian for visibility.

You need to reopen this issue. Upgrading the platform to 1.4 will not solve the problem. I suspect that with the changes introduced in 1.2 (with the new identity service) something has corrupted the re-authentication flow between a python module and edgeHub.
@gauravIoTEdge and @jlian for comments please.

Well, I agree we need to to get to the bottom of this.
Just to be clear though - my suggestion of upgrading to 1.4 [rather than 1.3] was a general one because that is our LTS support version.

@pebneter - please open this issue on the iotedge repo: https://github.com/Azure/iotedge
We'll take a look.

It might take a few days, but I will test with 1.4 and create one it the problem is still present.

Hi there, so I made some tests with edge 1.4 and the situation has not improved.
I can easily break the connectivity by starting/stopping my client script a couple of times. Doing the same with 1.1 does not trigger any issue.
I will not create a new ticket immediately, but follow the open issues on https://github.com/Azure/iotedge

@pebneter @varunpuranik @gauravIoTEdge What is the status of this issue? It is actually super easy to reproduce and I am surprised it has not been detected/fixed before, since we are already on edge 1.4 and this has been broken since 1.2
A module written in Python (latest, but I have tested with earlier versions too) will fail to renew the SAS token. If you want to reproduce, just create a module and let it run until the SAS token needs to be renewed. It will fail 100% of the time.
Below is the flow on a simple python module created with VSC scaffolding with the addition of python logging:
DEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting renew_token in pipeline thread
INFO:azure.iot.device.common.pipeline.pipeline_stages_base:SasTokenStage: Renewing SAS Token...
DEBUG:urllib3.connectionpool:http://localhost:None "POST /modules/sample/genid/638010619771297413/sign?api-version=2022-08-03 HTTP/1.1" 200 57
INFO:azure.iot.device.common.pipeline.pipeline_stages_base:SasTokenStage: Starting reauthorization process for new SAS token
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(ReauthorizeConnectionOperation): State changes CONNECTED -> REAUTHORIZING. Sending op down.
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(ReauthorizeConnectionOperation): reauthorizing. Will issue disconnect and then a connect
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(DisconnectOperation): disconnecting
INFO:azure.iot.device.common.mqtt_transport:disconnecting MQTT client
DEBUG:paho:Sending DISCONNECT
INFO:azure.iot.device.common.mqtt_transport:disconnected with result code: 0
DEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_mqtt_disconnected in pipeline thread
DEBUG:azure.iot.device.common.mqtt_transport:_mqtt_client.disconnect returned rc=0
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:Cancelling SAS Token update alarm
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:SasTokenStage: Scheduling automatic SAS Token renewal at epoch time:<PHONE_NUMBER>
INFO:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage: _on_mqtt_disconnect called
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:ConnectionStateStage(DisconnectedEvent): Not attempting to reconnect (Reauthorization in progress)
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_base:PipelineRootStage: DisconnectedEvent received. Calling on_disconnected_handler
DEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting _on_disconnected in callback thread
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage: Expected disconnect - completing pending disconnect op
DEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:DisconnectOperation: completing without error
DEBUG:azure.iot.device.common.pipeline.pipeline_ops_base:ReauthorizeConnectionOperation: creating worker op of type ConnectOperation
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(ConnectOperation): connecting
DEBUG:azure.iot.device.common.pipeline.pipeline_stages_mqtt:MQTTTransportStage(ConnectOperation): Starting watchdog
INFO:azure.iot.device.iothub.abstract_clients:Connection State - Disconnected
INFO:azure.iot.device.iothub.abstract_clients:Cleared all pending method requests due to disconnect
DEBUG:azure.iot.device.common.mqtt_transport:connecting to mqtt broker
INFO:azure.iot.device.common.mqtt_transport:Connect using port 8883 (TCP)
DEBUG:azure.iot.device.common.pipeline.pipeline_thread:Starting watchdog_function in pipeline thread
INFO:azure.iot.device.common.mqtt_transport:Forcing paho disconnect to prevent it from automatically reconnecting
DEBUG:azure.iot.device.common.mqtt_transport:Done forcing paho disconnect
INFO:azure.iot.device.common.pipeline.pipeline_stages_mqtt:transport.connect raised error
INFO:azure.iot.device.common.pipeline.pipeline_stages_mqtt:Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 397, in connect
    host=self._hostname, port=8883, keepalive=self._keep_alive
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 914, in connect
    return self.reconnect()
  File "/usr/local/lib/python3.7/site-packages/paho/mqtt/client.py", line 1073, in reconnect
    sock.do_handshake()
  File "/usr/local/lib/python3.7/ssl.py", line 1139, in do_handshake
    self._sslobj.do_handshake()
socket.timeout: _ssl.c:1074: The handshake operation timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/pipeline/pipeline_stages_mqtt.py", line 206, in _run_op
    self.transport.connect(password=password)
  File "/usr/local/lib/python3.7/site-packages/azure/iot/device/common/mqtt_transport.py", line 419, in connect
    raise exceptions.ConnectionFailedError() from e
azure.iot.device.common.transport_exceptions.ConnectionFailedError

This repeats cyclically as the module continues to attempt connecting. Restarting the module DOESN'T solve the issue.
On edgeHub (currently 1.4), this is what is captured when the error occurred (I have removed some debug lines because they were no relevant):
<7> 2022-10-11 07:08:43.554 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.DeviceConnectivityManager] - IotHub call succeeded
<7> 2022-10-11 07:08:43.554 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Operation SendEventAsync succeeded for 6f4d3d12106d43b7a6fa33e98c6df045/sample
<7> 2022-10-11 07:08:43.554 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.CloudProxy] - Sending message for 6f4d3d12106d43b7a6fa33e98c6df045/sample
<6> 2022-10-11 07:09:00.732 +00:00 [INF] [EdgeHub] - "Closing connection for device: 6f4d3d12106d43b7a6fa33e98c6df045/sample, , "
<6> 2022-10-11 07:09:00.733 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.MessagingServiceClient] - Disposing MessagingServiceClient for device Id 6f4d3d12106d43b7a6fa33e98c6df045/sample because of exception -
<6> 2022-10-11 07:09:00.733 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Mqtt.DeviceProxy] - Setting device proxy inactive for device Id 6f4d3d12106d43b7a6fa33e98c6df045/sample
<6> 2022-10-11 07:09:00.733 +00:00 [INF] [Microsoft.Azure.Devices.Edge.Hub.Core.ConnectionManager] - Removing device connection for device 6f4d3d12106d43b7a6fa33e98c6df045/sample with removeCloudConnection flag 'True'.
<7> 2022-10-11 07:09:00.733 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 => [::ffff:<IP_ADDRESS>]:8883] WRITE: DisconnectPacket[Type=DISCONNECT, QualityOfService=AtMostOnce, Duplicate=False, Retain=False]"
<7> 2022-10-11 07:09:00.733 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 => [::ffff:<IP_ADDRESS>]:8883] FLUSH"
<7> 2022-10-11 07:09:00.733 +00:00 [DBG] [Microsoft.Azure.Devices.Edge.Hub.CloudProxy.ConnectivityAwareClient] - Received connection status changed callback with connection status Disabled and reason Client_Close for 6f4d3d12106d43b7a6fa33e98c6df045/sample
<7> 2022-10-11 07:09:00.738 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 => [::ffff:<IP_ADDRESS>]:8883] RECEIVED_COMPLETE"
<7> 2022-10-11 07:09:00.738 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 => [::ffff:<IP_ADDRESS>]:8883] READ"
<7> 2022-10-11 07:09:00.738 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 => [::ffff:<IP_ADDRESS>]:8883] READ"
<7> 2022-10-11 07:09:00.738 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 :> [::ffff:<IP_ADDRESS>]:8883] INACTIVE"
<7> 2022-10-11 07:09:00.738 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 :> [::ffff:<IP_ADDRESS>]:8883] CLOSE"
<7> 2022-10-11 07:09:00.738 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 :> [::ffff:<IP_ADDRESS>]:8883] UNREGISTERED"
<7> 2022-10-11 07:09:00.738 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x74841ffb, [::ffff:<IP_ADDRESS>]:59684 :> [::ffff:<IP_ADDRESS>]:8883] HANDLER_REMOVED"
<7> 2022-10-11 07:09:29.438 +00:00 [DBG] [DotNetty.Handlers.Logging.LoggingHandler] - "[id: 0x3d209f7e, [::ffff:<IP_ADDRESS>]:43198 => [::ffff:<IP_ADDRESS>]:8883] FLUSH"


php error logging, helps identify when php 'crashes' due to for example a double function declaration

php error logging, helps identify when php 'crashes' due to for example a double function declaration, redmine: https://redmine.pfsense.org/issues/4143

modified version of this committed


fix: edge case to ignore parsing very large numbers

Description
Problem
The defaultOptionValueValidation function in select.ts is not properly handling different input values, resulting in inconsistent behavior.
Root cause
This function does not account for edge cases where the input value is a very large number and is resulting in a rounded off number, leading to incorrect validation results.
Solution
This PR changes the behavior to parsing only when required.
Fixes #27881
or
Fixes Issue URL

[!WARNING]
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation
/ok-to-test<EMAIL_ADDRESS>:mag: Cypress test results

[!CAUTION]
If you modify the content in this section, you are likely to disrupt the CI result for your PR.

Communication
Should the DevRel and Marketing teams inform users about this change?

[ ] Yes
[ ] No

Summary by CodeRabbit

New Features

Enhanced type safety for various functions, improving overall reliability.
Streamlined validation logic for option values, allowing for more robust input handling.

Bug Fixes

Improved test coverage for defaultOptionValueValidation, ensuring accurate handling of both truthy and falsy values.

Documentation

Added comments indicating areas for future improvements in the codebase.

/build-deploy-preview skip-tests=true


How to update API Policy?

Is there a way to update the policy for a given API through the CLI? Everytime I update an API the policy gets wiped out and has to be manually added back.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 86f27e34-66e0-1d08-f734-26ce29c56c36
Version Independent ID: d1a421eb-807c-c0bd-cee3-a5aed7335625
Content: az apim api
Content Source: src/azure-cli/azure/cli/command_modules/apim/_help.py
GitHub Login: @rloutlaw
Microsoft Alias: routlaw

apim

@nezoic thanks for the feedback. Can you please elaborate on how you update an API and steps to reproduce?
cc @RupengLiu

Any news?

Any updates on using AZ CLI to set the APIM policy please ?

@nezoic Apologies for the late reply. We are looking into this issue. We will update this thread once we have more details.
@adrianhall Could you please provide an update on this issue ? Awaiting your reply.

I'm also experiencing difficulties with this.
I publish a function app ...
func azure functionapp publish $STAGING_FUNCTION_APP_NAME --typescript --subscription $SUBSCRIPTION_ID
Then reimport the API into APIM using OpenAPI schema...
az apim api import -g $STAGING_RESOURCE_GROUP --service-name $STAGING_GATEWAY_NAME --api-id $STAGING_FUNCTION_APP_NAME --path myPath --specification-path $CI_PROJECT_DIR/OpenAPI/schema.yaml --specification-format OpenApi
This works fine, apart from the fact that it wipes out any policies as they're not defined in the OpenAPI spec as described in the original question.
It would be great if this could be catered for by defining policies in OpenAPI but an az command to set policies (specifically validate-jwt for me) would be great, and to be honest, needed!

The ability to add a policy via CLI will be added to the next release of the APIM CLI - we are targeting end of May for this release.  In the interim, you can use the az rest command to upload policies.  Something like the following:
az rest --method PUT
  --uri "https://management.azure.com/subscriptions/{subId}/resourceGroups/{rg}/providers/Microsoft.ApiManagement/service/{svc}/apis/{apiId}/policies/policy?api-version=2021-08-01"
  --body "{ \"value\": \"<your-policy-document-json-encoded-string>\", \"format\": \"xml\"}"

This is not the most obvious format - the CLI command we are developing will allow you to use a file reference as well.
@intercity-technology - if you are importing a new OpenAPI spec, it does not create policies for you.  You have to define them.  So your observed behaviour is expected - we agree, a CLI command to inject the policy is needed.

@adrianhall, when I try the REST workaround then I get the az error The command line is too long.
Does it mean the Az PowerShell is the only solution for big policies now?

@adrianhall Hi. How should I proceed with the above example to upload a policy for a specific API operation? Also can we use names instead of IDs? IDs change every time we re-deploy.

You definitely need to escape the quotes in the action.  Syntax is slightly wrong.
az rest --method PUT --uri https://management.azure.com/subscriptions/{subId}/resourceGroups/{rgName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}/policies/policy?api-version=2021-08-01 --body @body.json

Then have a file body.json that contains the following:
{
  "value": "{{ json encoded policy file }}",
  "format": "rawxml"
}

Replace the {subId}, {rgName}, {serviceName}, {apiId}, and {operationId} in the URI with your values.

Thanks a lot for your feedback. I've tried the new way but still no luck.
If I don't put the properties field, it complains
Bad Request({"error":{"code":"ValidationError","message":"Invalid payload format.  Contract should have 'properties' specified.","details":null}})
So I put properties, but if it's empty it complains. So I use this:
{     "properties": {         "method": "PUT"     },     "value": "<policies>         <inbound>             <ip-filter action=\"allow\">                 <address><IP_ADDRESS></address>             </ip-filter>         </inbound>     </policies>",     "format": "rawxml" }
The request goes through, but when I check on Azure console, nothing changed. Any idea why?

And just like that, 2 min later I find the solution 😅
The right body is the following. Need to put value and format under properties
{
    "properties": {
        "method": "PUT",
        "value": "<policies>
            <inbound>
                <ip-filter action=\"allow\">
                    <address><IP_ADDRESS></address>
                </ip-filter>
            </inbound>
        </policies>",
        "format": "rawxml"
    },
}

Sorry - yes - I missed the properties when I was typing.  Glad it worked out for you
#please-close

The ability to add a policy via CLI will be added to the next release of the APIM CLI - we are targeting end of May for this release.

Is there any update on this? Is there an open issue that we can follow to track this feature?
Thanks!

There isn't an open issue to track on GitHub (we track these work items in our internal issues tracker).  We obviously did not meet the May target, but I don't have a new date at the moment.

There isn't an open issue to track on GitHub (we track these work items in our internal issues tracker). We obviously did not meet the May target, but I don't have a new date at the moment.

Thanks for the update.

For large policies, you can use ARM / Bicep / Terraform or you can use the Azure Portal. You will run into the same size issues in Azure PowerShell.

When this feature is implemented in Azure CLI, do you know if it will also have the same issues with large policies? I'm trying to determine if it's worth waiting for the feature to be implemented in Azure CLI or if I should look into the alternatives.
Thanks!

This works fine, apart from the fact that it wipes out any policies as they're not defined in the OpenAPI spec as described in the original question.
It would be great if this could be catered for by defining policies in OpenAPI but an az command to set policies (specifically validate-jwt for me) would be great, and to be honest, needed!

Putting the policies in the OpenAPI definition would be amazing. For what it's worth, this is how IBM API Connect works; it puts the policies inside a custom x-ibm-configuration section in the API definition, e.g.
x-ibm-configuration:
  assembly:
    execute:
      - if:
          title: if
          condition: apim.getvariable('bypass-saml-validation') !== 'true'
          execute:
            - set-variable:
                title: Get SAMLResponse from headers
                actions:
# ...

Coming to Azure API Management from IBM API Connect feels like a step backward in that sense. Right now with API Connect all of our policies are easily version controlled because they're right inside the API definition. It's going to be a challenge to figure out how to do this with Azure.

I'm also looking forward to this feature! @adrianhall can you tell us what your release cycle is?

Hi, @adrianhall  please help me i useing this in body
--body "{"properties":{"method":"PUT"},"value":"<corsallow-credentials="false">GETPOSTPATCHDELETE","format":"xml" }"
but doesn't work

Sorry @fellnerse - I don't have a good line of sight at this point as to when the work will be completed.
#close

Any news on this? @adrianhall would you be open for contributions to help with this?

Always happy for contributions.  I still don't have a line of sight onto additional work in the Azure CLI.

Great. do you have a branch existing for the work you already done?

Just do your work on a fork - we'll manage the merged changes on this  end.

az rest --method put --uri https://management.azure.com/subscriptions/subid/resourceGroups/RG/providers/Microsoft.ApiManagement/service/test-02/policyFragments/test-01-fp?api-version=2022-04-01-preview --body '{"properties":{"method":"PUT","value":"<ip-filter action="allow"><IP_ADDRESS>","format":"rawxml"}}'  I ran the command amorphet81 commented on Jun 15, 2022 .But cmd ran success but not created a policy .kindly help

And just like that, 2 min later I find the solution 😅 The right body is the following. Need to put value and format under properties
{
    "properties": {
        "method": "PUT",
        "value": "<policies>
            <inbound>
                <ip-filter action=\"allow\">
                    <address><IP_ADDRESS></address>
                </ip-filter>
            </inbound>
        </policies>",
        "format": "rawxml"
    },
}

az rest --method put --uri https://management.azure.com/subscriptions/subid/resourceGroups/RG/providers/Microsoft.ApiManagement/service/test-02/policyFragments/test-01-fp?api-version=2022-04-01-preview --body '{"properties":{"method":"PUT","value":"<ip-filter action="allow"><IP_ADDRESS>","format":"rawxml"}}'  I ran the command amorphet81 commented on Jun 15, 2022 .But cmd ran success but not created a policy .kindly help

Was this ever released? I would love this functionality

Any impending eta yet?

Hello, are we in a position to consume az cli to add APIM policies or do we still need to use REST API workaround? Thanks

Hi, in the previous restful API workaroud, where I can get the  {apiId}, and {operationId} ?

Hi all, for the REST Api workaround, how can I apply the policy to all operations in one go?

#assign: KedarJoshi

Hi,
Any update on azure cli to add the policies? can you provide any timeline?

still no cli support to manage policies in apim after three years
Azure is really beginning to get in my nerves

The ability to add a policy via CLI will be added to the next release of the APIM CLI - we are targeting end of May for this release. In the interim, you can use the az rest command to upload policies. Something like the following:
...

So obviously it neither worked for may nor august 2022 .
So now after over a year - any updates?
Even if You say "No, Microsoft will not support this in CLI jsust use bicep" it would be helpful. But just say something reliable.

Any updates on this?

Any updates on this Guys, I'd love to be able to manage APIM policies from AZ CLI.

any updates? @KedarJoshi

Any updates please? This is an useful feature.

Is there any movement on this? Reading this thread it's been coming in every next version of the AZ CLI update but I can't see the functionality. I agree with all the posters that this is required functionality and severely limits working with API management. An update with a solid delivery date would be good? Thanks A

And just like that, 2 min later I find the solution 😅 The right body is the following. Need to put value and format under properties
{
    "properties": {
        "method": "PUT",
        "value": "<policies>
            <inbound>
                <ip-filter action=\"allow\">
                    <address><IP_ADDRESS></address>
                </ip-filter>
            </inbound>
        </policies>",
        "format": "rawxml"
    },
}

I'm trying to use the REST API; the body I'm passing is:
{"properties":{"format":"xml","value":"<policies><inbound/><backend><forward-request/></backend><outbound/></policies>"}}

When I call the api endpoint I get the following error:
az : < was unexpected at this time.
At C:\Data\apims1.ps1:8 char:1

az rest --method PUT --uri $uri --body $body

  + CategoryInfo          : NotSpecified: (< was unexpected at this time.:String) [], RemoteException
  + FullyQualifiedErrorId : NativeCommandError

I've tried encoding the < > as </&#62 and also </> but can't get the body to be accepted. I've also encoded the " as " but it still fails.

And just like that, 2 min later I find the solution 😅 The right body is the following. Need to put value and format under properties
{
    "properties": {
        "method": "PUT",
        "value": "<policies>
            <inbound>
                <ip-filter action=\"allow\">
                    <address><IP_ADDRESS></address>
                </ip-filter>
            </inbound>
        </policies>",
        "format": "rawxml"
    },
}

I'm trying to use the REST API; the body I'm passing is:
{"properties":{"format":"xml","value":"<policies><inbound/><backend><forward-request/></backend><outbound/></policies>"}}

When I call the api endpoint I get the following error:
az : < was unexpected at this time. At C:\Data\apims1.ps1:8 char:1

az rest --method PUT --uri $uri --body $body

  + CategoryInfo          : NotSpecified: (< was unexpected at this time.:String) [], RemoteException
  + FullyQualifiedErrorId : NativeCommandError

I've tried encoding the < > as & #60;/& #62; and also & lt;/& gt; but can't get the body to be accepted. I've also encoded the " as " but it still fails.

I get the same...

Hi, could we get an update on this feature request? Thanks!

I can't get az rest to work if I add quotes in the policy.
This works:
$body = (@{
    properties = @{
        format = "xml"
        value = "<policies><inbound></inbound><backend></backend><outbound></outbound></policies>"
    }
} | ConvertTo-Json -Compress).Replace('"', '\"')

$url = "https://management.azure.com/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.ApiManagement/service/$ApimServiceName/policies/policy?api-version=2022-08-01"
az rest --method PUT --uri $url --body $body

But changing the policy to e.g. this, fails:
"<policies><inbound><set-header name=`"test`" exists-action=`"override`"><value>value</value></set-header></inbound><backend></backend><outbound></outbound></policies>"

< was unexpected at this time.
How should the quotes in the xml be escaped, while located within escaped json?

@jepperaskdk did you figure out how to do this?

@captainhook No, I switched to PowerShell module. ☹

Thanks. I am still struggling with this since I am using az cli in Azure DevOps and need it to work there.
@AndrewBates666 @seanksullivan, I'm guessing you didn't manage to resolve this either?
@KedarJoshi any update from MSFT end? The REST method works but it's not handling escapes properly - see above examples. Please advise. This is extremely debilitating to our work.

I didn't manage to get the quotes working so I just switched into using file.
 function Set-OperationScopedPolicies() {
  param(
    [Parameter(Mandatory)][PSCustomObject]$OperationsOutput,
    [Parameter(Mandatory)][Hashtable]$OperationScopes
  )
  $bodyFileName = 'body.json'

  $policyTemplate = Get-Content $PSScriptRoot/templates/filter-policy-template.xml -Raw
  $policyTemplate.Replace("{{OpenIdConfigUrl}}", "My secret values")
  $policyTemplate.Replace("{{Audience}}", "My secret values")
  $policy = $policyTemplate.Replace("{{SCOPE_NAMES}}", "My secret values")
  Set-Content -Path $bodyFileName -Value $policy
  $url = "https://management.azure.com/" + $operationid + "/policies/policy?api-version=2021-08-01"
  restResponse = az rest --method PUT --uri $url --body "@$bodyFileName" --output-file response.xml
  Remove-Item $bodyFileName
}

filter-policy-template.xml (This is in one line):
{"properties":{"method":"PUT","value":"<policies>\r\n  <inbound>\r\n    <validate-jwt header-name=\"Authorization\" failed-validation-httpcode=\"401\" failed-validation-error-message=\"Unauthorized. Access token is missing or invalid.\">\r\n      <openid-config url=\"{{OpenIdConfigUrl}}\" \/>\r\n      <audiences>\r\n        <audience>{{Audience}}<\/audience>\r\n      <\/audiences>\r\n      <required-claims>\r\n        <claim name=\"groups\" match=\"any\">\r\n          {{SCOPE_NAMES}}        <\/claim>\r\n      <\/required-claims>\r\n    <\/validate-jwt>\r\n    <base \/>\r\n  <\/inbound>\r\n  <backend>\r\n    <base \/>\r\n  <\/backend>\r\n  <outbound>\r\n    <base \/>\r\n  <\/outbound>\r\n  <on-error>\r\n    <base \/>\r\n  <\/on-error>\r\n<\/policies>","format":"rawxml"}}

Managed to make this work on our side. Doesn't look to nasty I think.
Key thing was to set format to rawxml and escaping everything properly.
#!/bin/bash

SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)

SUBSCRIPTION_ID="YOUR_SUBSCRIPTION"
RESOURCE_GROUP_NAME="YOUR_RG"
APIM_SERVICE_NAME="YOUR_SERVICE"
API_NAME="YOUR_API"

# Load the policy from the XML file
POLICY_FILE="$SCRIPT_DIR/../policies/proxy.xml"
POLICY_CONTENT=$(cat "$POLICY_FILE")

# Escape special characters in the XML content
ESCAPED_POLICY=$(echo "$POLICY_CONTENT" | sed 's/"/\\"/g' | awk '{gsub(/\n/, "\\n"); print}')

# Construct the body with the loaded policy
BODY="{\"properties\":{\"format\":\"rawxml\",\"value\":\"$ESCAPED_POLICY\"}}"

RG_URL="https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP_NAME"
SERVICE_URL="$RG_URL/providers/Microsoft.ApiManagement/service/$APIM_SERVICE_NAME"
API_URL="$SERVICE_URL/apis/$API_NAME"
POLICY_URL="$API_URL/policies/policy?api-version=2022-09-01-preview"

az rest --method PUT --uri "$POLICY_URL" --body "$BODY" --headers "Content-Type=application/json"


get item by index number

Hi there
let's assume I have following code:
    spinner = (MaterialSpinner) findViewById(R.id.spinner);
    spinner.setItems("Canada", "Germany", "France", "Netherlands", "United Kingdom", "United States");

how can I get items by index number?

Do you want the selected item or do you want to get the item by position?
Selected item:
String[] COUNTRIES = {"Canada", "Germany", "France", "Netherlands", "United Kingdom", "United States"};
...
spinner.setItems(COUNTRIES);
...
String selectedCounty = COUNTRIES[spinner.getSelectedIndex()];

Item by index:
String[] COUNTRIES = {"Canada", "Germany", "France", "Netherlands", "United Kingdom", "United States"};
...
spinner.setItems(COUNTRIES);
...
String us = COUNTRIES[5];

I will add a method to get the current items.

thanks you sir

Have you added getCurrentItems?
I need something similar to getSelectedItem()

thnx man! You are fast like chuck norris

I don't understand how can i get the position of the current selected item ? :/


ENH: add caRepeater to epics-base

cainfo is handy for debugging while you're at it...
http://epics.web.psi.ch/style/training/handouts/e_basehandouts/node11.html
On Fri, 17 Mar 2017, Thomas A Caswell wrote:

You can view, comment on, or merge this pull request online at:

https://github.com/NSLS-II/lightsource2-recipes/pull/105
Commit Summary

ENH: add caRepeater to epics-base
File Changes

M recipes-tag/epics-base-R<IP_ADDRESS>/build.sh (2)

M recipes-tag/epics-base-R<IP_ADDRESS>/meta.yaml (2)
Patch Links:

https://github.com/NSLS-II/lightsource2-recipes/pull/105.patch

https://github.com/NSLS-II/lightsource2-recipes/pull/105.diff

?
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the
thread.[AFOf4_XQt_1IYgnrXcj2jcJd25vSoBeIks5rmufPgaJpZM4MhC21.gif]

@cowanml - good suggestion, is there anything else we should have ? Feel free to open a PR.  :)


Add k-mer cutter

We need to add a function that cuts exons into k-mers. This is part of #22 and should go into cutClassesIntoKmers.

Closed by #30.


Map top level Magento product attributes to shopify products; Map simple products as variants to configurable products

What it does and why:

Map top level Magento product attributes to shopify products
Map simple products as variants to configurable products

Checklist:

[x] Testing & QA: Passes tests and linting.
[x] :tophat:: I have manually tested these changes.

This closes https://github.com/Shopify/transporter_app/issues/1313 and https://github.com/Shopify/transporter_app/issues/1289.


⚠ Bofrost.fr has degraded performance

In 25bdb0b, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1420 ms

Resolved: Bofrost.fr performance has improved in 1b974c7 after 6 minutes.


ED-prefixed Z80 instructions affected by the DD/FD prefixed

Turns out, some of the ED instruction handlers ask for current iregp and try to work with index registers, despite the disassembling part being correct and always assuming it be iregp::hl. What a shame!
Caught during falling down the rabbit hole of #21 / #22, checking for duplicate instruction disassemblies. (And yes, we do have duplicates for ld (0x0000), hl, encodings 22xxxxand ed63xxxx, and ld hl, (0x0000), 2axxxx and ed6bxxxx.)

Fixed.


Update README to fix typos

@yerke Thank you. Let me know once you're ready for a final review that way we can merge these changes


bobcat: 5.05.00 -> 5.07.00

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/bobcat/versions.
meta.description for bobcat is: "Brokken's Own Base Classes And Templates"
meta.homepage for bobcat is: "https://fbb-git.gitlab.io/bobcat/"
meta.changelog for bobcat is: ""
Updates performed

Version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 5.07.00 with grep in /nix/store/9v4glrw8p2srsl323v7g3lkgdl6x6szi-bobcat-5.07.00

directory tree listing: https://gist.github.com/493354d4e2066bec1fc8dce17e4db576

du listing: https://gist.github.com/9462d43aa6ac04ba01cc9ce888df75ed

Rebuild report (if merged into master) (click to expand)

9 total rebuild path(s)

3 package rebuild(s)

3 x86_64-linux rebuild(s)
3 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
3 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
bisoncpp
bobcat
flexcpp

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/9v4glrw8p2srsl323v7g3lkgdl6x6szi-bobcat-5.07.00 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A bobcat https://github.com/r-ryantm/nixpkgs/archive/a2783eafbd956e2211a40a96a1d27c705cbe0ec6.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/9v4glrw8p2srsl323v7g3lkgdl6x6szi-bobcat-5.07.00
ls -la /nix/store/9v4glrw8p2srsl323v7g3lkgdl6x6szi-bobcat-5.07.00/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

3 packages built:

bisoncpp
bobcat
flexcpp

Maintainer pings

This is a semi-automatic executed nixpkgs-review with nixpkgs-review-checks extension. It is checked by a human on a best effort basis and does not build all packages (e.g. lumo, tensorflow or pytorch).
If you have any questions or problems please reach out to SuperSandro2000 on IRC.
Result of nixpkgs-review pr 109895 run on x86_64-linux 1

3 packages built:

bisoncpp
bobcat
flexcpp

The following issues got detected with the above build packages.
Please fix at least the ones listed with your changed packages:

bisoncpp:

Please consider this feature to be alpha.


Updates for linux vendors

@athix as per request

I wonder if it would be wise to long term simply supply websites that augment IDs as some sort of meta layer thing, instead of embedding it directly into the references for every CVE in existence...
Pros and cons to both methods I suppose, and with OSV we can at least clearly label these types of references in the future.

I'm OK merging this now. When it's time to parse things we already have to verify a ton of stuff. I'm a fan of capturing all this now and fixing it up soon

Agreed. I'm working on adding a schema to validate against, which should ideally make this a lot easier and provide us something to use for GitHub action validations of the data. It will obviously use OSV, but will have other things defined such as the namespaces that are GSD specific.


Dropping support for node 8

This PR also removes the redundant .travis.yml.

We should also wait for #96 to merge before releasing, so we can have nicer changelogs :)

Going to wait for #86 to be merged and released before merging and releasing this in a major version bump.

@rwjblue I think since #86 is merged we can think about merging this and releasing. Thoughts?


”Poienești”, ”Dealu Secării”, ”Florești”, ”Frasinu” are listed in the drop-down menu

Description:
When user writes ”Poienești”, ”Dealu Secării”, ”Florești”, ”Frasinu” the locations appear in the drop-down menu next to the comune and the county which is a part according to the law.
Precondition:
The website is up an running.

Step 1
Write in the search bar "Poienești"

Expected results
The location appears in the drop-down menu as "Sat Poienești, VASLUI (Poienești)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Dealu Secării"

Expected results
The location appears in the drop-down menu as "Sat Dealu Secării, VASLUI (Poienești)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Write in the search bar "Florești"

Expected results
The location appears in the drop-down menu as "Sat Florești, VASLUI (Poienești)".

Step 6
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 7
Write in the search bar "Frasinu"

Expected results
The location appears in the drop-down menu as "Sat Frasinu, VASLUI (Poienești)".


Update dependencies

Q
A

Bug fix?
no

New feature?
no

API breaks?
no

Deprecations?
no

Related tickets

License
Apache 2.0

What's in this PR?

Upgrade k8s libs to 0.22.2
Upgrade controller-runtime to 0.9.7

Checklist

[x] Implementation tested
[x] Error handling code meets the guideline
[x] Logging code meets the guideline
[x] User guide and development docs updated (if needed)

Rebased on top of latest master


fix: retrieving connection values using case insensitive function

@enj please, could you take a review of this PR?

Seems fine.  You should add tests 😄


Build and performance issues fixes

See https://github.com/KjellKod/g3sinks/issues/11 for details

@rayrapetyan do you want me to fix this for you?

Yes, please go ahead, I don't have time for that, sorry (.

Replaced by https://github.com/KjellKod/g3sinks/pull/16/files


[BEAM-8938] Skip timeouting tests

This is a temporary solution to prevent the jobs from hanging on dataflow forever and eating up our resources. Definitely not a long term solution - this is rather to unparalyze GCP (quota issues) and fix the tests one by one.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

Run Java PreCommit

Run Python PreCommit

@iemejia do you think you could take a look? I'm not convinced that skipping is the way to go but on the other hand, those 4 tests were hanging on dataflow so maybe it is good to skip them and fix one by one and not waste resources. WDYT?

cc: @lukecwik, since he was (is?) working on SDF recently, maybe good to be aware.

Thanks for the heads up on the SDF tests.

@iemejia do you think you could take a look? I'm not convinced that skipping is the way to go but on the other hand, those 4 tests were hanging on dataflow so maybe it is good to skip them and fix one by one and not waste resources. WDYT?

Notifying test author/community and skipping tests that are causing problems is the right thing to do for the health of the project.

Run Python PreCommit

Notifying @robertwb as well about the python tests

+1 to Robert's suggestion can you please exclude the tests only for Dataflow because this seems to be   Dataflow specific issue. We exclude individual methods in the Spark runner like this https://github.com/apache/beam/blob/614386be99d6d97f01ffa137d11a58c99877ce54/runners/spark/build.gradle#L207-L220). Please add the new assigned JIRA as a doc there too.
CC @kamilwu since he seems to be now in charge of this ticket.

It looks that Python tests were skipped in another PR: https://github.com/apache/beam/pull/10429.
When it comes to Java tests, I've checked the recent history of Jenkins tasks which run them (beam_PostCommit_Java11_ValidatesRunner_Dataflow and beam_PostCommit_Java_ValidatesRunner_Dataflow) and it seems all tasks were successful. In this case, skipping them may not longer be necessary.
I think we can close this PR without merging.


Load segment data asynchronously

Segment QueryFilter can be quite complex and long to execute, this change allow to load the datagrid async, therefore allowing the page to load quickly
Require fix by #961
Related to #925
I am mostly sure that you wont merge this PR as is, but it give you a starting point to fix this issue

Hello @sadortun,
Thank you for the improvement. The idea is great, but the solution needs to be enhanced:

inline JS is restricted to use
this code does not live in cycles of the application, it is not disposed properly
ComponentManager is not supposed to use standalone

Please consider of using  https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/UIBundle/Resources/public/js/app/components/widget-component.js for rendering block with datagrid widget. It can be done with the help of oro_widget_render twig function, kind of
{{ oro_widget_render({
    'widgetType': 'block',
    'url': path('oro_datagrid_widget')
}) }}

The goal is to initiate block widget when it is necessary and dispose it properly when it is time.

@Grygir Understandable, this was only a prrof of concept :) !

@Grygir The goal of using an ajax request is to load the grid asynchronously, since in some case it can take up to a minute to load with very complex queries.
Using oro_widget_render seems to only be able to load the grid in a blocking way, therefore blocking the usage of the app until loading is completed.
Am i missing something ?
Thanks

Ok, after some extensive digging, i noticed that the container option was required to render the grid.

This still show a full page loading spinner that prevent us from using the page, ill update this post if i find a solution.

No inline js-code should be used, this approach is prohibited. You can find it only in some legacy code, that we are going to refactor. Expect, the following code should do the same
{{ oro_widget_render({
    'widgetType': 'block',
    'url': path('oro_datagrid_widget', {
        gridName: gridName,
        params: params,
        renderParams: renderParams
    })
}) }}

could you check?
It should output empty
 element with options within data attributes. Those attributes will be processed in browser and the grid will be rendered as block widget.

To solve issue with blocking rendering, it is better to extend WidgetComponent::_openWidget method
https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/UIBundle/Resources/public/js/app/components/widget-component.js#L140-L190
to resolve deferredOpen at once, in case there's some option passed that says to do so. And cover the block with loading mask until real widget.deferredRender gets resolved