When user wants to use PercentileSpeculativeExecutionPolicy, 2 APIs need to be called on cluster.
cluster = Cluster.builder().withSpeculativeExecutionPolicy(policy).build();
The reason to do this way is because there may be other sub systems (such as QueryLogger) that also can register perHostPercentileTracker. Instead of user having to call 2 APIs, can the driver do some thing smart to auto register the tracker that is part of PercentileSpeculativeExecutionPolicy in case the perHostPercentileTracker is not already registered.
Components that use PercentileTracker instances now register them automatically, and will take care not to register them twice.