Search code examples
javaandroidbluetooth-lowenergyrxandroidble

Log: Queue's awaitRelease() has been interrupted abruptly while it wasn't released byte release() method


Below is a section of logcat which contains the message I'm occasionally seeing: Queue's awaitRelease() has been interrupted abruptly while it wasn't released byte release() method. The "byte" seems to be a typo. Searching the project for the string "byte release" doesn't find anything.

Where is this message coming from, and what does it mean? The program appears to work OK.

Log excerpt:

12-15 12:54:07.933 26145-26797/com.calderadev.truecareccm.truecareservice D/RxBle#ConnectionOperationQueue:  STARTED DescriptorWriteOperation(167521506)
12-15 12:54:07.938 26145-26820/com.calderadev.truecareccm.truecareservice D/BluetoothGatt: setCharacteristicNotification() - uuid: 00002a18-0000-1000-8000-00805f9b34fb enable: false
12-15 12:54:07.949 26145-26820/com.calderadev.truecareccm.truecareservice D/RxBle#ConnectionOperationQueue:   QUEUED DescriptorWriteOperation(1053980218)
12-15 12:54:07.949 26145-26820/com.calderadev.truecareccm.truecareservice D/Glucometer: Unsubscribing from flushSubscription and GlucometerInteraction.
12-15 12:54:07.949 26145-26820/com.calderadev.truecareccm.truecareservice D/Glucometer: Sleeping for 1000MS and disconnecting from the glucometer.
12-15 12:54:07.949 26145-26820/com.calderadev.truecareccm.truecareservice D/AbstractBleDevice: Unsubscribed from connObservable; closing connection(?)
12-15 12:54:07.950 26145-26820/com.calderadev.truecareccm.truecareservice D/AbstractBleDevice: disconnect(): unsubscribing from connectionSubscription
12-15 12:54:07.952 26145-26795/com.calderadev.truecareccm.truecareservice D/RxBle#ClientOperationQueue:   QUEUED DisconnectOperation(939620424)
12-15 12:54:07.954 26145-26205/com.calderadev.truecareccm.truecareservice D/RxBle#ClientOperationQueue:  STARTED DisconnectOperation(939620424)
12-15 12:54:07.956 26145-26795/com.calderadev.truecareccm.truecareservice I/RxBle#ConnectionOperationQueue: Connection operations queue to be terminated (9C:35:83:0A:6D:F9)
12-15 12:54:07.956 26145-26256/com.calderadev.truecareccm.truecareservice D/BluetoothManager: getConnectionState()
12-15 12:54:07.956 26145-26256/com.calderadev.truecareccm.truecareservice D/BluetoothManager: getConnectedDevices
12-15 12:54:07.957 26145-26797/com.calderadev.truecareccm.truecareservice W/RxBle#ConnectionOperationQueue: Queue's awaitRelease() has been interrupted abruptly while it wasn't released byte release() method.
                                                                                                            java.lang.InterruptedException
                                                                                                                at java.lang.Object.wait(Native Method)
                                                                                                                at com.polidea.rxandroidble.internal.serialization.QueueSemaphore.awaitRelease(QueueSemaphore.java:15)
                                                                                                                at com.polidea.rxandroidble.internal.serialization.ConnectionOperationQueueImpl$1.run(ConnectionOperationQueueImpl.java:64)
                                                                                                                at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
                                                                                                                at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                                                                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                                                                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                                                                at java.lang.Thread.run(Thread.java:818)
12-15 12:54:07.967 26145-26256/com.calderadev.truecareccm.truecareservice D/BluetoothGatt: cancelOpen() - device: 9C:35:83:0A:6D:F9
12-15 12:54:07.974 26145-26162/com.calderadev.truecareccm.truecareservice D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=6 device=9C:35:83:0A:6D:F9
12-15 12:54:07.975 26145-26162/com.calderadev.truecareccm.truecareservice D/RxBle#BluetoothGatt: onConnectionStateChange newState=0 status=0
12-15 12:54:07.976 26145-26797/com.calderadev.truecareccm.truecareservice D/RxBle#ConnectionOperationQueue: FINISHED DescriptorWriteOperation(167521506)
12-15 12:54:07.979 26145-26256/com.calderadev.truecareccm.truecareservice D/BluetoothGatt: close()
12-15 12:54:07.980 26145-26256/com.calderadev.truecareccm.truecareservice D/BluetoothGatt: unregisterApp() - mClientIf=6
12-15 12:54:07.982 26145-26205/com.calderadev.truecareccm.truecareservice D/RxBle#ClientOperationQueue: FINISHED DisconnectOperation(939620424)
12-15 12:54:07.984 26145-26797/com.calderadev.truecareccm.truecareservice D/RxBle#Executors$RunnableAdapter: Terminated.
12-15 12:54:08.950 26145-26820/com.calderadev.truecareccm.truecareservice D/MainActivity: Restarting scan for Glucometer in 130 seconds.
12-15 12:56:18.960 26145-26145/com.calderadev.truecareccm.truecareservice D/ReactiveBluetoothHelpers: Subscribed to glucoseScanner

Solution

  • it comes from QueueSemaphore.java. This spelling mistake has been fixed already in master.

    It is nothing you should be worried about, the state of the library is cleaned up correctly. It happened because your DescriptorWriteOperation was blocking the semaphore when it was "abruptly interrupted" by a disconnect operation.