Commit dd97b6a4 by Bartłomiej Słota

#1376 Register and cancel event sending fix

parent ba3923d7
...@@ -18,6 +18,7 @@ package org.springframework.cloud.netflix.eureka.server; ...@@ -18,6 +18,7 @@ package org.springframework.cloud.netflix.eureka.server;
import java.util.List; import java.util.List;
import com.netflix.eureka.lease.Lease;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceCanceledEvent; import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceCanceledEvent;
import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceRegisteredEvent; import org.springframework.cloud.netflix.eureka.server.event.EurekaInstanceRegisteredEvent;
...@@ -78,27 +79,23 @@ public class InstanceRegistry extends PeerAwareInstanceRegistryImpl ...@@ -78,27 +79,23 @@ public class InstanceRegistry extends PeerAwareInstanceRegistryImpl
@Override @Override
public void register(InstanceInfo info, int leaseDuration, boolean isReplication) { public void register(InstanceInfo info, int leaseDuration, boolean isReplication) {
if (log.isDebugEnabled()) { logRegistration(info, isReplication, leaseDuration);
log.debug("register " + info.getAppName() + ", vip " + info.getVIPAddress() publishEurekaInstanceRegisteredEvent(info, leaseDuration, isReplication);
+ ", leaseDuration " + leaseDuration + ", isReplication "
+ isReplication);
}
// TODO: what to publish from info (whole object?)
this.ctxt.publishEvent(new EurekaInstanceRegisteredEvent(this, info,
leaseDuration, isReplication));
super.register(info, leaseDuration, isReplication); super.register(info, leaseDuration, isReplication);
} }
@Override @Override
public boolean cancel(String appName, String serverId, boolean isReplication) { public void register(final InstanceInfo info, final boolean isReplication) {
if (log.isDebugEnabled()) { final int instanceLeaseDuration = resolveInstanceLeaseDuration(info);
log.debug("cancel " + appName + " serverId " + serverId + ", isReplication {}" logRegistration(info, isReplication, instanceLeaseDuration);
+ isReplication); publishEurekaInstanceRegisteredEvent(info, instanceLeaseDuration, isReplication);
super.register(info, isReplication);
} }
this.ctxt.publishEvent(
new EurekaInstanceCanceledEvent(this, appName, serverId, isReplication));
@Override
public boolean cancel(String appName, String serverId, boolean isReplication) {
logCancelation(appName, serverId, isReplication);
publishEurekaInstanceCanceledEvent(appName, serverId, isReplication);
return super.cancel(appName, serverId, isReplication); return super.cancel(appName, serverId, isReplication);
} }
...@@ -126,4 +123,41 @@ public class InstanceRegistry extends PeerAwareInstanceRegistryImpl ...@@ -126,4 +123,41 @@ public class InstanceRegistry extends PeerAwareInstanceRegistryImpl
} }
return super.renew(appName, serverId, isReplication); return super.renew(appName, serverId, isReplication);
} }
@Override
protected boolean internalCancel(String appName, String id, boolean isReplication) {
logCancelation(appName, id, isReplication);
publishEurekaInstanceCanceledEvent(appName, id, isReplication);
return super.internalCancel(appName, id, isReplication);
}
private void logRegistration(InstanceInfo info, boolean isReplication, int instanceLeaseDuration) {
if (log.isDebugEnabled()) {
log.debug("register " + info.getAppName() + ", vip " + info.getVIPAddress()
+ ", leaseDuration " + instanceLeaseDuration + ", isReplication " + isReplication);
}
}
private void logCancelation(String appName, String serverId, boolean isReplication) {
if (log.isDebugEnabled()) {
log.debug("cancel " + appName + " serverId " + serverId + ", isReplication " + isReplication);
}
}
private void publishEurekaInstanceRegisteredEvent(InstanceInfo info, int leaseDuration, boolean isReplication) {
// TODO: what to publish from info (whole object?)
this.ctxt.publishEvent(new EurekaInstanceRegisteredEvent(this, info, leaseDuration, isReplication));
}
private void publishEurekaInstanceCanceledEvent(String appName, String serverId, boolean isReplication) {
this.ctxt.publishEvent(new EurekaInstanceCanceledEvent(this, appName, serverId, isReplication));
}
private int resolveInstanceLeaseDuration(final InstanceInfo info) {
int leaseDuration = Lease.DEFAULT_DURATION_IN_SECS;
if (info.getLeaseInfo() != null && info.getLeaseInfo().getDurationInSecs() > 0) {
leaseDuration = info.getLeaseInfo().getDurationInSecs();
}
return leaseDuration;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment