mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-14 17:47:32 -05:00
#1419 Reduce logging from USBTunerController for (temporary) failed transfer buffer resubmits. (#1420)
Co-authored-by: Dennis Sheirer <dsheirer@github.com>
This commit is contained in:
@@ -574,7 +574,7 @@ public abstract class USBTunerController extends TunerController
|
|||||||
{
|
{
|
||||||
for(Transfer transfer: transfers)
|
for(Transfer transfer: transfers)
|
||||||
{
|
{
|
||||||
submitTransfer(transfer, LibUsb.SUCCESS, 0);
|
submitTransfer(transfer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -582,7 +582,7 @@ public abstract class USBTunerController extends TunerController
|
|||||||
* (Re)Submits the transfer for stream processing
|
* (Re)Submits the transfer for stream processing
|
||||||
* @param transfer to (re)submit
|
* @param transfer to (re)submit
|
||||||
*/
|
*/
|
||||||
private void submitTransfer(Transfer transfer, int previousStatus, int previousBytesTransferred)
|
private void submitTransfer(Transfer transfer)
|
||||||
{
|
{
|
||||||
int status = LibUsb.submitTransfer(transfer);
|
int status = LibUsb.submitTransfer(transfer);
|
||||||
|
|
||||||
@@ -599,21 +599,26 @@ public abstract class USBTunerController extends TunerController
|
|||||||
if(resubmitStatus == LibUsb.SUCCESS)
|
if(resubmitStatus == LibUsb.SUCCESS)
|
||||||
{
|
{
|
||||||
mInProgressTransfers.add(transfer);
|
mInProgressTransfers.add(transfer);
|
||||||
mLog.error("Successfully resubmitted previous error USB transfer buffer. Current transfer buffer" +
|
|
||||||
" status (error queue/total available) [" + mErrorTransfers.size() + "/" +
|
//Only log this if more than half of the total transfer buffers are in error-holding
|
||||||
mAvailableTransfers.size() + "]");
|
if(mErrorTransfers.size() >= (mAvailableTransfers.size() / 2))
|
||||||
|
{
|
||||||
|
mLog.info("Successfully resubmitted previous error USB transfer buffer. Current transfer buffer" +
|
||||||
|
" status (error queue/total available) [" + mErrorTransfers.size() + "/" +
|
||||||
|
mAvailableTransfers.size() + "]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mErrorTransfers.add(transfer);
|
mErrorTransfers.add(transfer);
|
||||||
mTransferErrorCount++;
|
mTransferErrorCount++;
|
||||||
|
|
||||||
//Only log this a few times in case we get transfer buffer(s) that are perpetually stuck in error
|
//Only log this if more than half of the total transfer buffers are in error-holding
|
||||||
if(mTransferErrorCount < mAvailableTransfers.size())
|
if(mErrorTransfers.size() >= (mAvailableTransfers.size() / 2))
|
||||||
{
|
{
|
||||||
mLog.error("Attempt to resubmit previous error USB transfer buffer failed with status [" +
|
mLog.error("Attempt to resubmit previous error USB transfer buffer failed with status [" +
|
||||||
LibUsb.errorName(resubmitStatus) + "] - this may be temporary and it has happened [" +
|
LibUsb.errorName(resubmitStatus) + "] - this may be temporary and has happened [" +
|
||||||
mTransferErrorCount + "] times so far. Transfer buffer status (error queue/total available) [" +
|
mTransferErrorCount + "] times so far. Transfer buffer holding queue (error/total) [" +
|
||||||
mErrorTransfers.size() + "/" + mAvailableTransfers.size() + "]");
|
mErrorTransfers.size() + "/" + mAvailableTransfers.size() + "]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -621,24 +626,23 @@ public abstract class USBTunerController extends TunerController
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//For ERROR_BUSY error, there is a weird issue/bug with libusb on Windows where libusb tells us the
|
|
||||||
//transfer is complete and then tells us that the transfer is already submitted when we attempt to
|
|
||||||
//re-submit the transfer. We track the number of times this occurs and log when the anomaly count
|
|
||||||
//exceeds the number of transfer buffers in case the application gets to a state where all transfers
|
|
||||||
//are no longer usable ... so that we know post-mortem what happened to the application.
|
|
||||||
|
|
||||||
mErrorTransfers.add(transfer);
|
mErrorTransfers.add(transfer);
|
||||||
mTransferErrorCount++;
|
mTransferErrorCount++;
|
||||||
mLog.error("Attempt to submit USB transfer buffer failed with status [" +
|
|
||||||
LibUsb.errorName(status) + "] - this may be temporary and it has happened [" +
|
//Only log this if more than half of the total transfer buffers are in error-holding
|
||||||
mTransferErrorCount + "] time(s) so far. Transfer buffer status (error queue/total available) [" +
|
if(mErrorTransfers.size() >= (mAvailableTransfers.size() / 2))
|
||||||
mErrorTransfers.size() + "/" + mAvailableTransfers.size() + "]");
|
{
|
||||||
|
mLog.error("Attempt to submit USB transfer buffer failed with status [" +
|
||||||
|
LibUsb.errorName(status) + "] - this may be temporary and has happened [" +
|
||||||
|
mTransferErrorCount + "] time(s) so far. Transfer buffer holding queue (error/total) [" +
|
||||||
|
mErrorTransfers.size() + "/" + mAvailableTransfers.size() + "]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mErrorTransfers.size() >= mAvailableTransfers.size())
|
if(mErrorTransfers.size() >= mAvailableTransfers.size())
|
||||||
{
|
{
|
||||||
mLog.error("Maximum USB transfer buffer errors reached - transfer buffers exhausted - shutting down USB tuner");
|
mLog.error("Maximum USB transfer buffer errors reached - transfer buffers exhausted - shutting down USB tuner");
|
||||||
ThreadPool.CACHED.submit(() -> setErrorMessage("USB Error - Transfer Buffer Errors"));
|
ThreadPool.CACHED.submit(() -> setErrorMessage("USB Error - Transfer Buffers Exhausted"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -707,7 +711,7 @@ public abstract class USBTunerController extends TunerController
|
|||||||
|
|
||||||
if(mAutoResubmitTransfers)
|
if(mAutoResubmitTransfers)
|
||||||
{
|
{
|
||||||
submitTransfer(transfer, transfer.status(), transferLength);
|
submitTransfer(transfer);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LibUsb.TRANSFER_CANCELLED:
|
case LibUsb.TRANSFER_CANCELLED:
|
||||||
|
|||||||
Reference in New Issue
Block a user