Experiencing an issue with ScheduledExecutorService alongside VT

Yuval Lombard yuval.l at securithings.com
Sun Jul 21 07:05:44 UTC 2024


Hey team

We are experiencing some weird halting issues when scheduling tasks with
ScheduledExecutorService and VT.

We are observing some near deadlock issues / halting of executors which we
are not able to reproduce when using platform threads

This is one example of a near deadlock situation, where for some reason
virtual threads are starting to execute a task, and not reaching the
finally block nor the catch Throwable block to release the acquired
semaphore permit, reaching to drained semaphore.

Are you familiar with this behavior? I hope we are doing something wrong 😅

Note - The scheduler is running on a platform thread

```ScheduledFuture<?> deviceFutureTask = scheduler.scheduleAtFixedRate(()
-> {

try {

logger.debug("[{}] Trying to acquire permit to schedule task [{}] for
device. Number of available permits: [{}]",

device, task, semaphore.availablePermits());

if (semaphore.tryAcquire(waitingTimeout, TimeUnit.MILLISECONDS)) {

logger.debug("[{}] Acquired permit to schedule [{}] task for device",
device, task);

Thread.ofVirtual().start(() -> {

try {

logger.debug("[{}] Scheduling [{}] task for device", device, task);

// some I/O intensive work

logger.debug("[{}] Finished processing [{}] task for device", device, task);

} catch (Exception e) {

logger.error("[{}] Failed to process [{}] task for device", device, task,
e);

} finally {

semaphore.release();

}

});

} else {

logger.error("Timed out while waiting for permit to schedule task [{}] for
device [{}]", task, device);

}

} catch (Throwable t) {

logger.error("Failed to execute task [{}] for device [{}]", task, deviceId,
t);

semaphore.release();

}

}, (long) (entropy * schedulingInterval), schedulingInterval, TimeUnit.
MILLISECONDS);```


We are
-- 

Kind regards,

*Yuval Lombard*

*Lead Software Engineer*

+972.50.548.0111

yuval.l at securithings.com

[image: logo_black.png]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240721/f0ff250c/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: logo_black.png
Type: image/png
Size: 99833 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/loom-dev/attachments/20240721/f0ff250c/logo_black-0001.png>


More information about the loom-dev mailing list