Skip to content

Commit 2be84e3

Browse files
ATLAS-4764: CuratorFrameWork should work only when HA mode (#587)
1 parent 6436e27 commit 2be84e3

File tree

4 files changed

+88
-2
lines changed

4 files changed

+88
-2
lines changed

common/src/main/java/org/apache/atlas/ha/HAConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public static ZookeeperProperties getZookeeperProperties(Configuration configura
105105
if (configuration.containsKey(HA_ZOOKEEPER_CONNECT)) {
106106
zkServers = configuration.getStringArray(HA_ZOOKEEPER_CONNECT);
107107
} else {
108-
zkServers = configuration.getStringArray("atlas.kafka." + ZOOKEEPER_PREFIX + "connect");
108+
zkServers = new String[0];
109109
}
110110

111111
String zkRoot = configuration.getString(ATLAS_SERVER_HA_ZK_ROOT_KEY, ATLAS_SERVER_ZK_ROOT_DEFAULT);

common/src/test/java/org/apache/atlas/ha/HAConfigurationTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828

2929
import java.util.List;
3030

31+
import static org.mockito.Mockito.never;
32+
import static org.mockito.Mockito.verify;
3133
import static org.mockito.Mockito.when;
3234
import static org.testng.Assert.assertEquals;
3335
import static org.testng.Assert.assertFalse;
@@ -110,4 +112,24 @@ public void testShouldGetZookeeperAuth() {
110112
HAConfiguration.ZookeeperProperties zookeeperProperties = HAConfiguration.getZookeeperProperties(configuration);
111113
assertTrue(zookeeperProperties.hasAuth());
112114
}
115+
116+
@Test
117+
public void testShouldGetZookeeperConnectStringFromHAConfig() {
118+
when(configuration.containsKey(HAConfiguration.HA_ZOOKEEPER_CONNECT)).thenReturn(true);
119+
when(configuration.getStringArray(HAConfiguration.HA_ZOOKEEPER_CONNECT)).thenReturn(new String[] {"zk1:2181", "zk2:2181"});
120+
121+
HAConfiguration.ZookeeperProperties zookeeperProperties = HAConfiguration.getZookeeperProperties(configuration);
122+
123+
assertEquals(zookeeperProperties.getConnectString(), "zk1:2181,zk2:2181");
124+
}
125+
126+
@Test
127+
public void testShouldReturnEmptyZookeeperConnectStringWhenMissing() {
128+
when(configuration.containsKey(HAConfiguration.HA_ZOOKEEPER_CONNECT)).thenReturn(false);
129+
130+
HAConfiguration.ZookeeperProperties zookeeperProperties = HAConfiguration.getZookeeperProperties(configuration);
131+
132+
assertEquals(zookeeperProperties.getConnectString(), "");
133+
verify(configuration, never()).getStringArray("atlas.kafka." + HAConfiguration.ZOOKEEPER_PREFIX + "connect");
134+
}
113135
}

webapp/src/main/java/org/apache/atlas/web/service/CuratorFactory.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ public CuratorFactory() throws AtlasException {
7575
public CuratorFactory(Configuration configuration) {
7676
this.configuration = configuration;
7777

78-
initializeCuratorFramework();
78+
if (configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY) && configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY, true)) {
79+
initializeCuratorFramework();
80+
}
7981
}
8082

8183
/**

webapp/src/test/java/org/apache/atlas/web/service/CuratorFactoryTest.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,9 @@ protected void initializeCuratorFramework() {
135135

136136
@Test
137137
public void testClientInstance() {
138+
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
139+
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY, true)).thenReturn(true);
140+
138141
CuratorFactory curatorFactory = new CuratorFactory(configuration) {
139142
@Override
140143
protected void initializeCuratorFramework() {
@@ -154,6 +157,9 @@ protected void initializeCuratorFramework() {
154157

155158
@Test
156159
public void testLeaderLatchInstance() {
160+
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
161+
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY, true)).thenReturn(true);
162+
157163
CuratorFactory curatorFactory = new CuratorFactory(configuration) {
158164
@Override
159165
protected void initializeCuratorFramework() {
@@ -176,6 +182,9 @@ protected void initializeCuratorFramework() {
176182

177183
@Test
178184
public void testLockInstance() {
185+
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
186+
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY, true)).thenReturn(true);
187+
179188
CuratorFactory curatorFactory = new CuratorFactory(configuration) {
180189
@Override
181190
protected void initializeCuratorFramework() {
@@ -197,6 +206,9 @@ protected void initializeCuratorFramework() {
197206

198207
@Test
199208
public void testClose() {
209+
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
210+
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY, true)).thenReturn(true);
211+
200212
CuratorFactory curatorFactory = new CuratorFactory(configuration) {
201213
@Override
202214
protected void initializeCuratorFramework() {
@@ -215,6 +227,56 @@ protected void initializeCuratorFramework() {
215227
verify(curatorFramework).close();
216228
}
217229

230+
@Test
231+
public void testConstructorDoesNotInitializeWhenHAKeyIsMissing() {
232+
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(false);
233+
234+
CuratorFactory curatorFactory = new CuratorFactory(configuration) {
235+
@Override
236+
protected void initializeCuratorFramework() {
237+
throw new AssertionError("initializeCuratorFramework() should not be called when HA key is missing");
238+
}
239+
};
240+
241+
assertNull(curatorFactory.clientInstance());
242+
}
243+
244+
@Test
245+
public void testConstructorDoesNotInitializeWhenHAIsDisabled() {
246+
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
247+
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY, true)).thenReturn(false);
248+
249+
CuratorFactory curatorFactory = new CuratorFactory(configuration) {
250+
@Override
251+
protected void initializeCuratorFramework() {
252+
throw new AssertionError("initializeCuratorFramework() should not be called when HA is disabled");
253+
}
254+
};
255+
256+
assertNull(curatorFactory.clientInstance());
257+
}
258+
259+
@Test
260+
public void testConstructorInitializesWhenHAIsEnabled() {
261+
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
262+
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY, true)).thenReturn(true);
263+
264+
CuratorFactory curatorFactory = new CuratorFactory(configuration) {
265+
@Override
266+
protected void initializeCuratorFramework() {
267+
try {
268+
Field field = CuratorFactory.class.getDeclaredField("curatorFramework");
269+
field.setAccessible(true);
270+
field.set(this, curatorFramework);
271+
} catch (Exception e) {
272+
throw new RuntimeException(e);
273+
}
274+
}
275+
};
276+
277+
assertEquals(curatorFactory.clientInstance(), curatorFramework);
278+
}
279+
218280
@Test
219281
public void testGetIdForLoggingSaslScheme() throws Exception {
220282
CuratorFactory curatorFactory = new CuratorFactory(configuration) {

0 commit comments

Comments
 (0)