[jira] [Commented] (CASSANDRA-19666) Split the metrics collection into smaller groups

2024-05-29 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17850472#comment-17850472
 ] 

Maxim Muzafarov commented on CASSANDRA-19666:
-

To be clear, by "dynamic" I meant that when a new keyspace is created, it gets 
a corresponding virtual table without having to be registered statically.

For example, a user creates a "myks", and as new MBeans are automatically 
registered for this new keyspace, and metrics are started to be visible via 
JMX, a new corresponding "system_metrics.keyspaces_myks" is also created in a 
system_metrics virtual keyspace.

> Split the metrics collection into smaller groups
> 
>
> Key: CASSANDRA-19666
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19666
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Urgent
> Fix For: 5.x
>
>
> Historically, all metrics are stored in a single collection indexed by a 
> unique metric name - {{{}ConcurrentMap{}}}. This storage 
> technique doesn't offer any advantages over other options we might have 
> below, and causes some performance and usability issues when we need to 
> traverse this huge collection while filtering the metrics.
> The following possible solutions could be used: 
> - Use 
> https://www.javadoc.io/doc/io.dropwizard.metrics/metrics-core/4.0.2/com/codahale/metrics/SharedMetricRegistries.html
>  , which provides a way to store metrics in their dedicated groups;
> - Implement a hierarchical storage structure, based on the knowledge of how 
> the metric key is formed. For example, 
> https://the-asf.slack.com/archives/CK23JSY2K/p1716568216701789?thread_ts=1716324924.466269=CK23JSY2K
> Each of the above options assumes, that the metric groups are statically 
> registered and known at the time a node starts. This may also be an option to 
> consider for dynamically registering metric groups and in turn registering 
> corresponding virtual tables and JmxMbean. In the latter case, we'll need to 
> implement the notification mechanism for the drivers, as they are not 
> currently notified about newly created virtual tables.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19666) Split the metrics collection into smaller groups

2024-05-29 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19666:

Priority: Urgent  (was: Normal)

> Split the metrics collection into smaller groups
> 
>
> Key: CASSANDRA-19666
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19666
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Urgent
> Fix For: 5.x
>
>
> Historically, all metrics are stored in a single collection indexed by a 
> unique metric name - {{{}ConcurrentMap{}}}. This storage 
> technique doesn't offer any advantages over other options we might have 
> below, and causes some performance and usability issues when we need to 
> traverse this huge collection while filtering the metrics.
> The following possible solutions could be used: 
> - Use 
> https://www.javadoc.io/doc/io.dropwizard.metrics/metrics-core/4.0.2/com/codahale/metrics/SharedMetricRegistries.html
>  , which provides a way to store metrics in their dedicated groups;
> - Implement a hierarchical storage structure, based on the knowledge of how 
> the metric key is formed. For example, 
> https://the-asf.slack.com/archives/CK23JSY2K/p1716568216701789?thread_ts=1716324924.466269=CK23JSY2K
> Each of the above options assumes, that the metric groups are statically 
> registered and known at the time a node starts. This may also be an option to 
> consider for dynamically registering metric groups and in turn registering 
> corresponding virtual tables and JmxMbean. In the latter case, we'll need to 
> implement the notification mechanism for the drivers, as they are not 
> currently notified about newly created virtual tables.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19666) Split the metrics collection into smaller groups

2024-05-28 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19666:

Change Category: Performance
 Complexity: Normal
 Status: Open  (was: Triage Needed)

> Split the metrics collection into smaller groups
> 
>
> Key: CASSANDRA-19666
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19666
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>
> Historically, all metrics are stored in a single collection indexed by a 
> unique metric name - {{{}ConcurrentMap{}}}. This storage 
> technique doesn't offer any advantages over other options we might have 
> below, and causes some performance and usability issues when we need to 
> traverse this huge collection while filtering the metrics.
> The following possible solutions could be used: 
> - Use 
> https://www.javadoc.io/doc/io.dropwizard.metrics/metrics-core/4.0.2/com/codahale/metrics/SharedMetricRegistries.html
>  , which provides a way to store metrics in their dedicated groups;
> - Implement a hierarchical storage structure, based on the knowledge of how 
> the metric key is formed. For example, 
> https://the-asf.slack.com/archives/CK23JSY2K/p1716568216701789?thread_ts=1716324924.466269=CK23JSY2K
> Each of the above options assumes, that the metric groups are statically 
> registered and known at the time a node starts. This may also be an option to 
> consider for dynamically registering metric groups and in turn registering 
> corresponding virtual tables and JmxMbean. In the latter case, we'll need to 
> implement the notification mechanism for the drivers, as they are not 
> currently notified about newly created virtual tables.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19666) Split the metrics collection into smaller groups

2024-05-28 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19666:

Fix Version/s: 5.x

> Split the metrics collection into smaller groups
> 
>
> Key: CASSANDRA-19666
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19666
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>
> Historically, all metrics are stored in a single collection indexed by a 
> unique metric name - {{{}ConcurrentMap{}}}. This storage 
> technique doesn't offer any advantages over other options we might have 
> below, and causes some performance and usability issues when we need to 
> traverse this huge collection while filtering the metrics.
> The following possible solutions could be used: 
> - Use 
> https://www.javadoc.io/doc/io.dropwizard.metrics/metrics-core/4.0.2/com/codahale/metrics/SharedMetricRegistries.html
>  , which provides a way to store metrics in their dedicated groups;
> - Implement a hierarchical storage structure, based on the knowledge of how 
> the metric key is formed. For example, 
> https://the-asf.slack.com/archives/CK23JSY2K/p1716568216701789?thread_ts=1716324924.466269=CK23JSY2K
> Each of the above options assumes, that the metric groups are statically 
> registered and known at the time a node starts. This may also be an option to 
> consider for dynamically registering metric groups and in turn registering 
> corresponding virtual tables and JmxMbean. In the latter case, we'll need to 
> implement the notification mechanism for the drivers, as they are not 
> currently notified about newly created virtual tables.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Created] (CASSANDRA-19666) Split the metrics collection into smaller groups

2024-05-28 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created CASSANDRA-19666:
---

 Summary: Split the metrics collection into smaller groups
 Key: CASSANDRA-19666
 URL: https://issues.apache.org/jira/browse/CASSANDRA-19666
 Project: Cassandra
  Issue Type: Improvement
  Components: Observability/Metrics
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov


Historically, all metrics are stored in a single collection indexed by a unique 
metric name - {{{}ConcurrentMap{}}}. This storage technique 
doesn't offer any advantages over other options we might have below, and causes 
some performance and usability issues when we need to traverse this huge 
collection while filtering the metrics.

The following possible solutions could be used: 
- Use 
https://www.javadoc.io/doc/io.dropwizard.metrics/metrics-core/4.0.2/com/codahale/metrics/SharedMetricRegistries.html
 , which provides a way to store metrics in their dedicated groups;
- Implement a hierarchical storage structure, based on the knowledge of how the 
metric key is formed. For example, 
https://the-asf.slack.com/archives/CK23JSY2K/p1716568216701789?thread_ts=1716324924.466269=CK23JSY2K

Each of the above options assumes, that the metric groups are statically 
registered and known at the time a node starts. This may also be an option to 
consider for dynamically registering metric groups and in turn registering 
corresponding virtual tables and JmxMbean. In the latter case, we'll need to 
implement the notification mechanism for the drivers, as they are not currently 
notified about newly created virtual tables.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-08 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19619:

  Fix Version/s: 5.0-beta2
 5.0
 5.1
 (was: 5.x)
 (was: 5.0.x)
 (was: 5.0-rc)
Source Control Link: 
https://github.com/apache/cassandra/commit/ccdeb12419a70afb00e9aa3958fc05eb4617ee44
 Resolution: Fixed
 Status: Resolved  (was: Ready to Commit)

[~maedhroz] thank you for the review and running CI.

[~mck] thank you for the review either.
Committed to 5.0 and the trunk. 

> Enforce contract for internal metrics naming
> 
>
> Key: CASSANDRA-19619
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
> Project: Cassandra
>  Issue Type: Task
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.0-beta2, 5.0, 5.1
>
> Attachments: ci_summary-1.html, ci_summary.html
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Metrics have their internal representation which uniquely identifies a 
> particular metric name. The name is formed as {{. type>..}}. For some metrics, the scope includes a 
> metric name that is not necessary for uniqueness, this can be simplified.
> For example,
> {code}
> // AS IS
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits
> // TO BE
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
> {code}
> The metrics are filtered based on knowledge of how they are formatted, so 
> having a metric scope without a built-in metric name also simplifies the way 
> we filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-07 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19619:

Reviewers: Caleb Rackliffe, Michael Semb Wever  (was: Caleb Rackliffe)

> Enforce contract for internal metrics naming
> 
>
> Key: CASSANDRA-19619
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
> Project: Cassandra
>  Issue Type: Task
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.0-rc, 5.0.x, 5.x
>
> Attachments: ci_summary-1.html, ci_summary.html
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Metrics have their internal representation which uniquely identifies a 
> particular metric name. The name is formed as {{. type>..}}. For some metrics, the scope includes a 
> metric name that is not necessary for uniqueness, this can be simplified.
> For example,
> {code}
> // AS IS
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits
> // TO BE
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
> {code}
> The metrics are filtered based on knowledge of how they are formatted, so 
> having a metric scope without a built-in metric name also simplifies the way 
> we filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-06 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19619?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17843767#comment-17843767
 ] 

Maxim Muzafarov edited comment on CASSANDRA-19619 at 5/6/24 2:57 PM:
-

[~e.dimitrova] yes, we've agreed with [~maedhroz] to include these changes into 
the 5.0. The changes should be pretty straightforward, but verification is 
needed. I'm trying to run everything locally so far as I've exhausted my OS 
credits on CircleCi. 


was (Author: mmuzaf):
[~e.dimitrova] yes, we've agreed with [~maedhroz] to include these changes into 
the 5.0. The changes should be pretty straightforward, but verification is 
needed. I'm trying to run everything locally so far as I'm exhausted my OS 
credits on CircleCi. 

> Enforce contract for internal metrics naming
> 
>
> Key: CASSANDRA-19619
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
> Project: Cassandra
>  Issue Type: Task
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.0-rc, 5.0.x, 5.x
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Metrics have their internal representation which uniquely identifies a 
> particular metric name. The name is formed as {{. type>..}}. For some metrics, the scope includes a 
> metric name that is not necessary for uniqueness, this can be simplified.
> For example,
> {code}
> // AS IS
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits
> // TO BE
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
> {code}
> The metrics are filtered based on knowledge of how they are formatted, so 
> having a metric scope without a built-in metric name also simplifies the way 
> we filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-06 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19619?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17843767#comment-17843767
 ] 

Maxim Muzafarov commented on CASSANDRA-19619:
-

[~e.dimitrova] yes, we've agreed with [~maedhroz] to include these changes into 
the 5.0. The changes should be pretty straightforward, but verification is 
needed. I'm trying to run everything locally so far as I'm exhausted my OS 
credits on CircleCi. 

> Enforce contract for internal metrics naming
> 
>
> Key: CASSANDRA-19619
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
> Project: Cassandra
>  Issue Type: Task
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.0-rc, 5.0.x, 5.x
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Metrics have their internal representation which uniquely identifies a 
> particular metric name. The name is formed as {{. type>..}}. For some metrics, the scope includes a 
> metric name that is not necessary for uniqueness, this can be simplified.
> For example,
> {code}
> // AS IS
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits
> // TO BE
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
> {code}
> The metrics are filtered based on knowledge of how they are formatted, so 
> having a metric scope without a built-in metric name also simplifies the way 
> we filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-03 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19619?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17843372#comment-17843372
 ] 

Maxim Muzafarov commented on CASSANDRA-19619:
-

trunk:
[https://github.com/apache/cassandra/pull/3291/files]

5.0:
https://github.com/apache/cassandra/pull/3292/files

> Enforce contract for internal metrics naming
> 
>
> Key: CASSANDRA-19619
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
> Project: Cassandra
>  Issue Type: Task
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.0-rc, 5.0.x, 5.x
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Metrics have their internal representation which uniquely identifies a 
> particular metric name. The name is formed as {{. type>..}}. For some metrics, the scope includes a 
> metric name that is not necessary for uniqueness, this can be simplified.
> For example,
> {code}
> // AS IS
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits
> // TO BE
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
> {code}
> The metrics are filtered based on knowledge of how they are formatted, so 
> having a metric scope without a built-in metric name also simplifies the way 
> we filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Created] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-03 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created CASSANDRA-19619:
---

 Summary: Enforce contract for internal metrics naming
 Key: CASSANDRA-19619
 URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
 Project: Cassandra
  Issue Type: Task
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov


Metrics have their internal representation which uniquely identifies a 
particular metric name. The name is formed as {{...}}. For some metrics, the scope includes a 
metric name that is not necessary for uniqueness, this can be simplified.

For example,

{code}
// AS IS
org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits

// TO BE
org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
{code}

The metrics are filtered based on knowledge of how they are formatted, so 
having a metric scope without a built-in metric name also simplifies the way we 
filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19619:

Fix Version/s: 5.0-rc
   5.0.x
   5.x

> Enforce contract for internal metrics naming
> 
>
> Key: CASSANDRA-19619
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
> Project: Cassandra
>  Issue Type: Task
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.0-rc, 5.0.x, 5.x
>
>
> Metrics have their internal representation which uniquely identifies a 
> particular metric name. The name is formed as {{. type>..}}. For some metrics, the scope includes a 
> metric name that is not necessary for uniqueness, this can be simplified.
> For example,
> {code}
> // AS IS
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits
> // TO BE
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
> {code}
> The metrics are filtered based on knowledge of how they are formatted, so 
> having a metric scope without a built-in metric name also simplifies the way 
> we filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19619) Enforce contract for internal metrics naming

2024-05-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19619:

Change Category: Semantic
 Complexity: Low Hanging Fruit
Component/s: Observability/Metrics
 Status: Open  (was: Triage Needed)

> Enforce contract for internal metrics naming
> 
>
> Key: CASSANDRA-19619
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19619
> Project: Cassandra
>  Issue Type: Task
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
>
> Metrics have their internal representation which uniquely identifies a 
> particular metric name. The name is formed as {{. type>..}}. For some metrics, the scope includes a 
> metric name that is not necessary for uniqueness, this can be simplified.
> For example,
> {code}
> // AS IS
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics.BalancedTreeIntersectionEarlyExits
> // TO BE
> org.apache.cassandra.metrics.StorageAttachedIndex.BalancedTreeIntersectionEarlyExits.my_keyspace.my_table.ColumnQueryMetrics
> {code}
> The metrics are filtered based on knowledge of how they are formatted, so 
> having a metric scope without a built-in metric name also simplifies the way 
> we filter metrics.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-30 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19567:

  Since Version: 5.1
Source Control Link: 
https://github.com/apache/cassandra/commit/8619010cdca8bce471754e4fbeb861f036535007
 Resolution: Fixed
 Status: Resolved  (was: Ready to Commit)

[~maedhroz] Thank you for the review.
Committed to the trunk branch. 

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.1
>
> Attachments: ci_summary.html, summary.png
>
>  Time Spent: 2h 50m
>  Remaining Estimate: 0h
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout] 
> [junit-timeout] 
> [junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
> FAILED (crashed)BUILD FAILED
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: 

[jira] [Updated] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-30 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19567:

Status: Ready to Commit  (was: Review In Progress)

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.1
>
> Attachments: ci_summary.html, summary.png
>
>  Time Spent: 2h 50m
>  Remaining Estimate: 0h
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout] 
> [junit-timeout] 
> [junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
> FAILED (crashed)BUILD FAILED
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-29 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17842035#comment-17842035
 ] 

Maxim Muzafarov commented on CASSANDRA-19567:
-

I've fixed all the comments and the failed tests. The changes are here:
https://github.com/apache/cassandra/pull/3267

Additionally, I've prepared a branch that contains a new assertion on a metric 
remove operation to ensure the contract. As I previously mentioned, this 
assertion can be tricky as I assume some of the metrics with the same name can 
be removed in parallel, it shouldn't happen in a normal way, but it could 
because of the lack of tests and/or parallel removal the same metrics e.g. 
Memtables share the same instances of metrics. Anyway, the same as above 
changes, but with an assertion are here:
https://github.com/Mmuzaf/cassandra/tree/cassandra-19567-assert

I'll check that. 

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
> Attachments: summary.png
>
>  Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> 

[jira] [Commented] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-20 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17839260#comment-17839260
 ] 

Maxim Muzafarov commented on CASSANDRA-19567:
-

!summary.png|width=900!

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
> Attachments: summary.png
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout] 
> [junit-timeout] 
> [junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
> FAILED (crashed)BUILD FAILED
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-20 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17839260#comment-17839260
 ] 

Maxim Muzafarov edited comment on CASSANDRA-19567 at 4/20/24 4:33 PM:
--

!summary.png|width=800!


was (Author: mmuzaf):
!summary.png|width=900!

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
> Attachments: summary.png
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout] 
> [junit-timeout] 
> [junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
> FAILED (crashed)BUILD FAILED
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-20 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19567:

Attachment: summary.png

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
> Attachments: summary.png
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout] 
> [junit-timeout] 
> [junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
> FAILED (crashed)BUILD FAILED
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Assigned] (CASSANDRA-19571) Avoid ConcurrentModificationException when removing metrics from CassandraMetricsRegistry

2024-04-18 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19571?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov reassigned CASSANDRA-19571:
---

Assignee: Maxim Muzafarov

> Avoid ConcurrentModificationException when removing metrics from 
> CassandraMetricsRegistry
> -
>
> Key: CASSANDRA-19571
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19571
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Marcus Eriksson
>Assignee: Maxim Muzafarov
>Priority: Normal
>
> Multiple threads can modify the lists in {{CassandraMetricsRegistry}} 
> {{ALIASES}} map values. We have seen this CME when removing metrics, but 
> could possibly affect other paths using those lists
> Adding a small delay (10ms) when map:ing to {{getMetricName}} in 
> {{CassandraMetricsRegistry.remove(name)}} makes this reproduce when running 
> {{TransientRangeMovementTest.testLeave}}
> Caused by CASSANDRA-14572



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19571) Avoid ConcurrentModificationException when removing metrics from CassandraMetricsRegistry

2024-04-18 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19571?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19571:

Fix Version/s: 5.x

> Avoid ConcurrentModificationException when removing metrics from 
> CassandraMetricsRegistry
> -
>
> Key: CASSANDRA-19571
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19571
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Marcus Eriksson
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>
> Multiple threads can modify the lists in {{CassandraMetricsRegistry}} 
> {{ALIASES}} map values. We have seen this CME when removing metrics, but 
> could possibly affect other paths using those lists
> Adding a small delay (10ms) when map:ing to {{getMetricName}} in 
> {{CassandraMetricsRegistry.remove(name)}} makes this reproduce when running 
> {{TransientRangeMovementTest.testLeave}}
> Caused by CASSANDRA-14572



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-17 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19567:

Discovered By: DTest  (was: User Report)

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout] 
> [junit-timeout] 
> [junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
> FAILED (crashed)BUILD FAILED
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-17 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19567:

 Bug Category: Parent values: Degradation(12984)Level 1 values: Resource 
Management(12995)
   Complexity: Normal
Discovered By: User Report
Fix Version/s: 5.x
 Platform: x86  (was: All)
 Severity: Normal
   Status: Open  (was: Triage Needed)

> Minimize the heap consumption when registering metrics
> --
>
> Key: CASSANDRA-19567
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>
> The problem is only reproducible on the x86 machine, the problem is not 
> reproducible on the arm64. A quick analysis showed a lot of MetricName 
> objects stored in the heap, although the real cause could be related to 
> something else, the MetricName object requires extra attention.
> To reproduce run the command run locally:
> {code}
> ant test-jvm-dtest-some 
> -Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
> {code}
> The error:
> {code:java}
> [junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
> heap space
> [junit-timeout]     at 
> java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
> [junit-timeout]     at 
> java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
> [junit-timeout]     at 
> org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
> [junit-timeout]     at 
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
> [junit-timeout] Testsuite: 
> org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
>  Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
> [junit-timeout] 
> [junit-timeout] Testcase: 
> org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
>     Caused an ERROR
> [junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
> report does not reflect the time until the VM exit.
> [junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
> abnormally. Please note the time in the report does not reflect the time 
> until the VM exit.
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout]     at 
> jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
> [junit-timeout]     at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit-timeout] 
> [junit-timeout] 
> [junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
> FAILED (crashed)BUILD FAILED
>  {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Created] (CASSANDRA-19567) Minimize the heap consumption when registering metrics

2024-04-17 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created CASSANDRA-19567:
---

 Summary: Minimize the heap consumption when registering metrics
 Key: CASSANDRA-19567
 URL: https://issues.apache.org/jira/browse/CASSANDRA-19567
 Project: Cassandra
  Issue Type: Bug
  Components: Observability/Metrics
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov


The problem is only reproducible on the x86 machine, the problem is not 
reproducible on the arm64. A quick analysis showed a lot of MetricName objects 
stored in the heap, although the real cause could be related to something else, 
the MetricName object requires extra attention.

To reproduce run the command run locally:
{code}
ant test-jvm-dtest-some 
-Dtest.name=org.apache.cassandra.distributed.test.ReadRepairTest
{code}

The error:

{code:java}
[junit-timeout] Exception in thread "main" java.lang.OutOfMemoryError: Java 
heap space
[junit-timeout]     at 
java.base/java.lang.StringLatin1.newString(StringLatin1.java:769)
[junit-timeout]     at 
java.base/java.lang.StringBuffer.toString(StringBuffer.java:716)
[junit-timeout]     at 
org.apache.cassandra.CassandraBriefJUnitResultFormatter.endTestSuite(CassandraBriefJUnitResultFormatter.java:191)
[junit-timeout]     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.fireEndTestSuite(JUnitTestRunner.java:854)
[junit-timeout]     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:578)
[junit-timeout]     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197)
[junit-timeout]     at 
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042)
[junit-timeout] Testsuite: 
org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
[junit-timeout] Testsuite: 
org.apache.cassandra.distributed.test.ReadRepairTest-cassandra.testtag_IS_UNDEFINED
 Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec
[junit-timeout] 
[junit-timeout] Testcase: 
org.apache.cassandra.distributed.test.ReadRepairTest:readRepairRTRangeMovementTest-cassandra.testtag_IS_UNDEFINED:
    Caused an ERROR
[junit-timeout] Forked Java VM exited abnormally. Please note the time in the 
report does not reflect the time until the VM exit.
[junit-timeout] junit.framework.AssertionFailedError: Forked Java VM exited 
abnormally. Please note the time in the report does not reflect the time until 
the VM exit.
[junit-timeout]     at 
jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[junit-timeout]     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
[junit-timeout]     at 
jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[junit-timeout]     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit-timeout]     at 
jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[junit-timeout]     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit-timeout]     at java.base/java.util.Vector.forEach(Vector.java:1365)
[junit-timeout]     at 
jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[junit-timeout]     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit-timeout]     at 
jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[junit-timeout]     at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[junit-timeout] 
[junit-timeout] 
[junit-timeout] Test org.apache.cassandra.distributed.test.ReadRepairTest 
FAILED (crashed)BUILD FAILED
 {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-04-17 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17838166#comment-17838166
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

[~maedhroz] Do you have a dump or any CI result links? The patch might increase 
the heap usage a bit. While trying to keep the memory footprint low, it was 
necessary to add the Map> to keep track of metric 
alias names (they usually appear when a metric is renamed) and use them to 
deregister the metrics when it's needed (e.g. a keyspace drop).

Due to the number of metrics, it may take some extra heap space, but shouldn't 
be too much. My calculations and tests that I'd made showed that for each 
metric we need ~ 10x8bytes for refs +  some space for extra strings that 
survive the eden gc ( e.g. ~10 symbols string 2 byte each x 6 fields) = 200 
bytes for each metric. Considering 77k metrics in my tests above it will be ~ 
15Mb extra heap space (a JFR is attached in [the comment 
above|https://issues.apache.org/jira/browse/CASSANDRA-14572?focusedCommentId=17809602=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17809602]
 for the reference). I might be miscalculated something, of course.

We can create a new issue to fix that, and I'll try to find a solution for that.

As for the feature flag, I don't think it's necessary since the flag can't help 
the way we handle metrics internally, plus a new keyspace and virtual tables 
stand apart the core components. What we can do here in addition is to note in 
the documentation that these new tables are experimental in the next upcoming 
release.

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.1
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 7h 50m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-19476) CQL Management API

2024-04-16 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17837675#comment-17837675
 ] 

Maxim Muzafarov edited comment on CASSANDRA-19476 at 4/16/24 8:20 PM:
--

I've spent some time prototyping the changes and the plan may be the following, 
splitting by the issues:
 # _Replace the airline with the picocli._ CASSANDRA-17445 The airlift library 
is now used to expose the management commands via the CLI. We can reuse this 
approach to keep the number of changes low, however, we need to replace the 
library with the picocli as the airlift has drawbacks. It prevents us from 
building JMX and CQL APIs in follows:
 ## The airlift library is no longer supported. It doesn't make sense to build 
a new code on top of deprecated annotations;
 ## The library handles the `[ ...]` as a single input 
argument, but we need to handle it independently as two input arguments 
`keyspace` and `tables` to build JMX and CQL APIs;
 ## All commands right now have host, port, username, and password options etc. 
which are not relevant to other types of public APIs;
 # {_}Create an adapter that builds dynamic JMX MBeans{_}, and parses the 
picocli annotations of the commands we already have. This will expose these 
commands with the same parameters and options that they have in the CLI, 
matching the nodetool CLI input. The management MBeans of the internal 
components e.g. StorageServiceMBean can be injected into the commands directly 
when the command context is initialized.
 # _Create a CQL command adapter._ Based on the commands annotations we can 
create a new adapter that handles command parameters received from the binary 
protocol, this is basically the same as new dynamic MBeans with the caveat that 
the binary protocol have to be improved to support new operation types.

Options 2 and 3 can be implemented independently.


was (Author: mmuzaf):
I've spent some time prototyping the changes and the plan may be the following, 
splitting by the issues:
 # _Replace the airline with the picocli._ CASSANDRA-17445 The airlift library 
is now used to expose the management commands via the CLI. We can reuse this 
approach to keep the number of changes low, however, we need to replace the 
library with the picocli as the airlift has drawbacks. It prevents us from 
building JMX and CQL APIs in follows:
 ## The airlift library is no longer supported;
 ## The library handles the `[ ...]` as a single input 
argument, but we need to handle it independently as two input arguments 
`keyspace` and `tables` to build JMX and CQL APIs;
 ## All commands right now have host, port, username, and password options etc. 
which are not relevant to other types of interfaces;
 # {_}Create an adapter that builds dynamic JMX MBeans{_}, and parses the 
picocli annotations of the commands we already have. This will expose these 
commands with the same parameters and options that they have in the CLI, 
matching the nodetool CLI input. The management MBeans of the internal 
components e.g. StorageServiceMBean can be injected into the commands directly 
when the command context is initialized.
 # _Create a CQL command adapter._ Based on the commands annotations we can 
create a new adapter that handles command parameters received from the binary 
protocol, this is basically the same as new dynamic MBeans with the caveat that 
the binary protocol have to be improved to support new operation types.

Options 2 and 3 can be implemented independently.

> CQL Management API
> --
>
> Key: CASSANDRA-19476
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
> Project: Cassandra
>  Issue Type: Improvement
>  Components: CQL/Interpreter, CQL/Syntax, Tool/nodetool
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: High
>  Labels: CEP-38
> Fix For: 5.x
>
>
> We want to run management commands via CQL.
> The goals are:
> * To provide a way to run predefined management commands via CQL;
> * To provide a mechanism for retrieving command definitions and metadata via 
> CQL;
> * To provide information on all available management commands via virtual 
> tables;
> * To provide a registry that stores all C* commands and their metadata 
> accordingly;
> * To internal instrumentation and a reasonable plan for migrating cluster 
> management from JMX to CQL, taking into account backward compatibility and 
> adopted deprecation policies;
> The discussion on the ML:
> https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8
> The design document:
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, 

[jira] [Comment Edited] (CASSANDRA-19476) CQL Management API

2024-04-16 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17837675#comment-17837675
 ] 

Maxim Muzafarov edited comment on CASSANDRA-19476 at 4/16/24 12:08 PM:
---

I've spent some time prototyping the changes and the plan may be the following, 
splitting by the issues:
 # _Replace the airline with the picocli._ CASSANDRA-17445 The airlift library 
is now used to expose the management commands via the CLI. We can reuse this 
approach to keep the number of changes low, however, we need to replace the 
library with the picocli as the airlift has drawbacks. It prevents us from 
building JMX and CQL APIs in follows:
 ## The airlift library is no longer supported;
 ## The library handles the `[ ...]` as a single input 
argument, but we need to handle it independently as two input arguments 
`keyspace` and `tables` to build JMX and CQL APIs;
 ## All commands right now have host, port, username, and password options etc. 
which are not relevant to other types of interfaces;
 # {_}Create an adapter that builds dynamic JMX MBeans{_}, and parses the 
picocli annotations of the commands we already have. This will expose these 
commands with the same parameters and options that they have in the CLI, 
matching the nodetool CLI input. The management MBeans of the internal 
components e.g. StorageServiceMBean can be injected into the commands directly 
when the command context is initialized.
 # _Create a CQL command adapter._ Based on the commands annotations we can 
create a new adapter that handles command parameters received from the binary 
protocol, this is basically the same as new dynamic MBeans with the caveat that 
the binary protocol have to be improved to support new operation types.

Options 2 and 3 can be implemented independently.


was (Author: mmuzaf):
I've spent some time prototyping the changes and the plan may be the following, 
splitting by the issues:

 # _Replace the airline with the picocli._ CASSANDRA-17445 The airlift library 
is now used to expose the management commands via the CLI. We can reuse this 
approach to keep the number of changes low, however, we need to replace the 
library with the picocli as the airlift has drawbacks. It prevents us from 
building JMX and CQL APIs in follows: the airlift library is no longer 
supported, the library handles the `[ ...]` as a single input 
argument, but we need to handle it independently as two input arguments 
`keyspace` and `tables` to build JMX and CQL APIs.
# _Create an adapter that builds dynamic JMX MBeans_, and parses the picocli 
annotations of the commands we already have. This will expose these commands 
with the same parameters and options that they have in the CLI, matching the 
nodetool CLI input. The management MBeans of the internal components e.g. 
StorageServiceMBean can be injected into the commands directly when the command 
context is initialized.
# _Create a CQL command adapter._ Based on the commands annotations we can 
create a new adapter that handles command parameters received from the binary 
protocol, this is basically the same as new dynamic MBeans with the caveat that 
the binary protocol have to be improved to support new operation types.

Options 2 and 3 can be implemented independently.

> CQL Management API
> --
>
> Key: CASSANDRA-19476
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
> Project: Cassandra
>  Issue Type: Improvement
>  Components: CQL/Interpreter, CQL/Syntax, Tool/nodetool
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: High
>  Labels: CEP-38
> Fix For: 5.x
>
>
> We want to run management commands via CQL.
> The goals are:
> * To provide a way to run predefined management commands via CQL;
> * To provide a mechanism for retrieving command definitions and metadata via 
> CQL;
> * To provide information on all available management commands via virtual 
> tables;
> * To provide a registry that stores all C* commands and their metadata 
> accordingly;
> * To internal instrumentation and a reasonable plan for migrating cluster 
> management from JMX to CQL, taking into account backward compatibility and 
> adopted deprecation policies;
> The discussion on the ML:
> https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8
> The design document:
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-19476) CQL Management API

2024-04-16 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17837675#comment-17837675
 ] 

Maxim Muzafarov edited comment on CASSANDRA-19476 at 4/16/24 11:18 AM:
---

I've spent some time prototyping the changes and the plan may be the following, 
splitting by the issues:

 # _Replace the airline with the picocli._ CASSANDRA-17445 The airlift library 
is now used to expose the management commands via the CLI. We can reuse this 
approach to keep the number of changes low, however, we need to replace the 
library with the picocli as the airlift has drawbacks. It prevents us from 
building JMX and CQL APIs in follows: the airlift library is no longer 
supported, the library handles the `[ ...]` as a single input 
argument, but we need to handle it independently as two input arguments 
`keyspace` and `tables` to build JMX and CQL APIs.
# _Create an adapter that builds dynamic JMX MBeans_, and parses the picocli 
annotations of the commands we already have. This will expose these commands 
with the same parameters and options that they have in the CLI, matching the 
nodetool CLI input. The management MBeans of the internal components e.g. 
StorageServiceMBean can be injected into the commands directly when the command 
context is initialized.
# _Create a CQL command adapter._ Based on the commands annotations we can 
create a new adapter that handles command parameters received from the binary 
protocol, this is basically the same as new dynamic MBeans with the caveat that 
the binary protocol have to be improved to support new operation types.

Options 2 and 3 can be implemented independently.


was (Author: mmuzaf):
I've spent some time prototyping the changes and the plan may be the following, 
splitting by the issues:

 # _Replace the airline with the picocli._ CASSANDRA-17445 The airlift library 
is now used to expose the management commands via the CLI. We can reuse this 
approach to keep the number of changes low, however, we need to replace the 
library with the picocli as the airlift has drawbacks. It prevents us from 
building JMX and CQL APIs in follows: the airlift library is no longer 
supported, the library handles the `[ ...]` as a single input 
argument, but we need to handle it independently for JMX and CQL APIs.
# _Create an adapter that builds dynamic JMX MBeans_, and parses the picocli 
annotations of the commands we already have. This will expose these commands 
with the same parameters and options that they have in the CLI, matching the 
nodetool CLI input. The management MBeans of the internal components e.g. 
StorageServiceMBean can be injected into the commands directly when the command 
context is initialized.
# _Create a CQL command adapter._ Based on the commands annotations we can 
create a new adapter that handles command parameters received from the binary 
protocol, this is basically the same as new dynamic MBeans with the caveat that 
the binary protocol have to be improved to support new operation types.

Options 2 and 3 can be implemented independently.

> CQL Management API
> --
>
> Key: CASSANDRA-19476
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
> Project: Cassandra
>  Issue Type: Improvement
>  Components: CQL/Interpreter, CQL/Syntax, Tool/nodetool
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: High
>  Labels: CEP-38
> Fix For: 5.x
>
>
> We want to run management commands via CQL.
> The goals are:
> * To provide a way to run predefined management commands via CQL;
> * To provide a mechanism for retrieving command definitions and metadata via 
> CQL;
> * To provide information on all available management commands via virtual 
> tables;
> * To provide a registry that stores all C* commands and their metadata 
> accordingly;
> * To internal instrumentation and a reasonable plan for migrating cluster 
> management from JMX to CQL, taking into account backward compatibility and 
> adopted deprecation policies;
> The discussion on the ML:
> https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8
> The design document:
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19476) CQL Management API

2024-04-16 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17837675#comment-17837675
 ] 

Maxim Muzafarov commented on CASSANDRA-19476:
-

I've spent some time prototyping the changes and the plan may be the following, 
splitting by the issues:

 # _Replace the airline with the picocli._ CASSANDRA-17445 The airlift library 
is now used to expose the management commands via the CLI. We can reuse this 
approach to keep the number of changes low, however, we need to replace the 
library with the picocli as the airlift has drawbacks. It prevents us from 
building JMX and CQL APIs in follows: the airlift library is no longer 
supported, the library handles the `[ ...]` as a single input 
argument, but we need to handle it independently for JMX and CQL APIs.
# _Create an adapter that builds dynamic JMX MBeans_, and parses the picocli 
annotations of the commands we already have. This will expose these commands 
with the same parameters and options that they have in the CLI, matching the 
nodetool CLI input. The management MBeans of the internal components e.g. 
StorageServiceMBean can be injected into the commands directly when the command 
context is initialized.
# _Create a CQL command adapter._ Based on the commands annotations we can 
create a new adapter that handles command parameters received from the binary 
protocol, this is basically the same as new dynamic MBeans with the caveat that 
the binary protocol have to be improved to support new operation types.

Options 2 and 3 can be implemented independently.

> CQL Management API
> --
>
> Key: CASSANDRA-19476
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
> Project: Cassandra
>  Issue Type: Improvement
>  Components: CQL/Interpreter, CQL/Syntax, Tool/nodetool
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: High
>  Labels: CEP-38
> Fix For: 5.x
>
>
> We want to run management commands via CQL.
> The goals are:
> * To provide a way to run predefined management commands via CQL;
> * To provide a mechanism for retrieving command definitions and metadata via 
> CQL;
> * To provide information on all available management commands via virtual 
> tables;
> * To provide a registry that stores all C* commands and their metadata 
> accordingly;
> * To internal instrumentation and a reasonable plan for migrating cluster 
> management from JMX to CQL, taking into account backward compatibility and 
> adopted deprecation policies;
> The discussion on the ML:
> https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8
> The design document:
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19476) CQL Management API

2024-04-08 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19476:

Component/s: CQL/Interpreter
 Tool/nodetool

> CQL Management API
> --
>
> Key: CASSANDRA-19476
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
> Project: Cassandra
>  Issue Type: Improvement
>  Components: CQL/Interpreter, CQL/Syntax, Tool/nodetool
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: High
>  Labels: CEP-38
> Fix For: 5.x
>
>
> We want to run management commands via CQL.
> The goals are:
> * To provide a way to run predefined management commands via CQL;
> * To provide a mechanism for retrieving command definitions and metadata via 
> CQL;
> * To provide information on all available management commands via virtual 
> tables;
> * To provide a registry that stores all C* commands and their metadata 
> accordingly;
> * To internal instrumentation and a reasonable plan for migrating cluster 
> management from JMX to CQL, taking into account backward compatibility and 
> adopted deprecation policies;
> The discussion on the ML:
> https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8
> The design document:
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19486) enrich system_views.pending_hints with hints sizes

2024-04-04 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19486?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17833996#comment-17833996
 ] 

Maxim Muzafarov commented on CASSANDRA-19486:
-

[~smiklosovic] I'll take a look, sorry for the delay!

> enrich system_views.pending_hints with hints sizes
> --
>
> Key: CASSANDRA-19486
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19486
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Consistency/Hints
>Reporter: Stefan Miklosovic
>Assignee: Stefan Miklosovic
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> I am happy to close this if somebody shows me how to get total size of all 
> hints or all hints per particular node via JMX.
> I could find StorageMetrics.totalHints but that is how many hints there are, 
> not their sizes. We also have
> org.apache.cassandra.metrics:type=HintedHandOffManager name=
> org.apache.cassandra.metrics:type=HintsService name=
> But that is again showing other metrics not sizes.
> I would add two methods into HintsServiceMBean returning this. Seems to be 
> very easy to do once we do CASSANDRA-19477.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19486) enrich system_views.pending_hints with hints sizes

2024-04-04 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19486?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19486:

Reviewers: Maxim Muzafarov

> enrich system_views.pending_hints with hints sizes
> --
>
> Key: CASSANDRA-19486
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19486
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Consistency/Hints
>Reporter: Stefan Miklosovic
>Assignee: Stefan Miklosovic
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> I am happy to close this if somebody shows me how to get total size of all 
> hints or all hints per particular node via JMX.
> I could find StorageMetrics.totalHints but that is how many hints there are, 
> not their sizes. We also have
> org.apache.cassandra.metrics:type=HintedHandOffManager name=
> org.apache.cassandra.metrics:type=HintsService name=
> But that is again showing other metrics not sizes.
> I would add two methods into HintsServiceMBean returning this. Seems to be 
> very easy to do once we do CASSANDRA-19477.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

  Fix Version/s: 5.1
 (was: 5.x)
Source Control Link: 
https://github.com/apache/cassandra/commit/2e7def7626fe299318e0cf4c2bf8138a6c31e149
 Resolution: Fixed
 Status: Resolved  (was: Ready to Commit)

In addition, all the tests have been verified locally.
I ran the single-node cluster locally and checked all the added virtual tables.

The changes have been merged into the trunk branch.
Thank you everyone for all the reviews and comments.

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.1
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 7h 40m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-04-03 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17833682#comment-17833682
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

Rebased the patch at the top of the trunk branch, new test results are here:
https://app.circleci.com/pipelines/github/driftx/cassandra/1561/workflows/98e55dfa-07d2-4b31-a8dd-2327d84de7b9

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 7h 40m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

  Fix Version/s: 5.1
 (was: 5.x)
  Since Version: 5.x
Source Control Link: 
https://github.com/apache/cassandra/commit/154ef814bd2b7cf5290bf5f94484dd077b442449
 Resolution: Fixed
 Status: Resolved  (was: Ready to Commit)

Committed to the trunk.
[~claude] Thank you for your contribution.

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
> Fix For: 5.1
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

Reviewers: Brandon Williams, Maxim Muzafarov  (was: Maxim Muzafarov)

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

Status: Ready to Commit  (was: Review In Progress)

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17833534#comment-17833534
 ] 

Maxim Muzafarov commented on CASSANDRA-19502:
-

[~brandon.williams] thanks Brandon, looks like the tests have passed. 
Are you +1 too ? :-) 

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17833525#comment-17833525
 ] 

Maxim Muzafarov commented on CASSANDRA-19502:
-

j17:
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/623/workflows/7ef17f66-df13-44cf-92a6-ed856d7e30ac

j11:
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/623/workflows/03e77259-9da0-4adf-9ad2-9cb771bae1fe

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17833519#comment-17833519
 ] 

Maxim Muzafarov commented on CASSANDRA-19502:
-

I reviewed the changes, LGTM.

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

Status: Needs Committer  (was: Patch Available)

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

 Bug Category: Parent values: Correctness(12982)
   Complexity: Low Hanging Fruit
  Component/s: Test/unit
Discovered By: Unit Test
 Severity: Low
   Status: Open  (was: Triage Needed)

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

Fix Version/s: 5.x

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

Test and Documentation Plan: Run `ant test` locally.
 Status: Patch Available  (was: Open)

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>  Components: Test/unit
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19502) PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19502?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19502:

Reviewers: Maxim Muzafarov

> PropertyFileSnitchTest overwrites test/conf/cassandra-topology.properties
> -
>
> Key: CASSANDRA-19502
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19502
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Claude Warren
>Assignee: Claude Warren
>Priority: Normal
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> While this is not an issue for CI test or other items that replace the file 
> on a development system the file is left in its modified state and under risk 
> of being accidentally checked into the repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-04-03 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Reviewers: Chris Lohfink, Stefan Miklosovic  (was: Aleksey Yeschenko, 
Stefan Miklosovic)

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 7h 40m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-03-26 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Status: Ready to Commit  (was: Review In Progress)

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 7h 40m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-03-26 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17830990#comment-17830990
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

 Thanks to Brandon for running the tests:

j17
https://app.circleci.com/pipelines/github/driftx/cassandra/1539/workflows/31fe6cd5-e653-46f3-b44c-113568e275cf
j11
https://app.circleci.com/pipelines/github/driftx/cassandra/1539/workflows/fe10e6be-7095-4f13-94fa-ccb0c9cd2555/jobs/79506/parallel-runs/20

gossip_test.py::TestGossip::test_assassinate_valid_node -> CASSANDRA-18753
org.apache.cassandra.tcm.DiscoverySimulationTest -> I think, the test failed 
because of the network glitch (passes locally a few times)
org.apache.cassandra.distributed.test.NativeTransportEncryptionOptionsTest -> 
CASSANDRA-19281

The other seems to be just fine.


> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 7h 40m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-18753) Add an optimized default configuration to tests and make it available for new users

2024-03-26 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-18753?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17830932#comment-17830932
 ] 

Maxim Muzafarov commented on CASSANDRA-18753:
-

Sorry, if I got the status of the changes wrong. I haven't followed the 
discussion.

The changes have been merged into the trunk, but the issue is still unresolved 
and only points to the 5.0.x (the commit message refers to this issue). I think 
there is a mistake here, right? (the changes should be either rollbacked or the 
issue must have the right status).
[https://github.com/apache/cassandra/commit/06ed1afc34128523298020e7601dad148f2b2fb6]

It's also worth mentioning that some of the dtests are broken due to the 
changes in the trunk branch. 
It can be reproduced locally with a 100% chance.
{code:java}
memtable:
  configurations:
skiplist:
  class_name: SkipListMemtable
trie:
  class_name: TrieMemtable
default:
  inherits: skiplist
{code}
 

For example, the broken test (the trunk branch in the main project and the 
trunk branch in the dtests are used):
{code:java}
pytest --cassandra-dir=/Users/mm/IdeaProjects/cassandra 
gossip_test.py::TestGossip::test_assassinate_valid_node
{code}
The exception:
{code:java}
node1: ERROR [main] 2024-03-26 13:27:38,909 CassandraDaemon.java:900 - 
Exception encountered during startup
  java.lang.ExceptionInInitializerError: null
at 
org.apache.cassandra.schema.TableParams$Builder.(TableParams.java:362)
at org.apache.cassandra.schema.TableParams.builder(TableParams.java:127)
at 
org.apache.cassandra.cql3.statements.schema.TableAttributes.validate(TableAttributes.java:60)
at 
org.apache.cassandra.cql3.statements.schema.CreateTableStatement.builder(CreateTableStatement.java:196)
at 
org.apache.cassandra.cql3.statements.schema.CreateTableStatement.parse(CreateTableStatement.java:474)
at 
org.apache.cassandra.schema.SchemaKeyspace.parse(SchemaKeyspace.java:278)
at 
org.apache.cassandra.schema.SchemaKeyspace.(SchemaKeyspace.java:92)
at org.apache.cassandra.schema.Schema.initialize(Schema.java:77)
at org.apache.cassandra.schema.Schema.(Schema.java:72)
at org.apache.cassandra.db.Keyspace.setInitialized(Keyspace.java:124)
at 
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:261)
at 
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:728)
at 
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:878)
  Caused by: org.apache.cassandra.exceptions.ConfigurationException: 
Configuration definition inherits unknown skiplist. A configuration can only 
extend one defined earlier or "default".
at 
org.apache.cassandra.config.InheritingClass.resolve(InheritingClass.java:54)
at 
org.apache.cassandra.schema.MemtableParams.expandDefinitions(MemtableParams.java:151)
at 
org.apache.cassandra.schema.MemtableParams.(MemtableParams.java:101)
... 13 common frames omitted
{code}

Posting the stacktrace for visibility.

> Add an optimized default configuration to tests and make it available for new 
> users
> ---
>
> Key: CASSANDRA-18753
> URL: https://issues.apache.org/jira/browse/CASSANDRA-18753
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Packaging
>Reporter: Branimir Lambov
>Assignee: Branimir Lambov
>Priority: Urgent
> Fix For: 5.0-rc, 5.x
>
> Attachments: 
> CCM_Add_support_for_specifying_the_name_of_the_file_to_use_as_cassandra_YAML_.patch,
>  
> DTEST_Add_support_for_specifying_the_name_of_the_file_to_use_as_cassandra_YAML_.patch
>
>  Time Spent: 12h 20m
>  Remaining Estimate: 0h
>
> We currently offer only one sample configuration file with Cassandra, and 
> that file is deliberately configured to disable all new functionality and 
> incompatible improvements. This works well for legacy users that want to have 
> a painless upgrade, but is a very bad choice for new users, or anyone wanting 
> to make comparisons between Cassandra versions or between Cassandra and other 
> databases.
> We offer very little indication, in the database packaging itself, that there 
> are well-tested configuration choices that can solve known problems and 
> dramatically improve performance. This is guaranteed to paint the database in 
> a worse light than it deserves, and will very likely hurt adoption.
> We should find a way to offer a very easy way of choosing between "optimized" 
> and "compatible" defaults. At minimal, we could provide alternate yaml files. 
> Alternatively, we could build on the {{storage_compatibility_mode}} concept 
> to grow it into a setting that not only enables/disables certain settings, 
> 

[jira] [Updated] (CASSANDRA-13855) Implement Http Seed provider

2024-03-26 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-13855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-13855:

Reviewers: Jon Haddad, Maxim Muzafarov, Stefan Miklosovic  (was: Jacek 
Lewandowski, Jon Haddad, Stefan Miklosovic)
   Status: Review In Progress  (was: Needs Committer)

> Implement Http Seed provider
> 
>
> Key: CASSANDRA-13855
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13855
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Legacy/Coordination, Legacy/Core
>Reporter: Jon Haddad
>Assignee: Claude Warren
>Priority: Low
>  Labels: lhf
> Fix For: 5.x
>
> Attachments: 0001-Add-URL-Seed-Provider-trunk.txt, signature.asc, 
> signature.asc, signature.asc
>
>  Time Spent: 4.5h
>  Remaining Estimate: 0h
>
> Seems like including a dead simple seed provider that can fetch from a URL, 1 
> line per seed, would be useful.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-13855) Implement Http Seed provider

2024-03-26 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-13855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-13855:

Status: Changes Suggested  (was: Review In Progress)

> Implement Http Seed provider
> 
>
> Key: CASSANDRA-13855
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13855
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Legacy/Coordination, Legacy/Core
>Reporter: Jon Haddad
>Assignee: Claude Warren
>Priority: Low
>  Labels: lhf
> Fix For: 5.x
>
> Attachments: 0001-Add-URL-Seed-Provider-trunk.txt, signature.asc, 
> signature.asc, signature.asc
>
>  Time Spent: 4.5h
>  Remaining Estimate: 0h
>
> Seems like including a dead simple seed provider that can fetch from a URL, 1 
> line per seed, would be useful.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19332) Dropwizard Meter causes timeouts when infrequently used

2024-03-25 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17830659#comment-17830659
 ] 

Maxim Muzafarov commented on CASSANDRA-19332:
-

My +1 here as well. 

> Dropwizard Meter causes timeouts when infrequently used
> ---
>
> Key: CASSANDRA-19332
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19332
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Ariel Weisberg
>Assignee: Ariel Weisberg
>Priority: Normal
> Fix For: 4.0.x, 4.1.x, 5.0, 5.1
>
> Attachments: ci_summary_4.1.html, ci_summary_5.0.html, 
> ci_summary_trunk.html, result_details_4.1.tar.gz, result_details_5.0.tar.gz, 
> result_details_trunk.tar.gz
>
>
> Observed instances of timeouts on clusters with long uptime and infrequently 
> used tables and possibly just request paths such as not using CAS for large 
> fractions of a year.
> CAS seems to be more severely impacted because it has more metrics in the 
> request path such as latency measurements for prepare, propose, and the read 
> from the underlying table.
> Tracing showed ~600-800 milliseconds for these operations in between the 
> “appending to memtable” and “sending a response” events. Reads had a delay 
> between finishing the construction of the iterator and sending the read 
> response.
> Stack traces dumped every 100 milliseconds using {{sjk}} shows that in 
> prepare and propose a lot of time was being spent in 
> {{{}Meter.tickIfNecessary{}}}.
> {code:java}
> Thread [2537] RUNNABLE at 2024-01-25T21:14:48.218 - MutationStage-2
> com.codahale.metrics.Meter.tickIfNecessary(Meter.java:71)
> com.codahale.metrics.Meter.mark(Meter.java:55)
> com.codahale.metrics.Meter.mark(Meter.java:46)
> com.codahale.metrics.Timer.update(Timer.java:150)
> com.codahale.metrics.Timer.update(Timer.java:86)
> org.apache.cassandra.metrics.LatencyMetrics.addNano(LatencyMetrics.java:159)
> org.apache.cassandra.service.paxos.PaxosState.prepare(PaxosState.java:92)
> Thread [2539] RUNNABLE at 2024-01-25T21:14:48.520 - MutationStage-4
> com.codahale.metrics.Meter.tickIfNecessary(Meter.java:72)
> com.codahale.metrics.Meter.mark(Meter.java:55)
> com.codahale.metrics.Meter.mark(Meter.java:46)
> com.codahale.metrics.Timer.update(Timer.java:150)
> com.codahale.metrics.Timer.update(Timer.java:86)
> org.apache.cassandra.metrics.LatencyMetrics.addNano(LatencyMetrics.java:159)
> org.apache.cassandra.service.paxos.PaxosState.propose(PaxosState.java:127){code}
> {{tickIfNecessary}} does a linear amount of work proportional to the time 
> since the last time the metric was updated/read/created and this can actually 
> take a measurable amount of time even in a tight loop. On my M2 MBP it was 
> 1.5 milliseconds for a day, ~200 days took ~74 milliseconds. Before it warmed 
> up it was 140 milliseconds.
> A quick fix is to schedule a task to read all the meters once a day so it 
> isn’t done in the request path and we have a more incremental amount to 
> process at a time.
> Also observed that {{tickIfNecessary}} is not 100% thread safe in that if it 
> takes longer than 5 seconds to run the loop it can end up with multiple 
> threads attempting to run the loop at once and then they will concurrently 
> run {{EWMA.tick}} which probably results in some ticks not being performed.
> This issue is still present in the latest version of {{Metrics}} if using 
> {{{}EWMA{}}}, but {{SlidingWindowTimeAverages}} looks like it has a bounded 
> amount of work required to tick.  Switching would change how our metrics work 
> since the two don't have the same behavior.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-13855) Implement Http Seed provider

2024-03-25 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-13855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17830597#comment-17830597
 ] 

Maxim Muzafarov edited comment on CASSANDRA-13855 at 3/25/24 4:59 PM:
--

I've left some comments on the PR.


was (Author: mmuzaf):
I've lest some comments to the PR.

> Implement Http Seed provider
> 
>
> Key: CASSANDRA-13855
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13855
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Legacy/Coordination, Legacy/Core
>Reporter: Jon Haddad
>Assignee: Claude Warren
>Priority: Low
>  Labels: lhf
> Fix For: 5.x
>
> Attachments: 0001-Add-URL-Seed-Provider-trunk.txt, signature.asc, 
> signature.asc, signature.asc
>
>  Time Spent: 4h
>  Remaining Estimate: 0h
>
> Seems like including a dead simple seed provider that can fetch from a URL, 1 
> line per seed, would be useful.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-13855) Implement Http Seed provider

2024-03-25 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-13855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17830597#comment-17830597
 ] 

Maxim Muzafarov commented on CASSANDRA-13855:
-

I've lest some comments to the PR.

> Implement Http Seed provider
> 
>
> Key: CASSANDRA-13855
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13855
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Legacy/Coordination, Legacy/Core
>Reporter: Jon Haddad
>Assignee: Claude Warren
>Priority: Low
>  Labels: lhf
> Fix For: 5.x
>
> Attachments: 0001-Add-URL-Seed-Provider-trunk.txt, signature.asc, 
> signature.asc, signature.asc
>
>  Time Spent: 4h
>  Remaining Estimate: 0h
>
> Seems like including a dead simple seed provider that can fetch from a URL, 1 
> line per seed, would be useful.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-13855) Implement Http Seed provider

2024-03-22 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-13855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17829900#comment-17829900
 ] 

Maxim Muzafarov commented on CASSANDRA-13855:
-

As I said I have nothing against the HttpSeedProvider, I'll review the current 
changes.

Regarding Cloud SeedProviders, I think it should be possible to get a node tag 
from the pod metadata in json format as we do now, so we probably don't need to 
add any extra dependencies. Once each the seed metadata info is initialized, we 
can put that in the ClusterMetadata as we did it for the rack parameter, this 
should work, however I haven't tried implementing it on my end.

https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/locator/AbstractCloudMetadataServiceSnitch.java#L72
{code}
if (endpoint.equals(FBUtilities.getBroadcastAddressAndPort()))
return getLocalRack();
ClusterMetadata metadata = ClusterMetadata.current();
NodeId nodeId = metadata.directory.peerId(endpoint);
if (nodeId == null)
return DEFAULT_RACK;
return metadata.directory.location(nodeId).rack;
{code}

I'm going to create an issue so we don't mix it up here.

> Implement Http Seed provider
> 
>
> Key: CASSANDRA-13855
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13855
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Legacy/Coordination, Legacy/Core
>Reporter: Jon Haddad
>Assignee: Claude Warren
>Priority: Low
>  Labels: lhf
> Fix For: 5.x
>
> Attachments: 0001-Add-URL-Seed-Provider-trunk.txt, signature.asc, 
> signature.asc, signature.asc
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Seems like including a dead simple seed provider that can fetch from a URL, 1 
> line per seed, would be useful.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-13855) Implement Http Seed provider

2024-03-21 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-13855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17829689#comment-17829689
 ] 

Maxim Muzafarov commented on CASSANDRA-13855:
-

Hey,

I've checked the implementation and I'd like to throw a new idea on the table. 
I have nothing against the HttpSeedProvider itself, but I guess for the end 
user it is more interesting to have cloud-related stuff that they are already 
configured with (the same as we provide for the snitches - Azure, EC2, Google).

Here are the SeedProviders that can be found on the GitHub:
https://github.com/search?q=SeedProvider=repositories

So, I guess we don't need to create a parallel hierarchy of classes for the 
SeedProvider interface and can do the following:
# Either extend the IEndpointSnitch or create a new interface new a new :
{code}
public String getRack(InetAddressAndPort endpoint);
public String getDatacenter(InetAddressAndPort endpoint);
/** {@code true} if the endpoint is the seed node. */
default public boolean isSeed(InetAddressAndPort endpoint) {};
{code} 
# Implement a new {{isSeed}} method for each cloud adapter we are interested in 
e.g. EC2, Azure, Google etc. that fetches the seed status from a tag.
https://github.com/kryptnostic/ec2-cassandra-seedprovider/blob/master/src/main/java/com/kryptnostic/Ec2SeedProvider.java#L35
# Create a new adapter that implements the SeedProvider interface and wraps the 
{{IEndpointSnitch}} e.g. new CloudSeedProvider(IEndpointSnitch snitch). 

WDYT?

> Implement Http Seed provider
> 
>
> Key: CASSANDRA-13855
> URL: https://issues.apache.org/jira/browse/CASSANDRA-13855
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Legacy/Coordination, Legacy/Core
>Reporter: Jon Haddad
>Assignee: Claude Warren
>Priority: Low
>  Labels: lhf
> Fix For: 5.x
>
> Attachments: 0001-Add-URL-Seed-Provider-trunk.txt, signature.asc, 
> signature.asc, signature.asc
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Seems like including a dead simple seed provider that can fetch from a URL, 1 
> line per seed, would be useful.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19476) CQL Management API

2024-03-15 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19476:

Labels: CEP-38  (was: )

> CQL Management API
> --
>
> Key: CASSANDRA-19476
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
> Project: Cassandra
>  Issue Type: Improvement
>  Components: CQL/Syntax
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: High
>  Labels: CEP-38
> Fix For: 5.x
>
>
> We want to run management commands via CQL.
> The goals are:
> * To provide a way to run predefined management commands via CQL;
> * To provide a mechanism for retrieving command definitions and metadata via 
> CQL;
> * To provide information on all available management commands via virtual 
> tables;
> * To provide a registry that stores all C* commands and their metadata 
> accordingly;
> * To internal instrumentation and a reasonable plan for migrating cluster 
> management from JMX to CQL, taking into account backward compatibility and 
> adopted deprecation policies;
> The discussion on the ML:
> https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8
> The design document:
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19476) CQL Management API

2024-03-15 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19476:

Change Category: Operability
 Complexity: Challenging
  Fix Version/s: 5.x
   Priority: High  (was: Normal)
 Status: Open  (was: Triage Needed)

> CQL Management API
> --
>
> Key: CASSANDRA-19476
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
> Project: Cassandra
>  Issue Type: Improvement
>  Components: CQL/Syntax
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: High
> Fix For: 5.x
>
>
> We want to run management commands via CQL.
> The goals are:
> * To provide a way to run predefined management commands via CQL;
> * To provide a mechanism for retrieving command definitions and metadata via 
> CQL;
> * To provide information on all available management commands via virtual 
> tables;
> * To provide a registry that stores all C* commands and their metadata 
> accordingly;
> * To internal instrumentation and a reasonable plan for migrating cluster 
> management from JMX to CQL, taking into account backward compatibility and 
> adopted deprecation policies;
> The discussion on the ML:
> https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8
> The design document:
> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Created] (CASSANDRA-19476) CQL Management API

2024-03-15 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created CASSANDRA-19476:
---

 Summary: CQL Management API
 Key: CASSANDRA-19476
 URL: https://issues.apache.org/jira/browse/CASSANDRA-19476
 Project: Cassandra
  Issue Type: Improvement
  Components: CQL/Syntax
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov


We want to run management commands via CQL.
The goals are:
* To provide a way to run predefined management commands via CQL;
* To provide a mechanism for retrieving command definitions and metadata via 
CQL;
* To provide information on all available management commands via virtual 
tables;
* To provide a registry that stores all C* commands and their metadata 
accordingly;
* To internal instrumentation and a reasonable plan for migrating cluster 
management from JMX to CQL, taking into account backward compatibility and 
adopted deprecation policies;

The discussion on the ML:
https://lists.apache.org/thread/pow83q92m666nqtwyw4m3b18nnkgj2y8

The design document:
https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-38%3A+CQL+Management+API



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-03-13 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19447:

  Fix Version/s: 5.1
 (was: 5.x)
Source Control Link: 
https://github.com/apache/cassandra/commit/81a2cb782eed932961b0c89fbd40199c7269c662
 Resolution: Fixed
 Status: Resolved  (was: Ready to Commit)

Verified repeated run locally against the trunk branch, everything passes. I've 
also checked the {{FailedBootstapTest}} on the trunk branch without my changes 
and on the PR branch, so it passes all the time in both cases.

The patch merged here:
https://github.com/apache/cassandra/commit/81a2cb782eed932961b0c89fbd40199c7269c662

[~smiklosovic] Thank you for the review.

> Register the measurements of the bootstrap as Dropwizard metrics
> 
>
> Key: CASSANDRA-19447
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/JMX, Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.1
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> Currently, we can view the node's bootstrap state in the following ways:
> - via the nodetool cli tool, e.g. by running the "resume" command;
> - querying the bootstrapped column of the system_veis.local virtual table;
> In addition, we can also expose the status and state of the node's bootstrap 
> via JMX. This is used by third-party tools that rely entirely on the JMX API 
> and don't have access to the CQL interface. The operator will be able to get 
> all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-03-07 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17824393#comment-17824393
 ] 

Maxim Muzafarov edited comment on CASSANDRA-19447 at 3/7/24 3:58 PM:
-

Fixed all the comments.

Tests:
j17
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/610/workflows/f898c14b-b248-4579-9c80-3de79f3ee505

j11
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/610/workflows/40feba6e-3bae-43c3-b1ec-6e6c7e82f254


was (Author: mmuzaf):
Fixed all the comments.
Tests:
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/610/workflows/f898c14b-b248-4579-9c80-3de79f3ee505


> Register the measurements of the bootstrap as Dropwizard metrics
> 
>
> Key: CASSANDRA-19447
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/JMX, Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> Currently, we can view the node's bootstrap state in the following ways:
> - via the nodetool cli tool, e.g. by running the "resume" command;
> - querying the bootstrapped column of the system_veis.local virtual table;
> In addition, we can also expose the status and state of the node's bootstrap 
> via JMX. This is used by third-party tools that rely entirely on the JMX API 
> and don't have access to the CQL interface. The operator will be able to get 
> all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-03-07 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17824393#comment-17824393
 ] 

Maxim Muzafarov commented on CASSANDRA-19447:
-

Fixed all the comments.
Tests:
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/610/workflows/f898c14b-b248-4579-9c80-3de79f3ee505


> Register the measurements of the bootstrap as Dropwizard metrics
> 
>
> Key: CASSANDRA-19447
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/JMX, Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> Currently, we can view the node's bootstrap state in the following ways:
> - via the nodetool cli tool, e.g. by running the "resume" command;
> - querying the bootstrapped column of the system_veis.local virtual table;
> In addition, we can also expose the status and state of the node's bootstrap 
> via JMX. This is used by third-party tools that rely entirely on the JMX API 
> and don't have access to the CQL interface. The operator will be able to get 
> all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-03-04 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17823214#comment-17823214
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

[~smiklosovic] I agree, no need to commit the script to the patch itself. I was 
thinking of putting it here in the comments, or on the gist. That way everyone 
can use it.

Anyway, thank you for the comments, I've fixed all of them. 

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 7h
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-02-28 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17821847#comment-17821847
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

Hello [~smiklosovic], thank you for your comments. I'm also in favour of the 
simple plain approach without incorporating the annotation processor build 
logic into the build process. I have fixed your suggestions based on the given 
branch.

https://github.com/apache/cassandra/pull/3152/files (the link was fixed to the 
PR from a fork).


I wouldn't go into coupling the CounterMetricRow and 
RowWalker classes, as it has no benefit other than saving 
lines of code. Merging these classes results in a tedious implementation each 
time a new representation is required, and it is also less error-prone as we 
have to keep the metadata in sync. 

I'm not holding out for this particular implementation, but since we've removed 
the annotation processor, we'd better add a shell script next to this PR (in a 
JIRA comment or somewhere on the GitHub) that helps to generate these "walkers".

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 3h 10m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-02-28 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17820831#comment-17820831
 ] 

Maxim Muzafarov edited comment on CASSANDRA-14572 at 2/28/24 6:06 PM:
--

These pull requests compare approaches with and without the annotation 
processor (the diff in the source code lines is not too big).

With the annotation processor:
https://github.com/apache/cassandra/pull/2958/files
+3,646 −419

Without the annotation processor:
https://github.com/apache/cassandra/pull/3152/files
+3,884 −418



was (Author: mmuzaf):
These pull requests compare approaches with and without the annotation 
processor (the diff in the source code lines is not too big).

With the annotation processor:
https://github.com/apache/cassandra/pull/2958/files
+3,646 −419

Without the annotation processor:
https://github.com/apache/cassandra/pull/3137/files
+3,884 −418


> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 3h
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-02-28 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19447?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17821749#comment-17821749
 ] 

Maxim Muzafarov commented on CASSANDRA-19447:
-

Run tests here:
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/592/workflows/e6d73c3c-45cb-4cfc-83e4-5fa75b7cff37

> Register the measurements of the bootstrap as Dropwizard metrics
> 
>
> Key: CASSANDRA-19447
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/JMX, Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, we can view the node's bootstrap state in the following ways:
> - via the nodetool cli tool, e.g. by running the "resume" command;
> - querying the bootstrapped column of the system_veis.local virtual table;
> In addition, we can also expose the status and state of the node's bootstrap 
> via JMX. This is used by third-party tools that rely entirely on the JMX API 
> and don't have access to the CQL interface. The operator will be able to get 
> all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-02-27 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19447:

Test and Documentation Plan: Run BootstrapTest and FailedBootstrapTest 
which are a part of the patch. Run CI
 Status: Patch Available  (was: Open)

> Register the measurements of the bootstrap as Dropwizard metrics
> 
>
> Key: CASSANDRA-19447
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/JMX, Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, we can view the node's bootstrap state in the following ways:
> - via the nodetool cli tool, e.g. by running the "resume" command;
> - querying the bootstrapped column of the system_veis.local virtual table;
> In addition, we can also expose the status and state of the node's bootstrap 
> via JMX. This is used by third-party tools that rely entirely on the JMX API 
> and don't have access to the CQL interface. The operator will be able to get 
> all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-02-27 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19447:

Fix Version/s: 5.x

> Register the measurements of the bootstrap as Dropwizard metrics
> 
>
> Key: CASSANDRA-19447
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/JMX, Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, we can view the node's bootstrap state in the following ways:
> - via the nodetool cli tool, e.g. by running the "resume" command;
> - querying the bootstrapped column of the system_veis.local virtual table;
> In addition, we can also expose the status and state of the node's bootstrap 
> via JMX. This is used by third-party tools that rely entirely on the JMX API 
> and don't have access to the CQL interface. The operator will be able to get 
> all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-02-27 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19447:

Change Category: Operability
 Complexity: Normal
Component/s: Observability/JMX
 Observability/Metrics
 Status: Open  (was: Triage Needed)

> Register the measurements of the bootstrap as Dropwizard metrics
> 
>
> Key: CASSANDRA-19447
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Observability/JMX, Observability/Metrics
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Normal
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, we can view the node's bootstrap state in the following ways:
> - via the nodetool cli tool, e.g. by running the "resume" command;
> - querying the bootstrapped column of the system_veis.local virtual table;
> In addition, we can also expose the status and state of the node's bootstrap 
> via JMX. This is used by third-party tools that rely entirely on the JMX API 
> and don't have access to the CQL interface. The operator will be able to get 
> all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Created] (CASSANDRA-19447) Register the measurements of the bootstrap as Dropwizard metrics

2024-02-27 Thread Maxim Muzafarov (Jira)
Maxim Muzafarov created CASSANDRA-19447:
---

 Summary: Register the measurements of the bootstrap as Dropwizard 
metrics
 Key: CASSANDRA-19447
 URL: https://issues.apache.org/jira/browse/CASSANDRA-19447
 Project: Cassandra
  Issue Type: Improvement
Reporter: Maxim Muzafarov
Assignee: Maxim Muzafarov


Currently, we can view the node's bootstrap state in the following ways:
- via the nodetool cli tool, e.g. by running the "resume" command;
- querying the bootstrapped column of the system_veis.local virtual table;

In addition, we can also expose the status and state of the node's bootstrap 
via JMX. This is used by third-party tools that rely entirely on the JMX API 
and don't have access to the CQL interface. The operator will be able to get 
all the information they need from the dashboards without having to use CLIs.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-02-26 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17820831#comment-17820831
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

These pull requests compare approaches with and without the annotation 
processor (the diff in the source code lines is not too big).

With the annotation processor:
https://github.com/apache/cassandra/pull/2958/files
+3,646 −419

Without the annotation processor:
https://github.com/apache/cassandra/pull/3137/files
+3,884 −418


> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 2h 40m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-17062) Refactor structure of caching metrics to weighted and unweighted

2024-02-07 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-17062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17815326#comment-17815326
 ] 

Maxim Muzafarov commented on CASSANDRA-17062:
-

I've reviewed the changes [1], +1 LGMT
[1] https://github.com/apache/cassandra/pull/3002

> Refactor structure of caching metrics to weighted and unweighted 
> -
>
> Key: CASSANDRA-17062
> URL: https://issues.apache.org/jira/browse/CASSANDRA-17062
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Feature/Virtual Tables, Observability/Metrics, 
> Tool/nodetool
>Reporter: Aleksei Zotov
>Assignee: Stefan Miklosovic
>Priority: Normal
> Fix For: 5.x
>
>  Time Spent: 7h 50m
>  Remaining Estimate: 0h
>
> Unlike to other caches (row, key, counter), Auth Caches lack some monitoring 
> capabilities. Here are a few particular changes to get this inequity fixed:
>  # Add auth caches to _system_views.caches_ VT
>  # Expose auth caches metrics via JMX
>  # Add auth caches details to _nodetool info_
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19332) Dropwizard Meter causes timeouts when infrequently used

2024-01-26 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19332?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17811415#comment-17811415
 ] 

Maxim Muzafarov commented on CASSANDRA-19332:
-

Should we also create an issue for the Dropwizard Metrics?
https://github.com/dropwizard/metrics/issues

> Dropwizard Meter causes timeouts when infrequently used
> ---
>
> Key: CASSANDRA-19332
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19332
> Project: Cassandra
>  Issue Type: Bug
>  Components: Observability/Metrics
>Reporter: Ariel Weisberg
>Assignee: Ariel Weisberg
>Priority: Normal
> Fix For: 4.0.x, 4.1.x, 5.0.x, 5.x
>
>
> Observed instances of timeouts on clusters with long uptime and infrequently 
> used tables and possibly just request paths such as not using CAS for large 
> fractions of a year.
> CAS seems to be more severely impacted because it has more metrics in the 
> request path such as latency measurements for prepare, propose, and the read 
> from the underlying table.
> Tracing showed ~600-800 milliseconds for these operations in between the 
> “appending to memtable” and “sending a response” events. Reads had a delay 
> between finishing the construction of the iterator and sending the read 
> response.
> Stack traces dumped every 100 milliseconds using {{sjk}} shows that in 
> prepare and propose a lot of time was being spent in 
> {{{}Meter.tickIfNecessary{}}}.
> {code:java}
> Thread [2537] RUNNABLE at 2024-01-25T21:14:48.218 - MutationStage-2
> com.codahale.metrics.Meter.tickIfNecessary(Meter.java:71)
> com.codahale.metrics.Meter.mark(Meter.java:55)
> com.codahale.metrics.Meter.mark(Meter.java:46)
> com.codahale.metrics.Timer.update(Timer.java:150)
> com.codahale.metrics.Timer.update(Timer.java:86)
> org.apache.cassandra.metrics.LatencyMetrics.addNano(LatencyMetrics.java:159)
> org.apache.cassandra.service.paxos.PaxosState.prepare(PaxosState.java:92)
> Thread [2539] RUNNABLE at 2024-01-25T21:14:48.520 - MutationStage-4
> com.codahale.metrics.Meter.tickIfNecessary(Meter.java:72)
> com.codahale.metrics.Meter.mark(Meter.java:55)
> com.codahale.metrics.Meter.mark(Meter.java:46)
> com.codahale.metrics.Timer.update(Timer.java:150)
> com.codahale.metrics.Timer.update(Timer.java:86)
> org.apache.cassandra.metrics.LatencyMetrics.addNano(LatencyMetrics.java:159)
> org.apache.cassandra.service.paxos.PaxosState.propose(PaxosState.java:127){code}
> {{tickIfNecessary}} does a linear amount of work proportional to the time 
> since the last time the metric was updated/read/created and this can actually 
> take a measurable amount of time even in a tight loop. On my M2 MBP it was 
> 1.5 milliseconds for a day, ~200 days took ~74 milliseconds. Before it warmed 
> up it was 140 milliseconds.
> A quick fix is to schedule a task to read all the meters once a day so it 
> isn’t done in the request path and we have a more incremental amount to 
> process at a time.
> Also observed that {{tickIfNecessary}} is not 100% thread safe in that if it 
> takes longer than 5 seconds to run the loop it can end up with multiple 
> threads attempting to run the loop at once and then they will concurrently 
> run {{EWMA.tick}} which probably results in some ticks not being performed.
> This issue is still present in the latest version of {{Metrics}} if using 
> {{{}EWMA{}}}, but {{SlidingWindowTimeAverages}} looks like it has a bounded 
> amount of work required to tick.  Switching would change how our metrics work 
> since the two don't have the same behavior.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-01-26 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17811370#comment-17811370
 ] 

Maxim Muzafarov edited comment on CASSANDRA-14572 at 1/26/24 7:12 PM:
--

[~mck] I've fixed your comments. 

[~djoshi], [~cnlwsu], [~smiklosovic], [~aleksey] Would you mind looking at 
these changes? I have a lot of hope that we can make some progress here, I've 
spent a lot of time polishing it :-)

https://github.com/apache/cassandra/pull/2958/files


was (Author: mmuzaf):
[~mck] I've fixed your comments. 

[~djoshi], [~cnlwsu], [~smiklosovic], [~aleksey] Would you mind looking at 
these changes? I have a lot of hope that we can make some progress here, I've 
spent a lot of time polishing them :-)

https://github.com/apache/cassandra/pull/2958/files

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-01-26 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17811370#comment-17811370
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

[~mck] I've fixed your comments. 

[~djoshi], [~cnlwsu], [~smiklosovic], [~aleksey] Would you mind looking at 
these changes? I have a lot of hope that we can make some progress here, I've 
spent a lot of time polishing them :-)

https://github.com/apache/cassandra/pull/2958/files

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-01-22 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17809602#comment-17809602
 ] 

Maxim Muzafarov edited comment on CASSANDRA-14572 at 1/22/24 8:11 PM:
--

I think we can add a rate limiter or guardrail in a follow-up issue to prevent 
unwise use of metric polling, but currently, I think it is beyond the issue's 
scope as there should be no difference in a pattern usage for JMX and/or CQL 
polling. Accessing a metric by metric name is super efficient while selecting a 
large range of metrics from a large metrics set is not efficient since it 
requires the MetrciRegisty collection to be filtered each time for the required 
subset of metrics, but it doesn't cause any problems or OOMs.

As I mentioned earlier, I've created 1000 keyspaces with one table each, 
resulting in 77k metrics, you can check [the 
latest|https://issues.apache.org/jira/browse/CASSANDRA-14572?focusedCommentId=17800388=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17800388]
 benchmark for polling a metric.

The JFR for that run is here:
 [^flight_recording_1270017199_13.jfr] 

The 

{code:java}
cqlsh> select count(*) from system_metrics.keyspace_group ;

 count
---
 77462

(1 rows)
{code}

The query that I used selects a metric by partition:
{code:java}
select * from system_metrics.keyspace_group where name = ?
{code}



was (Author: mmuzaf):
I think we can add a rate limiter or guardrail in a follow-up issue to prevent 
unwise use of metric polling, but currently, I think it is beyond the issue's 
scope as there should be no difference in a pattern usage for JMX and/or CQL 
polling. Accessing a metric by metric name is super efficient while selecting a 
large range of metrics from a large metrics set is not efficient since it 
requires the MetrciRegisty collection to be filtered each time for the required 
subset of metrics, but it doesn't cause any problems or OOMs.

As I mentioned earlier, I've created 1000 keyspaces with one table, which 
resulted in 77k metrics you can check the latest benchmark for polling a 
metric. 

The JFR for that run is here:
 [^flight_recording_1270017199_13.jfr] 

The 

{code:java}
cqlsh> select count(*) from system_metrics.keyspace_group ;

 count
---
 77462

(1 rows)
{code}

The query that I used selects a metric by partition:
{code:java}
select * from system_metrics.keyspace_group where name = ?
{code}


> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-01-22 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17809602#comment-17809602
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

I think we can add a rate limiter or guardrail in a follow-up issue to prevent 
unwise use of metric polling, but currently, I think it is beyond the issue's 
scope as there should be no difference in a pattern usage for JMX and/or CQL 
polling. Accessing a metric by metric name is super efficient while selecting a 
large range of metrics from a large metrics set is not efficient since it 
requires the MetrciRegisty collection to be filtered each time for the required 
subset of metrics, but it doesn't cause any problems or OOMs.

As I mentioned earlier, I've created 1000 keyspaces with one table, which 
resulted in 77k metrics you can check the latest benchmark for polling a 
metric. 

The JFR for that run is here:
 [^flight_recording_1270017199_13.jfr] 

The 

{code:java}
cqlsh> select count(*) from system_metrics.keyspace_group ;

 count
---
 77462

(1 rows)
{code}

The query that I used selects a metric by partition:
{code:java}
select * from system_metrics.keyspace_group where name = ?
{code}


> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-01-22 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Attachment: flight_recording_1270017199_13.jfr

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: flight_recording_1270017199_13.jfr, keyspayces_group 
> responses times.png, keyspayces_group summary.png, select keyspaces_group by 
> string prefix.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2024-01-22 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17809407#comment-17809407
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

It is implemented so that continuous polling of a metric does not cause 
problems, as shown in the benchmarks above :) I did a lot of testing for that 
to verify the final result. 

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, select keyspaces_group by string prefix.png, select 
> keyspaces_group compare with wo.png, select keyspaces_group without 
> value.png, systemv_views.metrics_dropped_message.png, thread_pools 
> benchmark.png
>
>  Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14867) Histogram overflows potentially leading to writes failing

2023-12-27 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14867?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14867:

 Bug Category: Parent values: Correctness(12982)
   Complexity: Normal
Fix Version/s: 5.x
Since Version: 3.11.1

> Histogram overflows potentially leading to writes failing
> -
>
> Key: CASSANDRA-14867
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14867
> Project: Cassandra
>  Issue Type: Bug
>  Components: Legacy/Streaming and Messaging
> Environment: cassandra 3.11.1 on ubuntu 16.04
>Reporter: David
>Priority: Normal
> Fix For: 5.x
>
>
> I observed the following in cassandra logs on 1 host of a 6-node cluster:
> {code}
> ERROR [ScheduledTasks:1] 2018-11-01 17:26:41,277 CassandraDaemon.java:228 - 
> Exception in thread Thread[ScheduledTasks:1,5,main]
> java.lang.IllegalStateException: Unable to compute when histogram overflowed
>  at 
> org.apache.cassandra.metrics.DecayingEstimatedHistogramReservoir$EstimatedHistogramReservoirSnapshot.getMean(DecayingEstimatedHistogramReservoir.java:472)
>  ~[apache-cassandra-3.11.1.jar:3.11.1]
>  at 
> org.apache.cassandra.net.MessagingService.getDroppedMessagesLogs(MessagingService.java:1263)
>  ~[apache-cassandra-3.11.1.jar:3.11.1]
>  at 
> org.apache.cassandra.net.MessagingService.logDroppedMessages(MessagingService.java:1236)
>  ~[apache-cassandra-3.11.1.jar:3.11.1]
>  at 
> org.apache.cassandra.net.MessagingService.access$200(MessagingService.java:87)
>  ~[apache-cassandra-3.11.1.jar:3.11.1]
>  at 
> org.apache.cassandra.net.MessagingService$4.run(MessagingService.java:507) 
> ~[apache-cassandra-3.11.1.jar:3.11.1]
>  at 
> org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.run(DebuggableScheduledThreadPoolExecutor.java:118)
>  ~[apache-cassandra-3.11.1.jar:3.11.1]
>  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_172]
>  at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
> [na:1.8.0_172]
>  at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>  [na:1.8.0_172]
>  at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>  [na:1.8.0_172]
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  [na:1.8.0_172]
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  [na:1.8.0_172]
>  at 
> org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:81)
>  [apache-cassandra-3.11.1.jar:3.11.1]
>  at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_172]
> {code}
> At the same time, this node was failing all writes issued to it. Restarting 
> cassandra on the node brought the cluster into a good state and we stopped 
> seeing the histogram overflow errors.
> Has this issue been observed before? Could the histogram overflows cause 
> writes to fail?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-19082) Histogram overflow causes client timeouts and message drops

2023-12-27 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-19082?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-19082:

Resolution: Duplicate
Status: Resolved  (was: Triage Needed)

Closing this issue as it's being duplicated by CASSANDRA-14867 
Feel free to reopen the issue if you think the cause is different.

> Histogram overflow causes client timeouts and message drops
> ---
>
> Key: CASSANDRA-19082
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19082
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Zbyszek Z
>Priority: Normal
>
> Hi,
> We have recently noticed that sometimes this exception happens on our 
> Cassandra cluster: 
> {code:java}
> ERROR [ScheduledTasks:1] 2023-11-24 06:24:12,680 CassandraDaemon.java:244 - 
> Exception in thread Thread[ScheduledTasks:1,5,main]
> java.lang.IllegalStateException: Unable to compute when histogram overflowed
>         at 
> org.apache.cassandra.metrics.DecayingEstimatedHistogramReservoir$EstimatedHistogramReservoirSnapshot.getMean(DecayingEstimatedHistogramReservoir.java:472)
>         at 
> org.apache.cassandra.net.MessagingService.getDroppedMessagesLogs(MessagingService.java:1272)
>         at 
> org.apache.cassandra.net.MessagingService.logDroppedMessages(MessagingService.java:1244)
>         at 
> org.apache.cassandra.net.MessagingService.access$200(MessagingService.java:84)
>         at 
> org.apache.cassandra.net.MessagingService$4.run(MessagingService.java:512)
>         at 
> org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.run(DebuggableScheduledThreadPoolExecutor.java:118)
>         at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>         at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>         at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>         at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>         at 
> org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:84)
>         at java.lang.Thread.run(Thread.java:750)
>  {code}
> It happens on all 6 nodes at the same time. Also we see increased client 
> timeouts and dropped READ and READ_RESPONSE messages. Our Cassandra is 
> 3.11.16, 2 DC setup, 6 node in each DC. RF is 3. I have searched issues but 
> could not find exactly same issue causing messages to be dropped. Any 
> suggestion would be appreciated. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-19082) Histogram overflow causes client timeouts and message drops

2023-12-26 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19082?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17800666#comment-17800666
 ] 

Maxim Muzafarov commented on CASSANDRA-19082:
-

Hi [~kolargol] , this is a duplicate of CASSANDRA-14867 ?

> Histogram overflow causes client timeouts and message drops
> ---
>
> Key: CASSANDRA-19082
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19082
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Zbyszek Z
>Priority: Normal
>
> Hi,
> We have recently noticed that sometimes this exception happens on our 
> Cassandra cluster: 
> {code:java}
> ERROR [ScheduledTasks:1] 2023-11-24 06:24:12,680 CassandraDaemon.java:244 - 
> Exception in thread Thread[ScheduledTasks:1,5,main]
> java.lang.IllegalStateException: Unable to compute when histogram overflowed
>         at 
> org.apache.cassandra.metrics.DecayingEstimatedHistogramReservoir$EstimatedHistogramReservoirSnapshot.getMean(DecayingEstimatedHistogramReservoir.java:472)
>         at 
> org.apache.cassandra.net.MessagingService.getDroppedMessagesLogs(MessagingService.java:1272)
>         at 
> org.apache.cassandra.net.MessagingService.logDroppedMessages(MessagingService.java:1244)
>         at 
> org.apache.cassandra.net.MessagingService.access$200(MessagingService.java:84)
>         at 
> org.apache.cassandra.net.MessagingService$4.run(MessagingService.java:512)
>         at 
> org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.run(DebuggableScheduledThreadPoolExecutor.java:118)
>         at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>         at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>         at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>         at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>         at 
> org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:84)
>         at java.lang.Thread.run(Thread.java:750)
>  {code}
> It happens on all 6 nodes at the same time. Also we see increased client 
> timeouts and dropped READ and READ_RESPONSE messages. Our Cassandra is 
> 3.11.16, 2 DC setup, 6 node in each DC. RF is 3. I have searched issues but 
> could not find exactly same issue causing messages to be dropped. Any 
> suggestion would be appreciated. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-25 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17800388#comment-17800388
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

Here is the latest benchmark for selecting a metric by its name (no GC pressure 
and low latency):

{code:bash}
SUMMARY STATS 
═
Elapsed time   [s] 60.001   
  
CPU time   [s] 56.884   
  
 CPU utilisation   [%]9.5   
  
  Cycles  [op]   15877269   
  
  Errors  [op]  0   
  
  └─   [%]0.0   
  
Requests [req]   15877269   
  
  └─  [req/op]1.0   
  
Rows [row]   15877269   
  
  └─ [row/req]1.0   
  
 Samples   60   
  
Mean sample size  [op] 264621   
  
  └─ [req] 264621   
  
 Concurrency [req] 95 ± 0   
  
  └─   [%] 74   
  
  Throughput[op/s] 264620 ± 32548   
  
  ├─   [req/s] 264620 ± 32548   
  
  └─   [row/s] 264620 ± 32548   
  
 Mean cycle time  [ms]  0.380 ± 0.054   
  
 Mean resp. time  [ms]  0.379 ± 0.054   
  


RESPONSE TIMES [ms] 
══
  Min   0.254 ± 0.007   
  
   25   0.332 ± 0.023   
  
   50   0.355 ± 0.042   
  
   75   0.393 ± 0.067   
  
   90   0.460 ± 0.096   
  
   95   0.515 ± 0.128   
  
   98   0.597 ± 0.191   
  
   99   0.687 ± 0.299   
  
   99.9 1.564 ± 1.852   
  
   99.994.751 ± 3.954   
  
  Max   5.140 ± 4.801   
  

RESPONSE TIME DISTRIBUTION 
═══
── Resp. time [ms] ──  ─── Count 
─
 0.0 ...  0.1  0   0.00%  
 0.1 ...  0.2 12   0.00%  
 0.2 ...  0.5   14383348  90.59%  

 0.5 ...  1.01414480   8.91%  
 1.0 ...  2.2  64692   0.41%  
 2.2 ...  4.6   9087   0.06%  
 4.6 ... 10.0   4593   0.03%  
10.0 ... 21.5504   0.00%  
21.5 ... 46.4466   0.00%  
46.4 ...100.0 87   0.00%  

{code}

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group 

[jira] [Comment Edited] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-24 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17800171#comment-17800171
 ] 

Maxim Muzafarov edited comment on CASSANDRA-14572 at 12/24/23 1:46 PM:
---

Hi [~djoshi],

You're right, it is better to discuss the solution design first, and only then 
dig into the source code.

 

1. I've managed to remove the GC pressure in the last few commits, so it should 
now be fine to pull a metric value from the virtual table by metric name, but 
we still have to iterate over a collection to find a metric.

The CollectionVirtualTableAdapter is a general approach to export any internal 
collections as virtual tables, it accepts the Iterable interface as a data 
container. We can also implement narrower adapters e.g. one that accepts 
Map as a data container, and if we solidify the vt model that the 
map key is always equal to the virtual table partition key (which is at least 
true for the metric collections), pulling will be slightly faster then. Such a 
trade-off depends on the usage pattern for virtual tables with metrics, pulling 
metrics every ~10-20 sec should be acceptable with the Iterable interface 
(histograms are still expensive to pull often).

 

2. This is another compromise we have to make, each of these options has its 
pros and cons. I see three options here:
 - Commit the RawWalker implementations along with the model classes. Pros: 
classes are plain, keep the ant build simple, easy to debug. Cons: maintain 
cost if the RawWalker interface changes often, increase the amount of changes 
in the patch.
 - use an annotation processor to generate RawWalker implementation. Pros: no 
boilerplate implementation in the code, uses plain java, no extra dependency. 
Cons: additional code to maintain, increase the build complexity.
 - use a templating engine (e.g. the [javapoet, 
|https://github.com/square/javapoet]you meant something like that, right?) to 
generate implementations. Pros: no boilerplate code, a framework to create 
classes. Cons: increase the code complexity as we have to be aware of a new 
library, an extra dependency.

I assume that the RawWalker interface is relatively stable and rarely changes, 
so we don't need to change the implementation too often and/or generate it on 
the fly. In case we want to add a new column to a model, changes are also easy. 
So, if we want to remove the annotation processor, I would rather choose the 
first option. 
This is still a compromise, so please share your thoughts.

Here is how the generated code looks like:
{code:java}
public class MetricRowWalker implements RowWalker
{
/** {@inheritDoc} */
@Override public void visitMeta(RowWalker.MetadataVisitor visitor)
{
visitor.accept(Column.Type.PARTITION_KEY, "name", 
java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "scope", java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "type", java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "value", java.lang.String.class);
}

/** {@inheritDoc} */
@Override public void visitRow(MetricRow row, RowWalker.RowMetadataVisitor 
visitor)
{
visitor.accept(Column.Type.PARTITION_KEY, "name", 
java.lang.String.class, () -> row.name());
visitor.accept(Column.Type.REGULAR, "scope", java.lang.String.class, () 
-> row.scope());
visitor.accept(Column.Type.REGULAR, "type", java.lang.String.class, () 
-> row.type());
visitor.accept(Column.Type.REGULAR, "value", java.lang.String.class, () 
-> row.value());
}

/** {@inheritDoc} */
@Override
public int count(Column.Type type)
{
switch (type)
{
case PARTITION_KEY: return 1;
case REGULAR: return 3;
case CLUSTERING: return 0;
default: throw new IllegalStateException("Unknown column type: " + 
type);
}
}
}
{code}


was (Author: mmuzaf):
Hi [~djoshi],

You're right, it is better to discuss the solution design first, and only then 
dig into the source code.

 

1. I've managed to remove the GC pressure in the last few commits, so it should 
now be fine to pull a metric value from the virtual table by metric name, but 
we still have to iterate over a collection to find a metric.

The CollectionVirtualTableAdapter is a general approach to export any internal 
collections as virtual tables, it accepts the Iterable interface as a data 
container. We can also implement narrower adapters e.g. one that accepts 
Map as a data container, and if we solidify the vt model that the 
map key is always equal to the virtual table partition key (which is at least 
true for the metric collections), pulling will be slightly faster then. Such a 
trade-off depends on the usage pattern for virtual tables with metrics, pulling 
metrics every ~10-20 sec should be acceptable with the Iterable interface 

[jira] [Comment Edited] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-24 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17800171#comment-17800171
 ] 

Maxim Muzafarov edited comment on CASSANDRA-14572 at 12/24/23 12:00 PM:


Hi [~djoshi],

You're right, it is better to discuss the solution design first, and only then 
dig into the source code.

 

1. I've managed to remove the GC pressure in the last few commits, so it should 
now be fine to pull a metric value from the virtual table by metric name, but 
we still have to iterate over a collection to find a metric.

The CollectionVirtualTableAdapter is a general approach to export any internal 
collections as virtual tables, it accepts the Iterable interface as a data 
container. We can also implement narrower adapters e.g. one that accepts 
Map as a data container, and if we solidify the vt model that the 
map key is always equal to the virtual table partition key (which is at least 
true for the metric collections), pulling will be slightly faster then. Such a 
trade-off depends on the usage pattern for virtual tables with metrics, pulling 
metrics every ~10-20 sec should be acceptable with the Iterable interface 
(histograms are still expensive to pull often).

 

2. This is another compromise we have to make, each of these options has its 
pros and cons. I see three options here:
 - Commit the RawWalker implementations along with the model classes. Pros: 
classes are plain, keep the ant build simple, easy to debug. Cons: maintain 
cost if the RawWalker interface changes often, increase the amount of changes 
in the patch.
 - use an annotation processor to generate RawWalker implementation. Pros: no 
boilerplate implementation in the code, uses plain java, no extra dependency. 
Cons: additional code to maintain, increase the build complexity.
 - use a templating engine (e.g. the [javapoet, 
|https://github.com/square/javapoet]you meant something like that, right?) to 
generate implementations. Pros: no boilerplate code, a framework to create 
classes. Cons: increase the code complexity as we have to be aware of a new 
library, an extra dependency.

I assume that the RawWalker interface is relatively stable and rarely changes, 
so we don't need to change the implementation too often and/or generate it on 
the fly. In case we want to add a new column to a model, changes are also easy. 
So, if we want to remove the annotation processor, I would rather choose the 
first option. 
This is still a compromise, so please change your thoughts.

Here is how the generated code looks like:
{code:java}
public class MetricRowWalker implements RowWalker
{
/** {@inheritDoc} */
@Override public void visitMeta(RowWalker.MetadataVisitor visitor)
{
visitor.accept(Column.Type.PARTITION_KEY, "name", 
java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "scope", java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "type", java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "value", java.lang.String.class);
}

/** {@inheritDoc} */
@Override public void visitRow(MetricRow row, RowWalker.RowMetadataVisitor 
visitor)
{
visitor.accept(Column.Type.PARTITION_KEY, "name", 
java.lang.String.class, () -> row.name());
visitor.accept(Column.Type.REGULAR, "scope", java.lang.String.class, () 
-> row.scope());
visitor.accept(Column.Type.REGULAR, "type", java.lang.String.class, () 
-> row.type());
visitor.accept(Column.Type.REGULAR, "value", java.lang.String.class, () 
-> row.value());
}

/** {@inheritDoc} */
@Override
public int count(Column.Type type)
{
switch (type)
{
case PARTITION_KEY: return 1;
case REGULAR: return 3;
case CLUSTERING: return 0;
default: throw new IllegalStateException("Unknown column type: " + 
type);
}
}
}
{code}


was (Author: mmuzaf):
Hi [~djoshi],

You're right, it is better to discuss the solution design first, and only then 
dig into the source code.

 

1. I've managed to remove the GC pressure in the last few commits, so it should 
now be fine to pull a metric value from the virtual table by metric name, but 
we still have to iterate over a collection to find a metric, which again is not 
so efficient as JMX MBeans as it has direct reference to a metric instance, and 
no CQL overhead.

The CollectionVirtualTableAdapter is a general approach to export any internal 
collections as virtual tables, it accepts the Iterable interface as a data 
container. We can also implement narrower adapters e.g. one that accepts 
Map as a data container, and if we solidify the vt model that the 
map key is always equal to the virtual table partition key (which is at least 
true for the metric collections), pulling will be slightly faster then. Such a 
trade-off depends on the usage 

[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-24 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17800171#comment-17800171
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

Hi [~djoshi],

You're right, it is better to discuss the solution design first, and only then 
dig into the source code.

 

1. I've managed to remove the GC pressure in the last few commits, so it should 
now be fine to pull a metric value from the virtual table by metric name, but 
we still have to iterate over a collection to find a metric, which again is not 
so efficient as JMX MBeans as it has direct reference to a metric instance, and 
no CQL overhead.

The CollectionVirtualTableAdapter is a general approach to export any internal 
collections as virtual tables, it accepts the Iterable interface as a data 
container. We can also implement narrower adapters e.g. one that accepts 
Map as a data container, and if we solidify the vt model that the 
map key is always equal to the virtual table partition key (which is at least 
true for the metric collections), pulling will be slightly faster then. Such a 
trade-off depends on the usage pattern for virtual tables with metrics, pulling 
metrics every ~10-20 sec should be acceptable with the Iterable interface 
(histograms are still expensive to pull often).

 

2. This is another compromise we have to make, each of these options has its 
pros and cons. I see three options here:
 - Commit the RawWalker implementations along with the model classes. Pros: 
classes are plain, keep the ant build simple, easy to debug. Cons: maintain 
cost if the RawWalker interface changes often, increase the amount of changes 
in the patch.
 - use an annotation processor to generate RawWalker implementation. Pros: no 
boilerplate implementation in the code, uses plain java, no extra dependency. 
Cons: additional code to maintain, increase the build complexity.
 - use a templating engine (e.g. the [javapoet, 
|https://github.com/square/javapoet]you meant something like that, right?) to 
generate implementations. Pros: no boilerplate code, a framework to create 
classes. Cons: increase the code complexity as we have to be aware of a new 
library, an extra dependency.

I assume that the RawWalker interface is relatively stable and rarely changes, 
so we don't need to change the implementation too often and/or generate it on 
the fly. In case we want to add a new column to a model, changes are also easy. 
So, if we want to remove the annotation processor, I would rather choose the 
first option. 
This is still a compromise, so please change your thoughts.

Here is how the generated code looks like:
{code:java}
public class MetricRowWalker implements RowWalker
{
/** {@inheritDoc} */
@Override public void visitMeta(RowWalker.MetadataVisitor visitor)
{
visitor.accept(Column.Type.PARTITION_KEY, "name", 
java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "scope", java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "type", java.lang.String.class);
visitor.accept(Column.Type.REGULAR, "value", java.lang.String.class);
}

/** {@inheritDoc} */
@Override public void visitRow(MetricRow row, RowWalker.RowMetadataVisitor 
visitor)
{
visitor.accept(Column.Type.PARTITION_KEY, "name", 
java.lang.String.class, () -> row.name());
visitor.accept(Column.Type.REGULAR, "scope", java.lang.String.class, () 
-> row.scope());
visitor.accept(Column.Type.REGULAR, "type", java.lang.String.class, () 
-> row.type());
visitor.accept(Column.Type.REGULAR, "value", java.lang.String.class, () 
-> row.value());
}

/** {@inheritDoc} */
@Override
public int count(Column.Type type)
{
switch (type)
{
case PARTITION_KEY: return 1;
case REGULAR: return 3;
case CLUSTERING: return 0;
default: throw new IllegalStateException("Unknown column type: " + 
type);
}
}
}
{code}

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, select keyspaces_group by string prefix.png, select 
> keyspaces_group compare with wo.png, select keyspaces_group without 
> value.png, systemv_views.metrics_dropped_message.png, thread_pools 
> benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables 

[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-22 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17799887#comment-17799887
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

I think we have a good history of decision-making for the further patch review 
process. I've figured out how to improve the traversal of the huge metric 
collections, the most efficient way is to compare and filter metric groups by 
prefix. This gives us an x4 boost on the same dataset.

Check out another benchmark to compare with the first results I got earlier:
!select keyspaces_group by string prefix.png|width=80%!

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, select keyspaces_group by string prefix.png, select 
> keyspaces_group compare with wo.png, select keyspaces_group without 
> value.png, systemv_views.metrics_dropped_message.png, thread_pools 
> benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-22 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Attachment: select keyspaces_group by string prefix.png

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, select keyspaces_group by string prefix.png, select 
> keyspaces_group compare with wo.png, select keyspaces_group without 
> value.png, systemv_views.metrics_dropped_message.png, thread_pools 
> benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-22 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17799846#comment-17799846
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

I actually have an update for the last benchmark with the _keyspaces_group_ 
virtual table! The problem was that during the iteration I was resolving a 
metric value for EVERY row, which is a really expensive operation if the metric 
type is histogram.

So, when I moved the metric value resolution to the post-filtering everything 
became perfect, and now we can get a metric value by partition key really fast 
and without GC pressure. I've updated the patch according to the new test 
results.

See the screenshot below, select a metric by name with value resolution for 
each row and without:

!select keyspaces_group compare with wo.png|width=80%!
 !select keyspaces_group without value.png|width=80%! 


> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-22 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Attachment: select keyspaces_group without value.png

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-22 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Attachment: select keyspaces_group compare with wo.png

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, select keyspaces_group compare with wo.png, select 
> keyspaces_group without value.png, systemv_views.metrics_dropped_message.png, 
> thread_pools benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-21 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17799592#comment-17799592
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

I have also prepared some benchmarks for the patch, comparing a new iterative 
virtual table implementation with the one that we have now.
h3. The _thread_pools_ virtual table implementation changed

As you can see in the patch, I've removed the old implementation of the 
_thread_pools_ virtual table and switched its creation to 
CollectionVirtualTableAdapter. This change is fully backwards compatible as the 
table has the same columns and column types, and it gives us a good opportunity 
to benchmark the solution. I ran the following query between the latest stable 
4.1.3 release and the patch:
{code:java}
SELECT * FROM system_views.thread_pools;
{code}
The difference between queries to the old and new table is at the level of 
measurement error, which I think is good. The difference at the edge of the max 
values of _-50%_ can be explained as follows, the iterative approach gives less 
GC pressure, which is also good. See the screenshot below:

!thread_pools benchmark.png|width=80%!
h3. A new _keyspaces_group_ virtual table

This new virtual table displays all the metrics which are related to all known 
keyspaces in the cluster. This table can be quite large, so I've prepared some 
benchmarks for it as well. I've created 1000 keyspaces for the test case. The 
_count_ over the _keyspaces_group_ table:
{code:java}
cqlsh> select count(*) from system_metrics.keyspace_group ;

 count
---
 77462

(1 rows)
{code}
The query that I used selects a metric by partition:
{code:java}
select * from system_metrics.keyspace_group where name = ?
{code}

I think the benchmark results are quite manageable in this case because we 
still have to iterate over the entire set of 77k rows each time an execution 
query is made. The internal data collections which we are trying to expose 
store their data out of order, which the virtual tables need. In general, 
checking a single metric through the large table should be quite fast <1s,  
exporting metrics from virtual tables continuously will yield us GC pressure.

!keyspayces_group responses times.png|width=80%! 
!keyspayces_group summary.png|width=80%!  





> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, systemv_views.metrics_dropped_message.png, thread_pools 
> benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-21 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Attachment: keyspayces_group summary.png
keyspayces_group responses times.png

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: keyspayces_group responses times.png, keyspayces_group 
> summary.png, systemv_views.metrics_dropped_message.png, thread_pools 
> benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-21 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-14572:

Attachment: thread_pools benchmark.png

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: systemv_views.metrics_dropped_message.png, thread_pools 
> benchmark.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14572) Expose all table metrics in virtual table

2023-12-21 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17799585#comment-17799585
 ] 

Maxim Muzafarov commented on CASSANDRA-14572:
-

Ok, so now the changes are completely ready. 
I've fixed all the CI issues related to the current patch and, with the help of 
Mick and Ekaterina, have done a full CI test. All tests look good, the OOM that 
was raised is not related to the patch as it also fails on the trunk, and I 
added tests to check that metrics are completely removed from the 
CassandraMetricsRegistry when the remove method is called.
https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/2602/workflows/978acbe2-6951-4954-a4b3-5fd8674c7dd4
https://app.circleci.com/pipelines/github/Mmuzaf/cassandra/561/workflows/e115a3dd-753b-4e02-94cd-e20feee1a207/jobs/46321

> Expose all table metrics in virtual table
> -
>
> Key: CASSANDRA-14572
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14572
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Observability, Observability/Metrics
>Reporter: Chris Lohfink
>Assignee: Maxim Muzafarov
>Priority: Low
>  Labels: virtual-tables
> Fix For: 5.x
>
> Attachments: systemv_views.metrics_dropped_message.png
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> While we want a number of virtual tables to display data in a way thats great 
> and intuitive like in nodetool. There is also much for being able to expose 
> the metrics we have for tooling via CQL instead of JMX. This is more for the 
> tooling and adhoc advanced users who know exactly what they are looking for.
> *Schema:*
> Initial idea is to expose data via {{((keyspace, table), metric)}} with a 
> column for each metric value. Could also use a Map or UDT instead of the 
> column based that can be a bit more specific to each metric type. To that end 
> there can be a {{metric_type}} column and then a UDT for each metric type 
> filled in, or a single value with more of a Map style. I am 
> purposing the column type though as with {{ALLOW FILTERING}} it does allow 
> more extensive query capabilities.
> *Implementations:*
> * Use reflection to grab all the metrics from TableMetrics (see: 
> CASSANDRA-7622 impl). This is easiest and least abrasive towards new metric 
> implementors... but its reflection and a kinda a bad idea.
> * Add a hook in TableMetrics to register with this virtual table when 
> registering
> * Pull from the CassandraMetrics registery (either reporter or iterate 
> through metrics query on read of virtual table)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-16861) Test failure: test_compression_cql_options

2023-12-19 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17798701#comment-17798701
 ] 

Maxim Muzafarov edited comment on CASSANDRA-16861 at 12/19/23 6:41 PM:
---

Found the cause, the param was removed here - 
https://issues.apache.org/jira/browse/CASSANDRA-18872

EDIT: I updated the local branch and the test passed, so I guess the issue is 
no longer relevant for the 5.x branch, as the configuration parameter has been 
removed there.


was (Author: mmuzaf):
Found the cause, the param was removed here - 
https://issues.apache.org/jira/browse/CASSANDRA-18872

> Test failure: test_compression_cql_options
> --
>
> Key: CASSANDRA-16861
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16861
> Project: Cassandra
>  Issue Type: Bug
>  Components: CI
>Reporter: Ekaterina Dimitrova
>Priority: Normal
> Fix For: 4.0, 5.x
>
>
> While working on another ticket, I saw test_compression_cql_options failing 
> (which is not the case in Jenkins) but the Circle CI multiplexer showed it as 
> being flaky:
> [https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1082/workflows/8dacef5d-46f4-4b59-a8f7-08824bf1180f/jobs/6407/tests#failed-test-0]
> {code:java}
> sstables = self.get_sstables(table='compression_opts_table', 
> indexes=list())
> sstable_paths = self.get_table_paths('compression_opts_table')
> found = False
> for sstable_path in sstable_paths:
> sstable = os.path.join(sstable_path, 
> sstables['compression_opts_table'][1])
> if os.path.exists(sstable):
> assert 'DEFLATE' == self._get_compression_type(sstable)
> found = True
> >   assert found
> E   assert False
> compression_test.py:118: AssertionError
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-16861) Test failure: test_compression_cql_options

2023-12-19 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-16861?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated CASSANDRA-16861:

Fix Version/s: 4.0.x
   4.1.x
   (was: 5.x)

> Test failure: test_compression_cql_options
> --
>
> Key: CASSANDRA-16861
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16861
> Project: Cassandra
>  Issue Type: Bug
>  Components: CI
>Reporter: Ekaterina Dimitrova
>Priority: Normal
> Fix For: 4.0, 4.0.x, 4.1.x
>
>
> While working on another ticket, I saw test_compression_cql_options failing 
> (which is not the case in Jenkins) but the Circle CI multiplexer showed it as 
> being flaky:
> [https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1082/workflows/8dacef5d-46f4-4b59-a8f7-08824bf1180f/jobs/6407/tests#failed-test-0]
> {code:java}
> sstables = self.get_sstables(table='compression_opts_table', 
> indexes=list())
> sstable_paths = self.get_table_paths('compression_opts_table')
> found = False
> for sstable_path in sstable_paths:
> sstable = os.path.join(sstable_path, 
> sstables['compression_opts_table'][1])
> if os.path.exists(sstable):
> assert 'DEFLATE' == self._get_compression_type(sstable)
> found = True
> >   assert found
> E   assert False
> compression_test.py:118: AssertionError
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16861) Fix flaky test test_compression_cql_options

2023-12-19 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17798701#comment-17798701
 ] 

Maxim Muzafarov commented on CASSANDRA-16861:
-

Found the cause, the param was removed here - 
https://issues.apache.org/jira/browse/CASSANDRA-18872

> Fix flaky test test_compression_cql_options
> ---
>
> Key: CASSANDRA-16861
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16861
> Project: Cassandra
>  Issue Type: Bug
>  Components: CI
>Reporter: Ekaterina Dimitrova
>Priority: Normal
> Fix For: 4.0, 5.x
>
>
> While working on another ticket, I saw test_compression_cql_options failing 
> (which is not the case in Jenkins) but the Circle CI multiplexer showed it as 
> being flaky:
> [https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1082/workflows/8dacef5d-46f4-4b59-a8f7-08824bf1180f/jobs/6407/tests#failed-test-0]
> {code:java}
> sstables = self.get_sstables(table='compression_opts_table', 
> indexes=list())
> sstable_paths = self.get_table_paths('compression_opts_table')
> found = False
> for sstable_path in sstable_paths:
> sstable = os.path.join(sstable_path, 
> sstables['compression_opts_table'][1])
> if os.path.exists(sstable):
> assert 'DEFLATE' == self._get_compression_type(sstable)
> found = True
> >   assert found
> E   assert False
> compression_test.py:118: AssertionError
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-16861) Fix flaky test test_compression_cql_options

2023-12-19 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-16861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17798700#comment-17798700
 ] 

Maxim Muzafarov commented on CASSANDRA-16861:
-

I think the problem is still relevant. I can reproduce it on the trunk branch.
https://github.com/apache/cassandra/commit/08c46d09634ed4639246036b84caf817d14fa188
https://github.com/apache/cassandra-dtest/commit/24d6b291eeb8842fab22b5b3936539b66a036d86

{code:java}
= test session starts 
=
platform darwin -- Python 3.9.6, pytest-7.3.1, pluggy-1.0.0
rootdir: /Users/m/pycharm/cassandra-dtest
configfile: pytest.ini
plugins: flaky-3.7.0, repeat-0.9.1, timeout-1.4.2
timeout: 900.0s
timeout method: signal
timeout func_only: False
collected 1 item


   

compression_test.py F   


 [100%]  
= FAILURES 
= 

TestCompression.test_compression_cql_options 



self = 

@since("3.0")
def test_compression_cql_options(self):
"""
@jira_ticket CASSANDRA-8384
using new cql create table syntax to configure compression
"""
cluster = self.cluster
cluster.populate(1).start()
[node] = cluster.nodelist()

session = self.patient_cql_connection(node)
create_ks(session, 'ks', 1)
session.execute("""
create table compression_opts_table
(id uuid PRIMARY KEY )
WITH compression = {
'class': 'DeflateCompressor',
'chunk_length_in_kb': 256
}
AND crc_check_chance = 0.25;
""")

session.cluster.refresh_schema_metadata()
meta = 
session.cluster.metadata.keyspaces['ks'].tables['compression_opts_table']
assert 'org.apache.cassandra.io.compress.DeflateCompressor' == 
meta.options['compression']['class']
assert '256' == meta.options['compression']['chunk_length_in_kb']
assert_crc_check_chance_equal(session, "compression_opts_table", 0.25)

warn = node.grep_log("The option crc_check_chance was deprecated as a 
compression option.")
assert len(warn) == 0
>   session.execute("""
alter table compression_opts_table
WITH compression = {
'class': 'DeflateCompressor',
'chunk_length_in_kb': 256,
'crc_check_chance': 0.6
}
""")

compression_test.py:85: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
cassandra/cluster.py:2618: in cassandra.cluster.Session.execute
??? 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>   ???
E   cassandra.protocol.ConfigurationException: 

cassandra/cluster.py:4894: ConfigurationException
{code}

> Fix flaky test test_compression_cql_options
> ---
>
> Key: CASSANDRA-16861
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16861
> Project: Cassandra
>  Issue Type: Bug
>  Components: CI
>Reporter: Ekaterina Dimitrova
>Priority: Normal
> Fix For: 4.0, 5.x
>
>
> While working on another ticket, I saw test_compression_cql_options failing 
> (which is not the case in Jenkins) but the Circle CI multiplexer showed it as 
> being flaky:
> [https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1082/workflows/8dacef5d-46f4-4b59-a8f7-08824bf1180f/jobs/6407/tests#failed-test-0]
> {code:java}
> sstables = self.get_sstables(table='compression_opts_table', 
> indexes=list())
> sstable_paths = self.get_table_paths('compression_opts_table')
> found = False
> for sstable_path in sstable_paths:
> sstable = os.path.join(sstable_path, 
> sstables['compression_opts_table'][1])
> if os.path.exists(sstable):
> assert 'DEFLATE' == self._get_compression_type(sstable)
> found = True
> >   assert found
> E   assert False
> compression_test.py:118: AssertionError
> {code}
>  
>  



--
This 

[jira] [Commented] (CASSANDRA-19146) Upgrade owasp to 9.0.x

2023-12-19 Thread Maxim Muzafarov (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-19146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17798547#comment-17798547
 ] 

Maxim Muzafarov commented on CASSANDRA-19146:
-

Now it looks as perfect as it should 
+1 


> Upgrade owasp to 9.0.x
> --
>
> Key: CASSANDRA-19146
> URL: https://issues.apache.org/jira/browse/CASSANDRA-19146
> Project: Cassandra
>  Issue Type: Bug
>  Components: Build
>Reporter: Brandon Williams
>Assignee: Jacek Lewandowski
>Priority: Normal
> Fix For: 3.0.x, 3.11.x, 4.0.x, 4.1.x, 5.0-rc, 5.x
>
> Attachments: signature.asc
>
>
> From https://github.com/jeremylong/DependencyCheck :
> {quote}
> Upgrading to 9.0.0 or later is mandatory; previous versions of 
> dependency-check utilize the NVD data feeds which will be deprecated on Dec 
> 15th, 2023. 
> {quote}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



  1   2   3   4   5   6   >