Make webserver reconnect to rebooted node. (#662)

This commit is contained in:
Andrzej Cichocki
2017-05-12 10:27:27 +01:00
committed by GitHub
parent 8cb7c5eab1
commit 1df29ab06f
5 changed files with 58 additions and 2 deletions

View File

@ -381,6 +381,28 @@ class ShutdownManager(private val executorService: ExecutorService) {
}
registerShutdown(processShutdown)
}
interface Follower {
fun unfollow()
fun shutdown()
}
fun follower() = object : Follower {
private val start = state.locked { registeredShutdowns.size }
private val end = AtomicInteger(start - 1)
override fun unfollow() = end.set(state.locked { registeredShutdowns.size })
override fun shutdown() = end.get().let { end ->
start > end && throw IllegalStateException("You haven't called unfollow.")
state.locked {
registeredShutdowns.subList(start, end).listIterator(end - start).run {
while (hasPrevious()) {
previous().getOrThrow().invoke()
set(Futures.immediateFuture {}) // Don't break other followers by doing a remove.
}
}
}
}
}
}
class DriverDSL(