diff --git a/src/org/jgroups/JChannel.java b/src/org/jgroups/JChannel.java index d4d039b632..9dd07bf3f4 100644 --- a/src/org/jgroups/JChannel.java +++ b/src/org/jgroups/JChannel.java @@ -930,16 +930,17 @@ 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) @@ -947,16 +948,16 @@ protected JChannel setAddress() { 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)) { diff --git a/src/org/jgroups/protocols/relay/RELAY2.java b/src/org/jgroups/protocols/relay/RELAY2.java index 48c51e4285..f77f80a464 100644 --- a/src/org/jgroups/protocols/relay/RELAY2.java +++ b/src/org/jgroups/protocols/relay/RELAY2.java @@ -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; @@ -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(); diff --git a/src/org/jgroups/protocols/relay/Relayer.java b/src/org/jgroups/protocols/relay/Relayer.java index 311340fffc..bce515dd24 100644 --- a/src/org/jgroups/protocols/relay/Relayer.java +++ b/src/org/jgroups/protocols/relay/Relayer.java @@ -75,7 +75,14 @@ public void start(RelayConfig.SiteConfig site_cfg, String bridge_name, final Str List 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) diff --git a/src/org/jgroups/stack/AddressGenerator.java b/src/org/jgroups/stack/AddressGenerator.java index 66259c4dcd..7afeb84760 100644 --- a/src/org/jgroups/stack/AddressGenerator.java +++ b/src/org/jgroups/stack/AddressGenerator.java @@ -8,5 +8,9 @@ * @since 2.12 */ public interface AddressGenerator { + @Deprecated(since="5.2.15") Address generateAddress(); + default Address generateAddress(String name) { + return generateAddress(); + } }