Skip to content

Commit

Permalink
fix sessionClient's randomized sessions to be dynamic
Browse files Browse the repository at this point in the history
  • Loading branch information
qiangdavidliu committed Oct 26, 2015
1 parent 0a43b88 commit c97dcdd
Showing 1 changed file with 5 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -46,24 +46,27 @@ public class SessionedEurekaHttpClient extends EurekaHttpClientDecorator {
private final String name;
private final EurekaHttpClientFactory clientFactory;
private final long sessionDurationMs;
private volatile long currentSessionDurationMs;

private volatile long lastReconnectTimeStamp = -1;
private final AtomicReference<EurekaHttpClient> eurekaHttpClientRef = new AtomicReference<>();

public SessionedEurekaHttpClient(String name, EurekaHttpClientFactory clientFactory, long sessionDurationMs) {
this.name = name;
this.clientFactory = clientFactory;
this.sessionDurationMs = randomizeSessionDuration(sessionDurationMs);
this.sessionDurationMs = sessionDurationMs;
this.currentSessionDurationMs = randomizeSessionDuration(sessionDurationMs);
Monitors.registerObject(name, this);
}

@Override
protected <R> EurekaHttpResponse<R> execute(RequestExecutor<R> requestExecutor) {
long now = System.currentTimeMillis();
long delay = now - lastReconnectTimeStamp;
if (delay >= sessionDurationMs) {
if (delay >= currentSessionDurationMs) {
logger.debug("Ending a session and starting anew");
lastReconnectTimeStamp = now;
currentSessionDurationMs = randomizeSessionDuration(sessionDurationMs);
TransportUtils.shutdown(eurekaHttpClientRef.getAndSet(null));
}

Expand Down

0 comments on commit c97dcdd

Please sign in to comment.