11package streams
22
3+ import org.neo4j.kernel.AvailabilityGuard
34import org.neo4j.kernel.configuration.Config
45import org.neo4j.kernel.extension.ExtensionType
56import org.neo4j.kernel.extension.KernelExtensionFactory
@@ -17,18 +18,20 @@ class StreamsExtensionFactory : KernelExtensionFactory<StreamsExtensionFactory.D
1718 val configuration = dependencies.config()
1819 val streamHandler = StreamsEventRouterFactory .getStreamsEventRouter(log, configuration)
1920 val streamsEventRouterConfiguration = StreamsEventRouterConfiguration .from(configuration.raw)
20- return StreamsEventRouterLifecycle (db, streamHandler, streamsEventRouterConfiguration, log)
21+ return StreamsEventRouterLifecycle (db, streamHandler, streamsEventRouterConfiguration, dependencies.availabilityGuard(), log)
2122 }
2223
2324 interface Dependencies {
2425 fun graphdatabaseAPI (): GraphDatabaseAPI
2526 fun log (): LogService
2627 fun config (): Config
28+ fun availabilityGuard (): AvailabilityGuard
2729 }
2830}
2931
3032class StreamsEventRouterLifecycle (val db : GraphDatabaseAPI , val streamHandler : StreamsEventRouter ,
3133 val streamsEventRouterConfiguration : StreamsEventRouterConfiguration ,
34+ private val availabilityGuard : AvailabilityGuard ,
3235 private val log : LogService ): LifecycleAdapter() {
3336 private val streamsLog = log.getUserLog(StreamsEventRouterLifecycle ::class .java)
3437 private lateinit var txHandler: StreamsTransactionEventHandler
@@ -53,6 +56,13 @@ class StreamsEventRouterLifecycle(val db: GraphDatabaseAPI, val streamHandler: S
5356 streamsConstraintsService = StreamsConstraintsService (db, streamsEventRouterConfiguration.schemaPollingInterval)
5457 txHandler = StreamsTransactionEventHandler (streamHandler, streamsConstraintsService, streamsEventRouterConfiguration)
5558 db.registerTransactionEventHandler(txHandler)
59+ availabilityGuard.addListener(object : AvailabilityGuard .AvailabilityListener {
60+ override fun unavailable () {}
61+
62+ override fun available () {
63+ streamsConstraintsService.start()
64+ }
65+ })
5666 }
5767 }
5868
0 commit comments