in lightning-integration/lightning-integration-jgroups/src/main/java/org/apache/directmemory/lightning/jgroups/LightningJGroupsMembershipListener.java [144:196]
private Runnable handleSplitBrainMerge( View view )
{
final List<Address> members = new ArrayList<Address>( view.getMembers() );
// Quote from JGroups documentation:
// *Note that the first member of a view is the coordinator (the one who
// emits new views).*
Address coordinator = members.get( 0 );
if ( channel.getAddress().equals( coordinator ) )
{
final ClassDefinitionContainer container = serializer.getClassDefinitionContainer();
try
{
final byte[] byteBuffer = Util.objectToByteBuffer( container );
return new Runnable()
{
@Override
public void run()
{
for ( int i = 1; i < members.size(); i++ )
{
Address receiver = members.get( i );
if ( receiver == null )
{
continue;
}
try
{
channel.send( receiver, byteBuffer );
}
catch ( Exception e )
{
throw new LightningClusterException(
"Could not send ClassDefinitionContainer to address "
+ receiver, e );
}
}
}
};
}
catch ( Exception e )
{
throw new LightningClusterException( "Could not serialize ClassDefinitionContainer", e );
}
}
return null;
}