curator icon indicating copy to clipboard operation
curator copied to clipboard

[CURATOR-663] ZooKeeperServerEmbeddedAdapter.configure might fail with ClassCastException

Open jira-importer opened this issue 2 years ago • 1 comments

There might be a ClassCastException happening when starting the TestingZooKeeper instance. The following test reproduces the issue:

@Test
public void testTestingZooKeeperServer() throws Exception
{
  final MapString, Object> customProperties = new HashMap();
  customProperties.put("maxSessionTimeout", 60_000);

final Path tmpDirPath = Files.createTempDirectory("tmp-"); final InstanceSpec instanceSpec = new InstanceSpec(tmpDirPath.toFile(), 0, 0, 0, true, 0, 10, 1, customProperties, "host-name"); final QuorumConfigBuilder quorumConfigBuilder = new QuorumConfigBuilder(instanceSpec); final TestingZooKeeperServer zkServer = new TestingZooKeeperServer(quorumConfigBuilder);

zkServer.start(); }

The test above will fail with a ClassCastException because InstantSpec allows a Map for custom properties, i.e. a non-String value like Integer can be used.

This Map is then passed over into a Properties instance in QuorumConfigBuilder:163. These Properties are then written to a temporary file in ZooKeeper's ZooKeeperServerEmbeddedImpl:58 which expects only to have String values. The previously set Integer value isn't converted to a String anywhere, though.


Originally reported by mapohl, imported from: ZooKeeperServerEmbeddedAdapter.configure might fail with ClassCastException
  • status: Open
  • priority: Major
  • resolution: Unresolved
  • imported: 2025-01-21

jira-importer avatar Mar 28 '23 20:03 jira-importer

tison:

Seems change the type of InstanceSpec#customProperties could resolve this?

jira-importer avatar Dec 21 '24 20:12 jira-importer