From 089b05f68498c735999d0448f843ac6229b0f4d0 Mon Sep 17 00:00:00 2001 From: Zhangmei Li Date: Sun, 24 Apr 2022 12:28:15 +0800 Subject: [PATCH 1/5] log cassandra probe host Change-Id: Ida6b7f2675c86b6b241977075f0ef137a38fdd8d --- .../hugegraph/backend/store/cassandra/CassandraMetrics.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java index 15adc8ecda..9c597810bc 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java @@ -306,7 +306,7 @@ private Map executeAllHosts(Function func) { } private NodeProbe newNodeProbe(String host) throws IOException { - LOG.debug("Probe to cassandra node: '{}:{}'", host, this.port); + LOG.info("Probe to cassandra node: '{}:{}'", host, this.port); return this.username.isEmpty() ? new NodeProbe(host, this.port) : new NodeProbe(host, this.port, this.username, this.password); From b87c9ce3f5d76d7aebff7eba71b20b96991ad78e Mon Sep 17 00:00:00 2001 From: Zhangmei Li Date: Sun, 24 Apr 2022 15:08:12 +0800 Subject: [PATCH 2/5] log error info Change-Id: I18314c3b713304048e1570584ab81998c66366b3 --- .../hugegraph/backend/store/cassandra/CassandraMetrics.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java index 9c597810bc..1c7161a4af 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java @@ -144,7 +144,7 @@ protected Map getMetricsByHost(String host) { * probe.takeSnapshot(snapshotName, table, options, keyspaces) */ } catch (Throwable e) { - LOG.debug("Unable to get metrics from host '{}':", host, e); + LOG.warn("Unable to get metrics from host '{}':", host, e); metrics.put(EXCEPTION, e.toString()); } return metrics; From 60771877db55483fcb4ac5d2fd1e6ce1f68fef6d Mon Sep 17 00:00:00 2001 From: Zhangmei Li Date: Sun, 24 Apr 2022 16:05:00 +0800 Subject: [PATCH 3/5] Translate IPv4 to IPv6 to fix issue #1843 Change-Id: I1e04122d9e0cd7cd5986e9b33b0fad74d22c1937 --- .../backend/store/cassandra/CassandraMetrics.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java index 1c7161a4af..a5ef549162 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java @@ -21,6 +21,8 @@ import java.io.IOException; import java.lang.management.MemoryUsage; +import java.net.Inet4Address; +import java.net.Inet6Address; import java.net.InetAddress; import java.util.Collections; import java.util.List; @@ -297,7 +299,15 @@ private Map executeAllHosts(Function func) { Map hostsResults = InsertionOrderUtil.newMap(); for (Host host : hosts) { InetAddress address = host.getAddress(); - String hostAddress = address.getHostAddress(); + String hostAddress; + if (address instanceof Inet4Address) { + hostAddress = host.getAddress().getHostAddress(); + // Translate IPv4 to IPv6 to fix issue #1843 + hostAddress = "::FFFF:" + hostAddress; + } else { + assert address instanceof Inet6Address; + hostAddress = host.getAddress().getHostAddress(); + } hostsResults.put(hostAddress, func.apply(hostAddress)); } results.put(SERVERS, hostsResults); From 3c36d7fafebbb0561a88c104cf6673dd4a73be45 Mon Sep 17 00:00:00 2001 From: Zhangmei Li Date: Wed, 27 Apr 2022 18:14:55 +0800 Subject: [PATCH 4/5] enable cassandra/scylladb metrics test case Change-Id: If53f6e8e12fded4cf72185a2f2ea1aa01bab4394 --- .../baidu/hugegraph/api/MetricsApiTest.java | 220 +++++++++--------- 1 file changed, 110 insertions(+), 110 deletions(-) diff --git a/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java b/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java index 6b9a4cad1f..0c29c46858 100644 --- a/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java +++ b/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java @@ -100,61 +100,61 @@ public void testMetricsBackend() { servers = (Map) graph.get("servers"); Assert.assertGte(1, servers.size()); // TODO: Uncomment after fixed #1843 -// for (Map.Entry e : servers.entrySet()) { -// String key = (String) e.getKey(); -// value = e.getValue(); -// Assert.assertTrue(String.format( -// "Expect map value for key %s but got %s", -// key, value), -// value instanceof Map); -// host = (Map) value; -// assertMapContains(host, "mem_max"); -// assertMapContains(host, "mem_committed"); -// assertMapContains(host, "mem_used"); -// assertMapContains(host, "mem_used_readable"); -// assertMapContains(host, "mem_unit"); -// -// assertMapContains(host, "disk_usage"); -// assertMapContains(host, "disk_usage_readable"); -// assertMapContains(host, "disk_usage_details"); -// assertMapContains(host, "disk_unit"); -// -// assertMapContains(host, "uptime"); -// assertMapContains(host, "uptime_readable"); -// assertMapContains(host, "time_unit"); -// -// assertMapContains(host, "estimated_partition_count"); -// assertMapContains(host, "dropped_mutations"); -// assertMapContains(host, "pending_flushes"); -// assertMapContains(host, "key_cache_hit_rate"); -// assertMapContains(host, "bloom_filter_false_ratio"); -// -// assertMapContains(host, "write_latency_hugegraph"); -// assertMapContains(host, "read_latency_hugegraph"); -// assertMapContains(host, "write_latency_*"); -// assertMapContains(host, "read_latency_*"); -// -// assertMapContains(host, "key_cache_size"); -// assertMapContains(host, "key_cache_entries"); -// assertMapContains(host, "row_cache_size"); -// assertMapContains(host, "row_cache_entries"); -// assertMapContains(host, "counter_cache_size"); -// assertMapContains(host, "counter_cache_entries"); -// -// assertMapContains(host, "compaction_completed_tasks"); -// assertMapContains(host, "compaction_pending_tasks"); -// assertMapContains(host, "compaction_bytes_compacted"); -// -// assertMapContains(host, "live_nodes"); -// assertMapContains(host, "joining_nodes"); -// assertMapContains(host, "moving_nodes"); -// assertMapContains(host, "leaving_nodes"); -// assertMapContains(host, "unreachable_nodes"); -// -// assertMapContains(host, "keyspaces"); -// assertMapContains(host, "num_tables"); -// assertMapContains(host, "exception_count"); -// } + for (Map.Entry e : servers.entrySet()) { + String key = (String) e.getKey(); + value = e.getValue(); + Assert.assertTrue(String.format( + "Expect map value for key %s but got %s", + key, value), + value instanceof Map); + host = (Map) value; + assertMapContains(host, "mem_max"); + assertMapContains(host, "mem_committed"); + assertMapContains(host, "mem_used"); + assertMapContains(host, "mem_used_readable"); + assertMapContains(host, "mem_unit"); + + assertMapContains(host, "disk_usage"); + assertMapContains(host, "disk_usage_readable"); + assertMapContains(host, "disk_usage_details"); + assertMapContains(host, "disk_unit"); + + assertMapContains(host, "uptime"); + assertMapContains(host, "uptime_readable"); + assertMapContains(host, "time_unit"); + + assertMapContains(host, "estimated_partition_count"); + assertMapContains(host, "dropped_mutations"); + assertMapContains(host, "pending_flushes"); + assertMapContains(host, "key_cache_hit_rate"); + assertMapContains(host, "bloom_filter_false_ratio"); + + assertMapContains(host, "write_latency_hugegraph"); + assertMapContains(host, "read_latency_hugegraph"); + assertMapContains(host, "write_latency_*"); + assertMapContains(host, "read_latency_*"); + + assertMapContains(host, "key_cache_size"); + assertMapContains(host, "key_cache_entries"); + assertMapContains(host, "row_cache_size"); + assertMapContains(host, "row_cache_entries"); + assertMapContains(host, "counter_cache_size"); + assertMapContains(host, "counter_cache_entries"); + + assertMapContains(host, "compaction_completed_tasks"); + assertMapContains(host, "compaction_pending_tasks"); + assertMapContains(host, "compaction_bytes_compacted"); + + assertMapContains(host, "live_nodes"); + assertMapContains(host, "joining_nodes"); + assertMapContains(host, "moving_nodes"); + assertMapContains(host, "leaving_nodes"); + assertMapContains(host, "unreachable_nodes"); + + assertMapContains(host, "keyspaces"); + assertMapContains(host, "num_tables"); + assertMapContains(host, "exception_count"); + } break; case "scylladb": assertMapContains(graph, "cluster_id"); @@ -163,61 +163,61 @@ public void testMetricsBackend() { servers = (Map) graph.get("servers"); Assert.assertGte(1, servers.size()); // TODO: Uncomment after fixed #1843 -// for (Map.Entry e : servers.entrySet()) { -// String key = (String) e.getKey(); -// value = e.getValue(); -// Assert.assertTrue(String.format( -// "Expect map value for key %s but got %s", -// key, value), -// value instanceof Map); -// host = (Map) value; -// assertMapContains(host, "mem_max"); -// assertMapContains(host, "mem_committed"); -// assertMapContains(host, "mem_used"); -// assertMapContains(host, "mem_used_readable"); -// assertMapContains(host, "mem_unit"); -// -// assertMapContains(host, "disk_usage"); -// assertMapContains(host, "disk_usage_readable"); -// assertMapContains(host, "disk_usage_details"); -// assertMapContains(host, "disk_unit"); -// -// assertMapContains(host, "uptime"); -// assertMapContains(host, "uptime_readable"); -// assertMapContains(host, "time_unit"); -// -// assertMapContains(host, "estimated_partition_count"); -// assertMapContains(host, "dropped_mutations"); -// assertMapContains(host, "pending_flushes"); -// //assertMapContains(host, "key_cache_hit_rate"); -// assertMapContains(host, "bloom_filter_false_ratio"); -// -// //assertMapContains(host, "write_latency_hugegraph"); -// //assertMapContains(host, "read_latency_hugegraph"); -// //assertMapContains(host, "write_latency_*"); -// //assertMapContains(host, "read_latency_*"); -// -// assertMapContains(host, "key_cache_size"); -// assertMapContains(host, "key_cache_entries"); -// assertMapContains(host, "row_cache_size"); -// assertMapContains(host, "row_cache_entries"); -// assertMapContains(host, "counter_cache_size"); -// assertMapContains(host, "counter_cache_entries"); -// -// assertMapContains(host, "compaction_completed_tasks"); -// assertMapContains(host, "compaction_pending_tasks"); -// //assertMapContains(host, "compaction_bytes_compacted"); -// -// assertMapContains(host, "live_nodes"); -// assertMapContains(host, "joining_nodes"); -// assertMapContains(host, "moving_nodes"); -// assertMapContains(host, "leaving_nodes"); -// assertMapContains(host, "unreachable_nodes"); -// -// assertMapContains(host, "keyspaces"); -// assertMapContains(host, "num_tables"); -// assertMapContains(host, "exception_count"); -// } + for (Map.Entry e : servers.entrySet()) { + String key = (String) e.getKey(); + value = e.getValue(); + Assert.assertTrue(String.format( + "Expect map value for key %s but got %s", + key, value), + value instanceof Map); + host = (Map) value; + assertMapContains(host, "mem_max"); + assertMapContains(host, "mem_committed"); + assertMapContains(host, "mem_used"); + assertMapContains(host, "mem_used_readable"); + assertMapContains(host, "mem_unit"); + + assertMapContains(host, "disk_usage"); + assertMapContains(host, "disk_usage_readable"); + assertMapContains(host, "disk_usage_details"); + assertMapContains(host, "disk_unit"); + + assertMapContains(host, "uptime"); + assertMapContains(host, "uptime_readable"); + assertMapContains(host, "time_unit"); + + assertMapContains(host, "estimated_partition_count"); + assertMapContains(host, "dropped_mutations"); + assertMapContains(host, "pending_flushes"); + //assertMapContains(host, "key_cache_hit_rate"); + assertMapContains(host, "bloom_filter_false_ratio"); + + //assertMapContains(host, "write_latency_hugegraph"); + //assertMapContains(host, "read_latency_hugegraph"); + //assertMapContains(host, "write_latency_*"); + //assertMapContains(host, "read_latency_*"); + + assertMapContains(host, "key_cache_size"); + assertMapContains(host, "key_cache_entries"); + assertMapContains(host, "row_cache_size"); + assertMapContains(host, "row_cache_entries"); + assertMapContains(host, "counter_cache_size"); + assertMapContains(host, "counter_cache_entries"); + + assertMapContains(host, "compaction_completed_tasks"); + assertMapContains(host, "compaction_pending_tasks"); + //assertMapContains(host, "compaction_bytes_compacted"); + + assertMapContains(host, "live_nodes"); + assertMapContains(host, "joining_nodes"); + assertMapContains(host, "moving_nodes"); + assertMapContains(host, "leaving_nodes"); + assertMapContains(host, "unreachable_nodes"); + + assertMapContains(host, "keyspaces"); + assertMapContains(host, "num_tables"); + assertMapContains(host, "exception_count"); + } break; case "hbase": assertMapContains(graph, "cluster_id"); From 2492007b92652d079369832e8b38c11796649791 Mon Sep 17 00:00:00 2001 From: Zhangmei Li Date: Wed, 27 Apr 2022 19:02:50 +0800 Subject: [PATCH 5/5] resume debug log Change-Id: I77e4f61fb40e3012c98c41d0d896efa67e86ee91 --- .../backend/store/cassandra/CassandraMetrics.java | 9 ++++++--- .../java/com/baidu/hugegraph/api/MetricsApiTest.java | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java index a5ef549162..bc17e207d3 100644 --- a/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java +++ b/hugegraph-cassandra/src/main/java/com/baidu/hugegraph/backend/store/cassandra/CassandraMetrics.java @@ -146,7 +146,7 @@ protected Map getMetricsByHost(String host) { * probe.takeSnapshot(snapshotName, table, options, keyspaces) */ } catch (Throwable e) { - LOG.warn("Unable to get metrics from host '{}':", host, e); + LOG.debug("Unable to get metrics from host '{}':", host, e); metrics.put(EXCEPTION, e.toString()); } return metrics; @@ -302,7 +302,10 @@ private Map executeAllHosts(Function func) { String hostAddress; if (address instanceof Inet4Address) { hostAddress = host.getAddress().getHostAddress(); - // Translate IPv4 to IPv6 to fix issue #1843 + /* + * Translate IPv4 to IPv6 to fix issue #1843 + * TODO: delete this workaround code after fixed CASSANDRA-17581 + */ hostAddress = "::FFFF:" + hostAddress; } else { assert address instanceof Inet6Address; @@ -316,7 +319,7 @@ private Map executeAllHosts(Function func) { } private NodeProbe newNodeProbe(String host) throws IOException { - LOG.info("Probe to cassandra node: '{}:{}'", host, this.port); + LOG.debug("Probe to cassandra node: '{}:{}'", host, this.port); return this.username.isEmpty() ? new NodeProbe(host, this.port) : new NodeProbe(host, this.port, this.username, this.password); diff --git a/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java b/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java index 0c29c46858..aee8d3ccea 100644 --- a/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java +++ b/hugegraph-test/src/main/java/com/baidu/hugegraph/api/MetricsApiTest.java @@ -162,7 +162,7 @@ public void testMetricsBackend() { servers = (Map) graph.get("servers"); Assert.assertGte(1, servers.size()); - // TODO: Uncomment after fixed #1843 + for (Map.Entry e : servers.entrySet()) { String key = (String) e.getKey(); value = e.getValue();