Possibly blocking call in non-blocking context
Reports thread-blocking method calls in code fragments where threads should not be blocked.
Example (Project Reactor):
Flux.just("1").flatMap(f -> {
Flux<String> just = loadUsersFromDatabase();
just.toIterable(); // Error: blocking operator call in non-blocking scope
return just;
}
);
Consider running blocking code with a proper scheduler, for example Schedulers.boundedElastic()
, or try to find an alternative non-blocking API.
Example (Kotlin Coroutines):
suspend fun exampleFun() {
Thread.sleep(100); // Error: blocking method call inside suspend function
}
Consider running blocking code with a special dispatcher, for example Dispatchers.IO
, or try to find an alternative non-blocking API.
- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
BlockingMethodInNonBlockingContext
Configure the inspection:
In the Blocking Annotations list, specify annotations that mark thread-blocking methods.
In the Non-Blocking Annotations list, specify annotations that mark non-blocking methods.
Specified annotations can be used as External Annotations
Here you can find the description of settings available for the Possibly blocking call in non-blocking context inspection, and the reference of their default values.
Inspection Details | |
---|---|
By default bundled with: | |
Can be installed with plugin: | Java, 243.23126 |
Thanks for your feedback!