Skip to content

Commit 2ccb524

Browse files
falhassenglide-copybara-robot
authored andcommitted
Rolling SingleRequest.clear lock fix due to triggering a different ANR.
PiperOrigin-RevId: 818023760
1 parent 603357c commit 2ccb524

File tree

5 files changed

+3
-34
lines changed

5 files changed

+3
-34
lines changed

instrumentation/src/androidTest/java/com/bumptech/glide/MultiRequestTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ public void thumbnail_onResourceReady_forPrimary_isComplete_whenRequestListenerI
5353
Glide.init(
5454
context,
5555
new GlideBuilder()
56-
.setSourceExecutor(GlideExecutor.newSourceBuilder().setThreadCount(1).build())
57-
.setFixSingleRequestClearDeadlock(true));
56+
.setSourceExecutor(GlideExecutor.newSourceBuilder().setThreadCount(1).build()));
5857

5958
AtomicBoolean isPrimaryRequestComplete = new AtomicBoolean(false);
6059
CountDownLatch countDownLatch = new CountDownLatch(1);

instrumentation/src/androidTest/java/com/bumptech/glide/RequestTest.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,7 @@ public void setUp() {
5050
// Some emulators only have a single resize thread, so waiting on a latch will block them
5151
// forever.
5252
Glide.init(
53-
context,
54-
new GlideBuilder()
55-
.setSourceExecutor(GlideExecutor.newUnlimitedSourceExecutor())
56-
.setFixSingleRequestClearDeadlock(true));
53+
context, new GlideBuilder().setSourceExecutor(GlideExecutor.newUnlimitedSourceExecutor()));
5754
}
5855

5956
@Test

library/src/main/java/com/bumptech/glide/GlideBuilder.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -539,19 +539,6 @@ public GlideBuilder setDisableHardwareBitmapsOnO(boolean disableHardwareBitmapsO
539539
return this;
540540
}
541541

542-
/**
543-
* Fix single request clear deadlock mentioned in <a
544-
* href="https://github.com/bumptech/glide/issues/5617">#5617</a>.
545-
*
546-
* <p>This flag changes {@link com.bumptech.glide.request.SingleRequest} to lock on underlying
547-
* {@link Engine} to avoid deadlocks in calling code that also requires a lock on the {@link
548-
* Engine}.
549-
*/
550-
public GlideBuilder setFixSingleRequestClearDeadlock(boolean isEnabled) {
551-
glideExperimentsBuilder.update(new FixSingleRequestClearDeadlock(), isEnabled);
552-
return this;
553-
}
554-
555542
void setRequestManagerFactory(@Nullable RequestManagerFactory factory) {
556543
this.requestManagerFactory = factory;
557544
}
@@ -666,7 +653,4 @@ public static final class OverrideGlideThreadPriority implements Experiment {}
666653

667654
/** See {@link #setUseMediaStoreOpenFileApisIfPossible(boolean)}. */
668655
public static final class UseMediaStoreOpenFileApisIfPossible implements Experiment {}
669-
670-
/** See {@link #setFixSingleRequestClearDeadlock(boolean)}. */
671-
public static final class FixSingleRequestClearDeadlock implements Experiment {}
672656
}

library/src/main/java/com/bumptech/glide/RequestBuilder.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import androidx.annotation.NonNull;
1717
import androidx.annotation.Nullable;
1818
import androidx.annotation.RawRes;
19-
import com.bumptech.glide.GlideBuilder.FixSingleRequestClearDeadlock;
2019
import com.bumptech.glide.load.DataSource;
2120
import com.bumptech.glide.load.Transformation;
2221
import com.bumptech.glide.load.engine.DiskCacheStrategy;
@@ -69,7 +68,6 @@ public class RequestBuilder<TranscodeType> extends BaseRequestOptions<RequestBui
6968
private final Class<TranscodeType> transcodeClass;
7069
private final Glide glide;
7170
private final GlideContext glideContext;
72-
private final GlideExperiments experiments;
7371

7472
@NonNull
7573
@SuppressWarnings("unchecked")
@@ -101,7 +99,6 @@ protected RequestBuilder(
10199
this.context = context;
102100
this.transitionOptions = requestManager.getDefaultTransitionOptions(transcodeClass);
103101
this.glideContext = glide.getGlideContext();
104-
this.experiments = glide.getGlideContext().getExperiments();
105102

106103
initRequestListeners(requestManager.getDefaultRequestListeners());
107104
apply(requestManager.getDefaultRequestOptions());
@@ -1169,13 +1166,8 @@ private Request buildRequest(
11691166
@Nullable RequestListener<TranscodeType> targetListener,
11701167
BaseRequestOptions<?> requestOptions,
11711168
Executor callbackExecutor) {
1172-
GlideExperiments experiments = glideContext.getExperiments();
1173-
Object requestLock =
1174-
glideContext.getExperiments().isEnabled(FixSingleRequestClearDeadlock.class)
1175-
? glideContext.getEngine()
1176-
: new Object();
11771169
return buildRequestRecursive(
1178-
requestLock,
1170+
/* requestLock= */ new Object(),
11791171
target,
11801172
targetListener,
11811173
/* parentCoordinator= */ null,

library/test/src/test/java/com/bumptech/glide/request/SingleRequestTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import android.graphics.drawable.Drawable;
2424
import androidx.annotation.NonNull;
2525
import androidx.annotation.Nullable;
26-
import com.bumptech.glide.GlideBuilder.FixSingleRequestClearDeadlock;
2726
import com.bumptech.glide.GlideContext;
2827
import com.bumptech.glide.GlideExperiments;
2928
import com.bumptech.glide.Priority;
@@ -1072,8 +1071,6 @@ static final class SingleRequestBuilder {
10721071
private final Map<Class<?>, Transformation<?>> transformations = new HashMap<>();
10731072

10741073
SingleRequestBuilder() {
1075-
GlideExperiments glideExperiments = mock(GlideExperiments.class);
1076-
when(glideExperiments.isEnabled(FixSingleRequestClearDeadlock.class)).thenReturn(true);
10771074
when(glideContext.getExperiments()).thenReturn(mock(GlideExperiments.class));
10781075
when(requestCoordinator.getRoot()).thenReturn(requestCoordinator);
10791076
when(requestCoordinator.canSetImage(any(Request.class))).thenReturn(true);

0 commit comments

Comments
 (0)