mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
log: set distinct thread names to enhance logging of race conditions
This commit is contained in:
+3
-1
@@ -31,6 +31,7 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
|
||||
@@ -50,6 +51,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper;
|
||||
*/
|
||||
public final class GBScanEventProcessor implements Runnable {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GBScanEventProcessor.class);
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private static final ParcelUuid ZERO_UUID = ParcelUuid.fromString("00000000-0000-0000-0000-000000000000");
|
||||
|
||||
@@ -97,7 +99,7 @@ public final class GBScanEventProcessor implements Runnable {
|
||||
}
|
||||
|
||||
running = true;
|
||||
thread = new Thread("Gadgetbridge Device Found Processor Thread") {
|
||||
thread = new Thread("GBScanEventProcessor_" + THREAD_COUNTER.getAndIncrement()) {
|
||||
@Override
|
||||
public void run() {
|
||||
GBScanEventProcessor.this.run();
|
||||
|
||||
+4
-1
@@ -41,6 +41,7 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.IdentityHashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity;
|
||||
@@ -50,6 +51,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
import static android.view.View.GONE;
|
||||
|
||||
public class QHybridAppChoserActivity extends AbstractGBActivity {
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
boolean hasControl = false;
|
||||
|
||||
private PackageConfigHelper helper;
|
||||
@@ -91,7 +94,7 @@ public class QHybridAppChoserActivity extends AbstractGBActivity {
|
||||
}
|
||||
});
|
||||
}
|
||||
}).start();
|
||||
}, "QHybridAppChoserActivity_" + THREAD_COUNTER.getAndIncrement()).start();
|
||||
appList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
|
||||
@@ -35,6 +35,7 @@ import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
@@ -43,6 +44,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
|
||||
public final class BtBRQueue {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(BtBRQueue.class);
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
public static final int HANDLER_SUBJECT_CONNECT = 0;
|
||||
public static final int HANDLER_SUBJECT_PERFORM_TRANSACTION = 1;
|
||||
|
||||
@@ -58,9 +60,9 @@ public final class BtBRQueue {
|
||||
private final int mBufferSize;
|
||||
|
||||
private final Handler mWriteHandler;
|
||||
private final HandlerThread mWriteHandlerThread = new HandlerThread("Write Thread", Process.THREAD_PRIORITY_BACKGROUND);
|
||||
private final HandlerThread mWriteHandlerThread = new HandlerThread("BtBRQueue_write_" + THREAD_COUNTER.getAndIncrement(), Process.THREAD_PRIORITY_BACKGROUND);
|
||||
|
||||
private Thread readThread = new Thread("Read Thread") {
|
||||
private Thread readThread = new Thread("BtBRQueue_read_" + THREAD_COUNTER.getAndIncrement()) {
|
||||
@Override
|
||||
public void run() {
|
||||
final byte[] buffer = new byte[mBufferSize];
|
||||
|
||||
@@ -47,6 +47,7 @@ import java.util.Set;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.Logging;
|
||||
@@ -62,6 +63,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WriteAction;
|
||||
public final class BtLEQueue {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(BtLEQueue.class);
|
||||
private static final byte[] EMPTY = new byte[0];
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private final Object mGattMonitor;
|
||||
private final GBDevice mGbDevice;
|
||||
@@ -88,7 +90,7 @@ public final class BtLEQueue {
|
||||
private final boolean mImplicitGattCallbackModify;
|
||||
private final boolean mSendWriteRequestResponse;
|
||||
|
||||
private Thread dispatchThread = new Thread("Gadgetbridge GATT Dispatcher") {
|
||||
private Thread dispatchThread = new Thread("BtLEQueue_" + THREAD_COUNTER.getAndIncrement()) {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
+4
-1
@@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventBatteryInfo;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
@@ -47,6 +48,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.protobuf.messagefields.StringMe
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.protobuf.messagefields.VarintMessageField;
|
||||
|
||||
public class FlipperZeroSupport extends FlipperZeroBaseSupport{
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private BatteryInfoProfile batteryInfoProfile = new BatteryInfoProfile(this);
|
||||
|
||||
private final String UUID_SERIAL_SERVICE = "8fe5b3d5-2e7f-4a98-2a48-7acc60fe0000";
|
||||
@@ -74,7 +77,7 @@ public class FlipperZeroSupport extends FlipperZeroBaseSupport{
|
||||
handlePlaySubGHZ(intent);
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}, "FlipperZeroSupport_" + THREAD_COUNTER.getAndIncrement()).start();
|
||||
}
|
||||
};
|
||||
boolean recevierRegistered = false;
|
||||
|
||||
+3
-1
@@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
|
||||
@@ -17,6 +18,7 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
|
||||
public class FitAsyncProcessor {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(FitAsyncProcessor.class);
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private final Context context;
|
||||
private final GBDevice gbDevice;
|
||||
@@ -67,7 +69,7 @@ public class FitAsyncProcessor {
|
||||
}
|
||||
|
||||
FitAsyncProcessor.this.handler.post(callback::onFinish);
|
||||
}).start();
|
||||
}, "FitAsyncProcessor_" + THREAD_COUNTER.getAndIncrement()).start();
|
||||
}
|
||||
|
||||
public interface Callback {
|
||||
|
||||
+3
-1
@@ -36,6 +36,7 @@ import java.security.MessageDigest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
@@ -58,6 +59,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.UriHelper;
|
||||
|
||||
public class HuaweiOTAManager {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(HuaweiOTAManager.class);
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
public static class UploadInfo {
|
||||
public int waitTimeout;
|
||||
@@ -279,7 +281,7 @@ public class HuaweiOTAManager {
|
||||
sendMessage(3, null);
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
}, "HuaweiOTAManager_" + THREAD_COUNTER.getAndIncrement()).start();
|
||||
}
|
||||
|
||||
private short calculateFwFileId() throws Exception {
|
||||
|
||||
+3
-1
@@ -18,6 +18,7 @@ import java.nio.ByteOrder;
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.devicesettings.DeviceSettingsPreferenceConst;
|
||||
@@ -30,6 +31,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.idasen.IdasenConstants;
|
||||
|
||||
public class IdasenDeviceSupport extends AbstractBTLESingleDeviceSupport {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(IdasenDeviceSupport.class);
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
public static final String COMMAND_UP = "nodomain.freeyourgadget.gadgetbridge.idasen.command.UP";
|
||||
public static final String COMMAND_DOWN = "nodomain.freeyourgadget.gadgetbridge.idasen.command.DOWN";
|
||||
@@ -108,7 +110,7 @@ public class IdasenDeviceSupport extends AbstractBTLESingleDeviceSupport {
|
||||
if (cutOff == 0) {
|
||||
LOG.warn("desk controller did not reach the desired height in time");
|
||||
}
|
||||
}).start();
|
||||
}, "IdasenDeviceSupport_" + THREAD_COUNTER.getAndIncrement()).start();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
+8
-1
@@ -27,12 +27,15 @@ import org.slf4j.LoggerFactory;
|
||||
import java.io.IOException;
|
||||
import java.io.PipedInputStream;
|
||||
import java.io.PipedOutputStream;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
|
||||
public class PebbleLESupport {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(PebbleLESupport.class);
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private final GBDevice mgbDevice;
|
||||
private final BluetoothDevice mBtDevice;
|
||||
private PipeReader mPipeReader;
|
||||
@@ -59,7 +62,7 @@ public class PebbleLESupport {
|
||||
LOG.warn("could not connect input stream");
|
||||
}
|
||||
|
||||
mWriteHandlerThread = new HandlerThread("write handler thread");
|
||||
mWriteHandlerThread = new HandlerThread("PebbleLESupport_write_" + THREAD_COUNTER.getAndIncrement());
|
||||
mWriteHandlerThread.start();
|
||||
mWriteHandler = new Handler(mWriteHandlerThread.getLooper());
|
||||
|
||||
@@ -201,6 +204,10 @@ public class PebbleLESupport {
|
||||
private class PipeReader extends Thread {
|
||||
int mmSequence = 0;
|
||||
|
||||
PipeReader(){
|
||||
super("PebbleLESupport_read_" + THREAD_COUNTER.getAndIncrement());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
byte[] buf = new byte[8192];
|
||||
|
||||
+4
-1
@@ -46,6 +46,7 @@ import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.BuildConfig;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
@@ -94,6 +95,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.UriHelper;
|
||||
|
||||
public class FossilWatchAdapter extends WatchAdapter {
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private ArrayList<Request> requestQueue = new ArrayList<>();
|
||||
|
||||
protected FossilRequest fossilRequest;
|
||||
@@ -130,7 +133,7 @@ public class FossilWatchAdapter extends WatchAdapter {
|
||||
timeoutHandler = new Handler(timeoutLooper);
|
||||
Looper.loop();
|
||||
}
|
||||
});
|
||||
}, "FossilWatchAdapter_" + THREAD_COUNTER.getAndIncrement());
|
||||
|
||||
private Runnable requestTimeoutRunnable = new Runnable() {
|
||||
@Override
|
||||
|
||||
+3
-1
@@ -38,6 +38,7 @@ import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventUpdatePreferences;
|
||||
@@ -77,6 +78,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
|
||||
public class XiaomiSupport extends AbstractDeviceSupport {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(XiaomiSupport.class);
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
private final XiaomiAuthService authService = new XiaomiAuthService(this);
|
||||
private final XiaomiMusicService musicService = new XiaomiMusicService(this);
|
||||
@@ -552,7 +554,7 @@ public class XiaomiSupport extends AbstractDeviceSupport {
|
||||
GB.updateTransferNotification("", "", false, 100, getContext());
|
||||
GB.signalActivityDataFinish(getDevice());
|
||||
});
|
||||
}).start();
|
||||
}, "XiaomiSupport_" + THREAD_COUNTER.getAndIncrement()).start();
|
||||
}
|
||||
|
||||
public void setFeatureSupported(final String featureKey, final boolean supported) {
|
||||
|
||||
+5
@@ -18,13 +18,18 @@ package nodomain.freeyourgadget.gadgetbridge.service.serial;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
|
||||
public abstract class GBDeviceIoThread extends Thread {
|
||||
private static final AtomicLong THREAD_COUNTER = new AtomicLong(0L);
|
||||
|
||||
protected final GBDevice gbDevice;
|
||||
private final Context context;
|
||||
|
||||
public GBDeviceIoThread(GBDevice gbDevice, Context context) {
|
||||
super("GBDeviceIoThread_" + THREAD_COUNTER.getAndIncrement());
|
||||
this.gbDevice = gbDevice;
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user