Skip to content

Commit

Permalink
clean up
Browse files Browse the repository at this point in the history
  • Loading branch information
qiangdavidliu committed Mar 30, 2016
1 parent 7eef72f commit d5e5e0d
Showing 1 changed file with 12 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;

/**
* A server list updater for the {@link com.netflix.loadbalancer.DynamicServerListLoadBalancer} that
Expand Down Expand Up @@ -64,9 +63,11 @@ public static ExecutorService getDefaultRefreshExecutor() {
private final AtomicBoolean isActive = new AtomicBoolean(false);
private final AtomicLong lastUpdated = new AtomicLong(System.currentTimeMillis());
private final Provider<EurekaClient> eurekaClientProvider;
private final AtomicReference<EurekaEventListener> updateListenerRef = new AtomicReference<EurekaEventListener>();
private final ExecutorService refreshExecutor;

private volatile EurekaEventListener updateListener;
private volatile EurekaClient eurekaClient;

public EurekaNotificationServerListUpdater() {
this(new LegacyEurekaClientProvider());
}
Expand All @@ -76,23 +77,14 @@ public EurekaNotificationServerListUpdater(final Provider<EurekaClient> eurekaCl
}

public EurekaNotificationServerListUpdater(final Provider<EurekaClient> eurekaClientProvider, ExecutorService refreshExecutor) {
this.eurekaClientProvider = new Provider<EurekaClient>() {
private volatile EurekaClient eurekaClientInstance;
@Override
public synchronized EurekaClient get() {
if (eurekaClientInstance == null) {
eurekaClientInstance = eurekaClientProvider.get();
}
return eurekaClientInstance;
}
};
this.eurekaClientProvider = eurekaClientProvider;
this.refreshExecutor = refreshExecutor;
}

@Override
public synchronized void start(final UpdateAction updateAction) {
if (isActive.compareAndSet(false, true)) {
final EurekaEventListener updateListener = new EurekaEventListener() {
this.updateListener = new EurekaEventListener() {
@Override
public void onEvent(EurekaEvent event) {
if (event instanceof CacheRefreshedEvent) {
Expand All @@ -110,9 +102,11 @@ public void run() {
}
}
};
updateListenerRef.set(updateListener);
if (eurekaClientProvider.get() != null) {
eurekaClientProvider.get().registerEventListener(updateListener);
if (eurekaClient == null) {
eurekaClient = eurekaClientProvider.get();
}
if (eurekaClient != null) {
eurekaClient.registerEventListener(updateListener);
}
} else {
logger.info("Update listener already registered, no-op");
Expand All @@ -122,8 +116,8 @@ public void run() {
@Override
public synchronized void stop() {
if (isActive.compareAndSet(true, false)) {
if (eurekaClientProvider.get() != null) {
eurekaClientProvider.get().unregisterEventListener(updateListenerRef.get());
if (eurekaClient != null) {
eurekaClient.unregisterEventListener(updateListener);
}
} else {
logger.info("Not currently active, no-op");
Expand Down

0 comments on commit d5e5e0d

Please sign in to comment.