Uploaded image for project: 'Apache Curator'
  1. Apache Curator
  2. CURATOR-663

ZooKeeperServerEmbeddedAdapter.configure might fail with ClassCastException

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 5.4.0
    • 5.8.0
    • Framework
    • None

    Description

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

      @Test
      public void testTestingZooKeeperServer() throws Exception
      {
        final Map<String, 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<String, Object> 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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            mapohl Matthias Pohl
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: