Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-17737

Validate that JMX updates in Config class any properties that were moved to the new config classes and not local copies

Agile BoardAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskConvert to sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      Check that any properties moved to the new types in 4.1 (Duration, Data Storage, Data Rate) in Config class are always updated by JMX (JMX might update local copies out of Config). This is directly connected to the correct update of the properties in Settings Virtual Table after startup.

      I branched the configCompatibilityTest in 4.1 in order to get the lists of properties in this commit - the commit won't get into the codebase, just pasting so people know how the lists were generated:
      DataRateSpec - entire_sstable_stream_throughput_outbound, inter_dc_stream_throughput_outbound, entire_sstable_inter_dc_stream_throughput_outbound, compaction_throughput, stream_throughput_outbound - we have setGet* tests and those seem solid, no issues found.

      DurationSpec - gc_log_threshold, permissions_validity, denylist_refresh, request_timeout, hints_flush_period, read_request_timeout, index_summary_resize_interval, streaming_keep_alive_period, max_hint_window, roles_update_interval, user_defined_functions_fail_timeout, write_request_timeout, cdc_free_space_check_interval, roles_validity, internode_streaming_tcp_user_timeout, gc_warn_threshold, range_request_timeout, credentials_update_interval, truncate_request_timeout, cas_contention_timeout, periodic_commitlog_sync_lag_block, streaming_state_expires, repair_request_timeout, permissions_update_interval, dynamic_snitch_reset_interval, internode_tcp_connect_timeout, paxos_purge_grace_period, dynamic_snitch_update_interval, trace_type_query_ttl, denylist_initial_load_retry, commitlog_sync_period, native_transport_idle_timeout, credentials_validity, validation_preview_purge_head_start, repair_state_expires, internode_tcp_user_timeout, trace_type_repair_ttl, cache_load_timeout, commitlog_sync_group_window, slow_query_log_timeout, counter_write_request_timeout, user_defined_functions_warn_timeout

      DataStorageSpec - internode_application_send_queue_reserve_endpoint_capacity, cdc_total_space, networking_cache_size, commitlog_total_space, internode_application_send_queue_capacity, key_cache_size, memtable_heap_space, trickle_fsync_interval, max_hints_size_per_host, internode_application_receive_queue_reserve_endpoint_capacity, native_transport_max_frame_size, coordinator_read_size_warn_threshold , internode_application_receive_queue_reserve_global_capacity, internode_max_message_size, file_cache_size, local_read_size_fail_threshold, data_disk_usage_max_disk_size, memtable_offheap_space, coordinator_read_size_fail_threshold, counter_cache_size, prepared_statements_cache_size, batchlog_replay_throttle, row_index_read_size_fail_threshold, index_summary_capacity, repair_session_space, paxos_cache_size, collection_size_fail_threshold, internode_application_send_queue_reserve_global_capacity, column_index_size, native_transport_receive_queue_capacity, sstable_preemptive_open_interval, max_mutation_size, min_free_space_per_drive, batch_size_fail_threshold, hinted_handoff_throttle, row_index_read_size_warn_threshold, max_value_size, column_index_cache_size, compaction_large_partition_warning_threshold, max_hints_file_size, collection_size_warn_threshold, native_transport_max_request_data_in_flight, internode_socket_receive_buffer_size, internode_application_receive_queue_capacity, internode_socket_send_buffer_size, row_cache_size, min_tracked_partition_size, local_read_size_warn_threshold, commitlog_segment_size, batch_size_warn_threshold, streaming_state_size, native_transport_max_request_data_in_flight_per_ip

      NOTE: Some of those were checked/fixed in other tickets but I post the full lists for completeness

      -------

      Fixes/commits based on this work:

       
      1) Fix Setting Virtual Table to update after startup config properties gc_log_threshold_in_ms, gc_warn_threshold_in_ms, conf.index_summary_capacity_in_mb, prepared_statements_cache_size_mb, key_cache_size_in_mb, counter_cache_size_in_mb - 4.0,  4.1,  trunk

      2) Fix a null bug we identified in Converters and the disabled value for sstable_preemptive_open_interval_in_mb.

      In order to start using @Nullable annotation for Config properties, I had to change com.google.code.findbugs scope from provided to default compile one. 

      Looking into its license https://opensource.org/licenses/BSD-3-Clause
      and reading here - https://www.apache.org/legal/resolved.html
      we agreed the change is acceptable. Not brought to the mailing list as we are not adding brand new dependency.

      Also, we agreed to open a follow-up improvement ticket so that all nullable Config properties start using the @Nullable annotation - CASSANDRA-17785

      4.1, trunk 

      3) A few additional Converter unit tests were committed to  4.1 , propagated to trunk

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            e.dimitrova Ekaterina Dimitrova Assign to me
            e.dimitrova Ekaterina Dimitrova
            Ekaterina Dimitrova
            Andres de la Peña, Jon Meredith
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment