I am curious if anyone knows about Wildfly support for JGroups JDBC_PING protocol?
We are using this for clustering to get around the problem where AWS does not support UDP broadcast. We have a clusters of 4-10 Wildfly 8 instances running in standalone mode.
What I have found is:
1. If we use datsource_jndi_name to reference a defined datasource then server startup becomes non-deterministic. There is no way to guarantee that the datasource subsystem will start up before the clustering subsystem so the app server will start properly only about half the time. While shutting down the datasource subsystem seems to always unbind first and clustering will log an exception.
2. We can use connection_url, connection_username, connection_password, and connection_driver to configure the datasource directly, but this requires us to add our datasource as a dependency in the org.jgroups module. This isn't ideal because we try to modify the shipped modules as little as possible.
What I would really like is for #1 to work.
Would it be possible to propose a feature change whereby the clustering subsystem has a dependency on the datasource subsystem if datasource_jndi_name is used?
I was hoping to figure out how to do this in the code before proposing the feature but I haven't been having much luck. I've been reading through Wildfly source for the past several weeks trying to figure out where a subsystem dependency would be defined, but I can't seem to find anything. Is this typically something a subsystem will do? Or are all the dependencies configured somewhere outside of the individual subsystems? Is there developer documentation that describes the architecture more so I can better get up to speed? I've seem some guides about developing subsystems or extensions, but nothing about how to edit and work on the ones that currently exist.
Any comments or pointers would be helpful.