Glide Compose: java.lang.IllegalArgumentException caused by sideEffect run asynchronously
- Dominant language
- Java
- Stars
- 35k
- Forks
- 6.2k
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 8
Description
The GlideNode call to reproduce the bug:
->1st onNewReuest
-> invalidateDraw
-> onAttach
-> launchRequest(schedule 1st sideEffect)
-> 2nd onNewRequest(requestBuilder not changed but loadingPlaceholder or errorPlaceholder changed -> restartLoad=true)
-> launchRequest(schedule 2nd sideEffect)
-> 1st sideEffect run and (currentJob=newValue)
-> 2nd sideEffect run (requestBuilder not changed) but Preconditions.checkArgument(currentJob == null) throw java.lang.IllegalArgumentException
e.g:
```kotlin
val placeholderPair = remember(loadingPainter, failurePainter) {
placeholder(loadingPainter) to placeholder(failurePainter)
}
val switch = Random.nextBoolean()
GlideImage(
model = url,
contentDescription = url,
contentScale = ContentScale.FillWidth,
loading = if (!switch) placeholderPair.first else placeholderPair.second,
failure = if (!switch) placeholderPair.second else placeholderPair.first,
modifier = modifier
.fillMaxWidth()
.aspectRatio(1f)
)
```
Contributor guide
Assessment
This issue has not been assessed yet.