Skip to content

Commit

Permalink
Fix initialisation ordering of AppContext
Browse files Browse the repository at this point in the history
Previously, `initialiseInstanceAddress()` was called before `LOG` and `DEFAULT_INSTANCE_ADDRESS` were initialised, but relied on both of them, so threw an NPE instead of correctly assigning the default and starting up.

Fixes #654
ref: #692
  • Loading branch information
treuherz authored and michaelsembwever committed Jun 4, 2019
1 parent a934aea commit 534f5aa
Showing 1 changed file with 13 additions and 12 deletions.
25 changes: 13 additions & 12 deletions src/server/src/main/java/io/cassandrareaper/AppContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,7 @@
public final class AppContext {

public static final UUID REAPER_INSTANCE_ID = UUID.randomUUID();
public static final String REAPER_INSTANCE_ADDRESS = initialiseInstanceAddress();

private static final String DEFAULT_INSTANCE_ADDRESS = "127.0.0.1";
private static final Logger LOG = LoggerFactory.getLogger(AppContext.class);
public static final String REAPER_INSTANCE_ADDRESS = Private.initialiseInstanceAddress();

public final AtomicBoolean isRunning = new AtomicBoolean(true);
public IStorage storage;
Expand All @@ -50,14 +47,18 @@ public final class AppContext {
public ReaperApplicationConfiguration config;
public MetricRegistry metricRegistry = new MetricRegistry();

private static String initialiseInstanceAddress() {
String reaperInstanceAddress;
try {
reaperInstanceAddress = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
LOG.warn("Cannot get instance address", e);
reaperInstanceAddress = DEFAULT_INSTANCE_ADDRESS;

private static class Private {
private static final Logger LOG = LoggerFactory.getLogger(AppContext.class);
private static final String DEFAULT_INSTANCE_ADDRESS = "127.0.0.1";

private static String initialiseInstanceAddress() {
try {
return InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
LOG.warn("Cannot get instance address", e);
}
return DEFAULT_INSTANCE_ADDRESS;
}
return reaperInstanceAddress;
}
}

0 comments on commit 534f5aa

Please sign in to comment.