[
https://issues.apache.org/jira/browse/CASSANDRA-12179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15382033#comment-15382033
]
Robert Stupp commented on CASSANDRA-12179:
------------------------------------------
I think the instanceof check is fine - just realised that
{{StorageService.updateSnitch}} exists and does it in a similar but broken way.
* {{updateSnitch}} instantiates a new instance of the snitch but it doesn't
cleanup the old instance properly - i.e. the scheduled tasks for update + reset
of the {{DynamicEndpointSnitch}} keep running forever. Probably worth to rename
{{DynamicEndpointSnitch.unregisterMBean}} to {{tearDown()}} and have it stop
the scheduled tasks.
* The implementation of {{updateSnitch}} wouldn't apply changes to the
parameters for {{DynamicEndpointSnitch}}, because it first instantiates the
snitch and then updates the configs via {{DatabaseDescriptor.set...}}} - but
{{DynamicEndpointSnitch}} reads these values during initialization (so before
the changes are applied).
* There are also a couple of {{null}} checks missing in {{updateSnitch}}.
* Beside that, {{StorageService.updateSnitch()}} also updates the {{snitch}}
field in all instances of {{AbstractReplicationStrategy}} - this might lead to
a race condition in case a keyspace's concurrently created. Unrelated to this
ticket, but I do not see the maybe obvious reason why
{{AbstractReplicationStrategy}} has a field {{snitch}} and does not use the
global setting.
* {{changeDynamicUpdateIntervalInMs}} changes the interval of the update task
but it doesn't change {{UPDATE_INTERVAL_IN_MS}} - this should become a
modifiable instance variable called {{updateIntervalInMs}}.
Sorry for coming up with that this late, but {{updateSnitch}} feels very
related to {{setDynamicUpdateInterval}}. I'd also be fine to let
{{setDynamicUpdateInterval(int dynamicUpdateInterval}} call
{{updateSnitch(null, null, dynamicUpdateInterval, null, null)}} and let
{{updateSnitch}} handle the actual changes.
WDYT?
> Make DynamicEndpointSnitch dynamic_snitch_update_interval_in_ms a JMX Prop
> ---------------------------------------------------------------------------
>
> Key: CASSANDRA-12179
> URL: https://issues.apache.org/jira/browse/CASSANDRA-12179
> Project: Cassandra
> Issue Type: Improvement
> Reporter: sankalp kohli
> Assignee: sankalp kohli
> Priority: Trivial
> Fix For: 3.0.x
>
> Attachments: CASSANDRA-12179-3.0_v2.txt, CASSANDRA-12179_3.0.txt
>
>
> Need to expose dynamic_snitch_update_interval_in_ms so that it does not
> require a bounce. This is useful for large clusters where we can change this
> value and see the impact.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)