Skip to content

Commit 49eedfe

Browse files
committed
Shutdown ExecutorService instances on post test
* Stalling would happen on stopAllOSThreads() where it would continue to try to call interrupt() on a OS_PENDING_EXECUTOR_ thread over and over. The thread can't be interrupted as an Android ExecutorService will catch it. * Added a shutdownNow() call to OSTaskController that tests can run to correctly shutdown the pending tasks so it's thread can be stopped.
1 parent d5896d3 commit 49eedfe

File tree

4 files changed

+17
-0
lines changed

4 files changed

+17
-0
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OSTaskController.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@ ConcurrentLinkedQueue<Runnable> getTaskQueueWaitingForInit() {
105105
return taskQueueWaitingForInit;
106106
}
107107

108+
void shutdownNow() {
109+
if (pendingTaskExecutor != null) {
110+
pendingTaskExecutor.shutdownNow();
111+
}
112+
}
113+
108114
private static class PendingTaskRunnable implements Runnable {
109115
private OSTaskController controller;
110116
private Runnable innerTask;

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3167,6 +3167,10 @@ static OSTaskController getTaskRemoteController() {
31673167
return taskRemoteController;
31683168
}
31693169

3170+
static OSTaskController getTaskController() {
3171+
return taskController;
3172+
}
3173+
31703174
static FocusTimeController getFocusTimeController() {
31713175
return focusTimeController;
31723176
}

OneSignalSDK/unittest/src/test/java/com/onesignal/OneSignalPackagePrivateHelper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,11 @@ public static ConcurrentLinkedQueue<Runnable> OneSignal_taskQueueWaitingForInit(
271271
return OneSignal.getTaskRemoteController().getTaskQueueWaitingForInit();
272272
}
273273

274+
public static void OneSignal_OSTaskController_ShutdownNow() {
275+
OneSignal.getTaskRemoteController().shutdownNow();
276+
OneSignal.getTaskController().shutdownNow();
277+
}
278+
274279
public static boolean OneSignal_requiresUserPrivacyConsent() {
275280
return OneSignal.requiresUserPrivacyConsent();
276281
}

OneSignalSDK/unittest/src/test/java/com/test/onesignal/TestHelpers.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import java.util.Set;
7474

7575
import static com.onesignal.OneSignalPackagePrivateHelper.JSONUtils;
76+
import static com.onesignal.OneSignalPackagePrivateHelper.OneSignal_OSTaskController_ShutdownNow;
7677
import static junit.framework.Assert.assertEquals;
7778
import static org.robolectric.Shadows.shadowOf;
7879

@@ -136,6 +137,7 @@ static void beforeTestInitAndCleanup() throws Exception {
136137

137138
public static void afterTestCleanup() throws Exception {
138139
try {
140+
OneSignal_OSTaskController_ShutdownNow();
139141
stopAllOSThreads();
140142
} catch (Exception e) {
141143
e.printStackTrace();

0 commit comments

Comments
 (0)