Gilles Barbier·Follow1 min read·Dec 1, 2020--ListenShareThx for this amazing article. I've found another solution to this deadlock, which is simply to send message asynchronously from workers (code: https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS4zLjExIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJmb2xkZWRCdXR0b24iOnRydWUsInJlYWRPbmx5IjpmYWxzZSwiY29kZSI6ImltcG9ydCBrb3RsaW54LmNvcm91dGluZXMuKlxuaW1wb3J0IGtvdGxpbnguY29yb3V0aW5lcy5jaGFubmVscy4qXG5pbXBvcnQga290bGlueC5jb3JvdXRpbmVzLnNlbGVjdHMuKlxuaW1wb3J0IGphdmEudGV4dC4qXG5pbXBvcnQgamF2YS51dGlsLipcblxuZGF0YSBjbGFzcyBSZWZlcmVuY2UodmFsIGluZGV4OiBJbnQpXG5kYXRhIGNsYXNzIExvY2F0aW9uKHZhbCBpbmRleDogSW50KVxuZGF0YSBjbGFzcyBDb250ZW50KHZhbCBpbmRleDogSW50KVxuZGF0YSBjbGFzcyBMb2NDb250ZW50KHZhbCBsb2M6IExvY2F0aW9uLCB2YWwgY29udGVudDogQ29udGVudClcblxuZnVuIFJlZmVyZW5jZS5yZXNvbHZlTG9jYXRpb24oKTogTG9jYXRpb24ge1xuICAgIGxvZyhcIlJlc29sdmluZyBsb2NhdGlvbiBmb3IgJHRoaXNcIilcbiAgICByZXR1cm4gTG9jYXRpb24oaW5kZXgpXG59XG5cbnN1c3BlbmQgZnVuIGRvd25sb2FkQ29udGVudChsb2M6IExvY2F0aW9uKTogQ29udGVudCB7XG4gICAgbG9nKFwiRG93bmxvYWRpbmcgJGxvY1wiKVxuICAgIGRlbGF5KDEwKVxuICAgIHJldHVybiBDb250ZW50KGxvYy5pbmRleClcbn1cblxuZnVuIHByb2Nlc3NDb250ZW50KHJlZjogUmVmZXJlbmNlLCBjb250ZW50OiBDb250ZW50KSB7XG4gICAgbG9nKFwiUHJvY2Vzc2luZyAkcmVmICRjb250ZW50XCIpXG59XG5cbnByaXZhdGUgZnVuIGxvZyhtc2c6IFN0cmluZykge1xuICAgIHZhbCB0aW1lID0gU2ltcGxlRGF0ZUZvcm1hdChcIkhIOm1tOnNzLnNzc1wiKS5mb3JtYXQoRGF0ZSgpKVxuICAgIHByaW50bG4oXCIkdGltZSBbJHtUaHJlYWQuY3VycmVudFRocmVhZCgpLm5hbWV9XSAkbXNnXCIpXG59XG5cbnByaXZhdGUgY29uc3QgdmFsIE5fV09SS0VSUyA9IDRcblxucHJpdmF0ZSBmdW4gQ29yb3V0aW5lU2NvcGUuZG93bmxvYWRlcihcbiAgICByZWZlcmVuY2VzOiBSZWNlaXZlQ2hhbm5lbDxSZWZlcmVuY2U+LFxuICAgIGxvY2F0aW9uczogU2VuZENoYW5uZWw8TG9jYXRpb24+LFxuICAgIGNvbnRlbnRzOiBSZWNlaXZlQ2hhbm5lbDxMb2NDb250ZW50PlxuKSA9IGxhdW5jaCB7XG4gICAgdmFsIHJlcXVlc3RlZCA9IG11dGFibGVNYXBPZjxMb2NhdGlvbiwgTXV0YWJsZUxpc3Q8UmVmZXJlbmNlPj4oKVxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHNlbGVjdDxVbml0PiB7XG4gICAgICAgICAgICByZWZlcmVuY2VzLm9uUmVjZWl2ZSB7IHJlZiAtPlxuICAgICAgICAgICAgICAgIHZhbCBsb2MgPSByZWYucmVzb2x2ZUxvY2F0aW9uKClcbiAgICAgICAgICAgICAgICB2YWwgcmVmcyA9IHJlcXVlc3RlZFtsb2NdXG4gICAgICAgICAgICAgICAgaWYgKHJlZnMgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ZWRbbG9jXSA9IG11dGFibGVMaXN0T2YocmVmKVxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnMuc2VuZChsb2MpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmcy5hZGQocmVmKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRlbnRzLm9uUmVjZWl2ZSB7IChsb2MsIGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgdmFsIHJlZnMgPSByZXF1ZXN0ZWQucmVtb3ZlKGxvYykhIVxuICAgICAgICAgICAgICAgIGZvciAocmVmIGluIHJlZnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbnRlbnQocmVmLCBjb250ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxucHJpdmF0ZSBmdW4gQ29yb3V0aW5lU2NvcGUud29ya2VyKFxuICAgIGxvY2F0aW9uczogUmVjZWl2ZUNoYW5uZWw8TG9jYXRpb24+LFxuICAgIGNvbnRlbnRzOiBTZW5kQ2hhbm5lbDxMb2NDb250ZW50PlxuKSA9IGxhdW5jaCB7XG4gICAgZm9yIChsb2MgaW4gbG9jYXRpb25zKSB7XG4gICAgICAgIHZhbCBjb250ZW50ID0gZG93bmxvYWRDb250ZW50KGxvYylcbiAgICAgICAgbGF1bmNoIHtcbiAgICAgICAgICAgIGNvbnRlbnRzLnNlbmQoTG9jQ29udGVudChsb2MsIGNvbnRlbnQpKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5wcml2YXRlIGZ1biBDb3JvdXRpbmVTY29wZS5wcm9jZXNzUmVmZXJlbmNlcyhcbiAgICByZWZlcmVuY2VzOiBSZWNlaXZlQ2hhbm5lbDxSZWZlcmVuY2U+XG4pIHtcbiAgICB2YWwgbG9jYXRpb25zID0gQ2hhbm5lbDxMb2NhdGlvbj4oKVxuICAgIHZhbCBjb250ZW50cyA9IENoYW5uZWw8TG9jQ29udGVudD4oKVxuICAgIHJlcGVhdChOX1dPUktFUlMpIHsgd29ya2VyKGxvY2F0aW9ucywgY29udGVudHMpIH1cbiAgICBkb3dubG9hZGVyKHJlZmVyZW5jZXMsIGxvY2F0aW9ucywgY29udGVudHMpXG59XG5cbmZ1biBtYWluKCkgPSBydW5CbG9ja2luZyB7XG4gICAgd2l0aFRpbWVvdXQoMzAwMCkge1xuICAgICAgICB2YWwgcmVmZXJlbmNlcyA9IENoYW5uZWw8UmVmZXJlbmNlPigpXG4gICAgICAgIHByb2Nlc3NSZWZlcmVuY2VzKHJlZmVyZW5jZXMpXG4gICAgICAgIGZvciAoaW5kZXggaW4gMS4uMTAwKSAge1xuICAgICAgICAgICAgcmVmZXJlbmNlcy5zZW5kKFJlZmVyZW5jZShpbmRleCkpXG4gICAgICAgIH1cbiAgICB9XG59IiwidG8iOiI5MCIsImZyb20iOiI4MSJ9)