Skip to content

Commit

Permalink
ns
Browse files Browse the repository at this point in the history
  • Loading branch information
belaban committed Jun 29, 2023
1 parent 150b930 commit b7f40ad
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 13 deletions.
15 changes: 8 additions & 7 deletions src/org/jgroups/JChannel.java
Original file line number Diff line number Diff line change
Expand Up @@ -930,33 +930,34 @@ protected JChannel startStack(String cluster_name) throws Exception {
* a SET_LOCAL_ADDRESS
*/
protected JChannel setAddress() {
Address old_addr=local_addr;
local_addr=generateAddress();
if(old_addr != null)
down(new Event(Event.REMOVE_ADDRESS, old_addr));
if(name == null || name.isEmpty()) // generate a logical name if not set
name=Util.generateLocalName();
Address old_addr=local_addr;
local_addr=generateAddress(name);
if(name != null && !name.isEmpty()) {
log.info("local_addr: %s, name: %s", local_addr, name);
NameCache.add(local_addr, name);
}
if(old_addr != null)
down(new Event(Event.REMOVE_ADDRESS, old_addr));

for(Protocol p=prot_stack.getTopProtocol(); p != null; p=p.getDownProtocol())
p.setAddress(local_addr);
if(up_handler != null)
up_handler.setLocalAddress(local_addr);
return this;
}

protected Address generateAddress() {
protected Address generateAddress(String name) {
if(address_generators == null || address_generators.isEmpty())
return UUID.randomUUID();
if(address_generators.size() == 1)
return address_generators.get(0).generateAddress();
return address_generators.get(0).generateAddress(name);

// at this point we have multiple AddressGenerators installed
Address[] addrs=new Address[address_generators.size()];
for(int i=0; i < addrs.length; i++)
addrs[i]=address_generators.get(i).generateAddress();
addrs[i]=address_generators.get(i).generateAddress(name);

for(int i=0; i < addrs.length; i++) {
if(!(addrs[i] instanceof ExtendedUUID)) {
Expand Down
15 changes: 10 additions & 5 deletions src/org/jgroups/protocols/relay/RELAY2.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.jgroups.protocols.relay.Topology.MemberInfo;
import org.jgroups.protocols.relay.Topology.Members;
import org.jgroups.protocols.relay.config.RelayConfig;
import org.jgroups.stack.AddressGenerator;
import org.jgroups.stack.IpAddress;
import org.jgroups.stack.Protocol;
import org.jgroups.util.UUID;
Expand Down Expand Up @@ -326,11 +327,15 @@ else if(site_masters_ratio > 1) {
log.trace("site configuration:\n" + site_config);
if(enable_address_tagging) {
JChannel ch=getProtocolStack().getChannel();
ch.addAddressGenerator(() -> {
ExtendedUUID retval=ExtendedUUID.randomUUID();
if(can_become_site_master)
retval.setFlag(can_become_site_master_flag);
return retval;

ch.addAddressGenerator(new AddressGenerator() {
@Override public Address generateAddress() {return generateAddress(null);}
@Override public Address generateAddress(String name) {
SiteUUID uuid=new SiteUUID(UUID.randomUUID(), name, site);
if(can_become_site_master)
uuid.setFlag(can_become_site_master_flag);
return uuid;
}
});
}
prots_above=getIdsAbove();
Expand Down
9 changes: 8 additions & 1 deletion src/org/jgroups/protocols/relay/Relayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,14 @@ public void start(RelayConfig.SiteConfig site_cfg, String bridge_name, final Str
List<RelayConfig.BridgeConfig> bridge_configs=site_cfg.getBridges();
for(RelayConfig.BridgeConfig cfg: bridge_configs) {
Bridge bridge=new Bridge(cfg.createChannel(), cfg.getClusterName(), bridge_name,
() -> new SiteUUID(UUID.randomUUID(), null, my_site_id));
new AddressGenerator() {
@Override
public Address generateAddress() {return generateAddress(null);}
@Override
public Address generateAddress(String name) {
return new SiteUUID(UUID.randomUUID(), name, my_site_id);
}
});
bridges.add(bridge);
}
for(Bridge bridge: bridges)
Expand Down
4 changes: 4 additions & 0 deletions src/org/jgroups/stack/AddressGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,9 @@
* @since 2.12
*/
public interface AddressGenerator {
@Deprecated(since="5.2.15")
Address generateAddress();
default Address generateAddress(String name) {
return generateAddress();
}
}

0 comments on commit b7f40ad

Please sign in to comment.