From 9a7bdc8eaec716b5cd4610ab48df8a3d5e40f773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Thu, 15 Dec 2022 15:39:06 +0800 Subject: [PATCH] Refactor `StorageData#id` to the new StorageID object from a String type. (#10157) * Refactor kernel id0()/id() methods to return StorageID object, rather than a built string. --- docs/en/changes/changes.md | 1 + .../dsl/registry/ProcessRegistry.java | 2 +- .../provider/kafka/log/KafkaLogExporter.java | 2 +- .../exporter/provider/grpc/MockMetrics.java | 5 +- .../resources/code-templates/metrics/id.ftl | 9 +- .../core/alarm/provider/RunningRuleTest.java | 7 +- .../oap/server/core/alarm/AlarmRecord.java | 11 +- .../data/LimitedSizeBufferedData.java | 5 +- .../analysis/data/MergableBufferedData.java | 5 +- .../manual/cache/TopNCacheReadCommand.java | 5 +- .../manual/cache/TopNCacheWriteCommand.java | 5 +- .../database/TopNDatabaseStatement.java | 5 +- .../manual/endpoint/EndpointTraffic.java | 14 +- .../manual/instance/InstanceTraffic.java | 9 +- .../manual/log/AbstractLogRecord.java | 3 +- .../core/analysis/manual/log/LogRecord.java | 5 +- .../networkalias/NetworkAddressAlias.java | 6 +- .../manual/process/ProcessTraffic.java | 15 +- .../manual/process/ServiceLabelRecord.java | 17 +- .../EndpointRelationServerSideMetrics.java | 10 +- ...viceInstanceRelationClientSideMetrics.java | 7 +- ...viceInstanceRelationServerSideMetrics.java | 8 +- .../ProcessRelationClientSideMetrics.java | 8 +- .../ProcessRelationServerSideMetrics.java | 7 +- .../ServiceRelationClientSideMetrics.java | 7 +- .../ServiceRelationServerSideMetrics.java | 8 +- .../manual/searchtag/TagAutocompleteData.java | 9 +- .../manual/segment/SegmentRecord.java | 5 +- .../manual/service/ServiceTraffic.java | 13 +- .../spanattach/SpanAttachedEventRecord.java | 10 +- .../manual/trace/SampledSlowTraceRecord.java | 9 +- .../trace/SampledStatus4xxTraceRecord.java | 9 +- .../trace/SampledStatus5xxTraceRecord.java | 9 +- .../meter/function/HistogramFunction.java | 8 +- .../meter/function/PercentileFunction.java | 8 +- .../meter/function/avg/AvgFunction.java | 8 +- .../function/avg/AvgHistogramFunction.java | 8 +- .../avg/AvgHistogramPercentileFunction.java | 8 +- .../function/avg/AvgLabeledFunction.java | 8 +- .../meter/function/latest/LatestFunction.java | 8 +- .../meter/function/sum/SumFunction.java | 8 +- .../sum/SumHistogramPercentileFunction.java | 19 +- .../function/sumpermin/SumPerMinFunction.java | 11 +- .../sumpermin/SumPerMinLabeledFunction.java | 11 +- .../server/core/analysis/metrics/Event.java | 16 +- .../server/core/analysis/metrics/Metrics.java | 7 +- .../worker/MetricsAggregateWorker.java | 3 - .../errorlog/BrowserErrorLogRecord.java | 5 +- .../management/ui/template/UITemplate.java | 5 +- .../ebpf/EBPFProfilingQueryService.java | 27 ++- .../ebpf/storage/EBPFProfilingDataRecord.java | 20 ++- .../storage/EBPFProfilingScheduleRecord.java | 13 +- .../ebpf/storage/EBPFProfilingTaskRecord.java | 27 +-- .../profiling/trace/ProfileTaskLogRecord.java | 10 +- .../trace/ProfileTaskMutationService.java | 2 +- .../profiling/trace/ProfileTaskRecord.java | 5 +- .../trace/ProfileThreadSnapshotRecord.java | 9 +- .../core/query/ProcessTopologyBuilder.java | 24 ++- .../oap/server/core/storage/StorageData.java | 2 +- .../oap/server/core/storage/StorageID.java | 169 ++++++++++++++++++ .../zipkin/ZipkinServiceRelationTraffic.java | 8 +- .../core/zipkin/ZipkinServiceSpanTraffic.java | 7 +- .../core/zipkin/ZipkinServiceTraffic.java | 5 +- .../server/core/zipkin/ZipkinSpanRecord.java | 5 +- .../data/LimitedSizeBufferedDataTest.java | 5 +- .../analysis/metrics/ApdexMetricsTest.java | 3 +- .../analysis/metrics/CountMetricsTest.java | 3 +- .../analysis/metrics/HeatMapMetricsTest.java | 3 +- .../analysis/metrics/LongAvgMetricsTest.java | 3 +- .../analysis/metrics/MaxLongMetricsTest.java | 3 +- .../core/analysis/metrics/MetricsTest.java | 3 +- .../analysis/metrics/MinLongMetricsTest.java | 3 +- .../analysis/metrics/PercentMetricsTest.java | 3 +- .../metrics/PercentileMetricsTest.java | 3 +- .../metrics/expression/NumberMatchTest.java | 2 +- .../core/storage/PersistenceTimerTest.java | 4 +- .../server/core/storage/StorageIDTest.java | 46 +++++ .../datacarrier/consumer/BulkConsumePool.java | 2 +- .../consumer/MultipleChannelsConsumer.java | 2 +- .../banyandb/BanyanDBNoneStreamDAO.java | 2 +- .../BanyanDBUITemplateManagementDAO.java | 10 +- .../banyandb/measure/BanyanDBMetricsDAO.java | 6 +- .../banyandb/stream/BanyanDBRecordDAO.java | 2 +- .../elasticsearch/base/ManagementEsDAO.java | 2 +- .../elasticsearch/base/MetricsEsDAO.java | 8 +- .../elasticsearch/base/NoneStreamEsDAO.java | 2 +- .../elasticsearch/base/RecordEsDAO.java | 2 +- .../query/MetadataQueryEsDAO.java | 6 +- .../query/UITemplateManagementEsDAO.java | 10 +- .../jdbc/common/dao/JDBCManagementDAO.java | 2 +- .../jdbc/common/dao/JDBCMetricsDAO.java | 2 +- .../jdbc/common/dao/JDBCSQLExecutor.java | 6 +- .../shardingsphere/ServiceCpmMetrics.java | 8 +- 93 files changed, 612 insertions(+), 268 deletions(-) create mode 100644 oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageID.java create mode 100644 oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/StorageIDTest.java diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 015e71e9ac..d7175d0e53 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -40,6 +40,7 @@ * Add global-specific settings used to override global configurations (e.g `segmentIntervalDays`, `blockIntervalHours`) in BanyanDB. * Use TTL-driven interval settings for the `measure-default` group in BanyanDB. * Fix wrong group of non time-relative metadata in BanyanDB. +* Refactor `StorageData#id` to the new StorageID object from a String type. #### UI diff --git a/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/registry/ProcessRegistry.java b/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/registry/ProcessRegistry.java index 992e17621b..b552f147e0 100644 --- a/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/registry/ProcessRegistry.java +++ b/oap-server/analyzer/meter-analyzer/src/main/java/org/apache/skywalking/oap/meter/analyzer/dsl/registry/ProcessRegistry.java @@ -79,6 +79,6 @@ public class ProcessRegistry { traffic.setTimeBucket(timeBucket); traffic.setLastPingTimestamp(timeBucket); MetricsStreamProcessor.getInstance().in(traffic); - return traffic.id(); + return traffic.id().build(); } } \ No newline at end of file diff --git a/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/kafka/log/KafkaLogExporter.java b/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/kafka/log/KafkaLogExporter.java index 095a364ee7..bc54fd7360 100644 --- a/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/kafka/log/KafkaLogExporter.java +++ b/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/kafka/log/KafkaLogExporter.java @@ -101,7 +101,7 @@ public class KafkaLogExporter extends KafkaExportProducer implements LogExportSe LogData logData = transLogData(logRecord); ProducerRecord record = new ProducerRecord<>( setting.getKafkaTopicLog(), - logRecord.id(), + logRecord.id().build(), Bytes.wrap(logData.toByteArray()) ); super.getProducer().send(record, (metadata, ex) -> { diff --git a/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java b/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java index 6a5580207c..8cf52dccaf 100644 --- a/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java +++ b/oap-server/exporter/src/test/java/org/apache/skywalking/oap/server/exporter/provider/grpc/MockMetrics.java @@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.exporter.provider.grpc; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; public class MockMetrics extends Metrics { @Override - protected String id0() { - return "mock-metrics"; + protected StorageID id0() { + return new StorageID().append("", "mock-metrics"); } @Override diff --git a/oap-server/oal-rt/src/main/resources/code-templates/metrics/id.ftl b/oap-server/oal-rt/src/main/resources/code-templates/metrics/id.ftl index b9933d3009..55cb3c87a7 100644 --- a/oap-server/oal-rt/src/main/resources/code-templates/metrics/id.ftl +++ b/oap-server/oal-rt/src/main/resources/code-templates/metrics/id.ftl @@ -1,10 +1,9 @@ -protected String id0() { -StringBuilder splitJointId = new StringBuilder(String.valueOf(getTimeBucket())); +protected org.apache.skywalking.oap.server.core.storage.StorageID id0() { +org.apache.skywalking.oap.server.core.storage.StorageID id = new org.apache.skywalking.oap.server.core.storage.StorageID().append(TIME_BUCKET, getTimeBucket()); <#list fieldsFromSource as sourceField> <#if sourceField.isID()> - splitJointId.append(org.apache.skywalking.oap.server.core.Const.ID_CONNECTOR) - .append(${sourceField.fieldName}); + id.append("${sourceField.columnName}", ${sourceField.fieldName}); -return splitJointId.toString(); +return id; } diff --git a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java index 28027222a1..ed678430fe 100644 --- a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java +++ b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRuleTest.java @@ -37,6 +37,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.metrics.MultiIntValuesHolder; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.joda.time.LocalDateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; @@ -429,7 +430,7 @@ public class RunningRuleTest { private int value; @Override - protected String id0() { + protected StorageID id0() { return null; } @@ -486,7 +487,7 @@ public class RunningRuleTest { } @Override - protected String id0() { + protected StorageID id0() { return null; } @@ -538,7 +539,7 @@ public class RunningRuleTest { private DataTable value; @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java index 11ca78bc6b..39739813eb 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java @@ -21,13 +21,13 @@ package org.apache.skywalking.oap.server.core.alarm; import java.util.List; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; @@ -35,6 +35,7 @@ import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; + import static org.apache.skywalking.oap.server.core.analysis.record.Record.TIME_BUCKET; import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ALARM; @@ -59,8 +60,12 @@ public class AlarmRecord extends Record { public static final String TAGS_RAW_DATA = "tags_raw_data"; @Override - public String id() { - return getTimeBucket() + Const.ID_CONNECTOR + ruleName + Const.ID_CONNECTOR + id0 + Const.ID_CONNECTOR + id1; + public StorageID id() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(RULE_NAME, ruleName) + .append(ID0, id0) + .append(ID1, id1); } @Column(columnName = SCOPE) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java index 448c54b847..b8581474a4 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedData.java @@ -24,13 +24,14 @@ import java.util.LinkedList; import java.util.List; import org.apache.skywalking.oap.server.core.storage.ComparableStorageData; import org.apache.skywalking.oap.server.core.storage.StorageData; +import org.apache.skywalking.oap.server.core.storage.StorageID; /** * LimitedSizeBufferedData is a thread no safe implementation of {@link BufferedData}. It collects limited records of * each {@link StorageData#id()}. */ public class LimitedSizeBufferedData implements BufferedData { - private final HashMap> data; + private final HashMap> data; private final int limitedSize; public LimitedSizeBufferedData(int limitedSize) { @@ -40,7 +41,7 @@ public class LimitedSizeBufferedData storageDataList = this.data.get(id); if (storageDataList == null) { storageDataList = new LinkedList<>(); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java index 9413137a54..c75a46b53d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/MergableBufferedData.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; +import org.apache.skywalking.oap.server.core.storage.StorageID; /** * MergableBufferedData is a thread no safe implementation of {@link BufferedData}. {@link Metrics} in this cache would @@ -31,7 +32,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; * Concurrency {@link #accept(Metrics)}s and {@link #read()} while {@link #accept(Metrics)} are both not recommended. */ public class MergableBufferedData implements BufferedData { - private Map buffer; + private Map buffer; public MergableBufferedData() { buffer = new HashMap<>(); @@ -46,7 +47,7 @@ public class MergableBufferedData implements BufferedDa */ @Override public void accept(final METRICS data) { - final String id = data.id(); + final StorageID id = data.id(); final METRICS existed = buffer.get(id); if (existed == null) { buffer.put(id, data); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheReadCommand.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheReadCommand.java index c3e60ec131..fd8e17f09a 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheReadCommand.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheReadCommand.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.analysis.worker.TopNStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -47,8 +48,8 @@ public class TopNCacheReadCommand extends TopN { private String command; @Override - public String id() { - return id; + public StorageID id() { + return new StorageID().appendMutant(null, id); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheWriteCommand.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheWriteCommand.java index 1a7b9759c5..7adc17c946 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheWriteCommand.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/cache/TopNCacheWriteCommand.java @@ -24,6 +24,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.analysis.worker.TopNStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -48,8 +49,8 @@ public class TopNCacheWriteCommand extends TopN { private String command; @Override - public String id() { - return id; + public StorageID id() { + return new StorageID().appendMutant(null, id); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/database/TopNDatabaseStatement.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/database/TopNDatabaseStatement.java index 28cc05b0a7..97f28e0a18 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/database/TopNDatabaseStatement.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/database/TopNDatabaseStatement.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.analysis.worker.TopNStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -47,8 +48,8 @@ public class TopNDatabaseStatement extends TopN { private String statement; @Override - public String id() { - return id; + public StorageID id() { + return new StorageID().appendMutant(null, id); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java index 1c2ce98977..a520cb7d14 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java @@ -31,6 +31,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -65,11 +66,18 @@ public class EndpointTraffic extends Metrics { private String name = Const.EMPTY_STRING; @Override - protected String id0() { + protected StorageID id0() { // Downgrade the time bucket to day level only. // supportDownSampling == false for this entity. - return IDManager.EndpointID.buildId( - this.getServiceId(), this.getName()); + return new StorageID() + .appendMutant( + new String[] { + SERVICE_ID, + NAME + }, + IDManager.EndpointID.buildId( + this.getServiceId(), this.getName()) + ); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java index 374cf62a26..d69af09e5e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/instance/InstanceTraffic.java @@ -31,6 +31,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -131,8 +132,12 @@ public class InstanceTraffic extends Metrics { } @Override - protected String id0() { - return IDManager.ServiceInstanceID.buildId(serviceId, name); + protected StorageID id0() { + return new StorageID() + .appendMutant(new String[] { + SERVICE_ID, + NAME + }, IDManager.ServiceInstanceID.buildId(serviceId, name)); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java index 119e3226bc..aaf5e3a978 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/AbstractLogRecord.java @@ -26,6 +26,7 @@ import org.apache.skywalking.oap.server.core.analysis.manual.searchtag.Tag; import org.apache.skywalking.oap.server.core.analysis.record.LongText; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.query.type.ContentType; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; @@ -106,7 +107,7 @@ public abstract class AbstractLogRecord extends Record { private List tagsInString; @Override - public String id() { + public StorageID id() { throw new UnexpectedException("AbstractLogRecord doesn't provide id()"); } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/LogRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/LogRecord.java index 352e012cd6..c5d30ba3b9 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/LogRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/log/LogRecord.java @@ -23,6 +23,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -50,8 +51,8 @@ public class LogRecord extends AbstractLogRecord { private String uniqueId; @Override - public String id() { - return uniqueId; + public StorageID id() { + return new StorageID().append(UNIQUE_ID, uniqueId); } public static class Builder extends AbstractLogRecord.Builder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java index 934026b9eb..1c3323945c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/networkalias/NetworkAddressAlias.java @@ -29,6 +29,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -87,8 +88,9 @@ public class NetworkAddressAlias extends Metrics { } @Override - protected String id0() { - return IDManager.NetworkAddressAliasDefine.buildId(address); + protected StorageID id0() { + return new StorageID().appendMutant( + new String[] {ADDRESS}, IDManager.NetworkAddressAliasDefine.buildId(address)); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ProcessTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ProcessTraffic.java index 4728b6d760..98e14a4336 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ProcessTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ProcessTraffic.java @@ -21,6 +21,7 @@ package org.apache.skywalking.oap.server.core.analysis.manual.process; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import java.util.Map; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; @@ -32,6 +33,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -39,8 +41,6 @@ import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; import org.apache.skywalking.oap.server.library.util.StringUtil; -import java.util.Map; - import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.PROCESS; @Stream(name = ProcessTraffic.INDEX_NAME, scopeId = PROCESS, @@ -183,11 +183,14 @@ public class ProcessTraffic extends Metrics { } @Override - protected String id0() { - if (processId != null) { - return processId; + protected StorageID id0() { + if (processId == null) { + processId = IDManager.ProcessID.buildId(instanceId, name); } - return IDManager.ProcessID.buildId(instanceId, name); + return new StorageID().appendMutant(new String[] { + INSTANCE_ID, + NAME + }, processId); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ServiceLabelRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ServiceLabelRecord.java index e84dc6534b..b3d398f273 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ServiceLabelRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/process/ServiceLabelRecord.java @@ -20,22 +20,20 @@ package org.apache.skywalking.oap.server.core.analysis.manual.process; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.MetricsExtension; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; +import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; -import java.nio.charset.StandardCharsets; -import java.util.Base64; - import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_LABEL; /** @@ -47,7 +45,7 @@ import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SE @Getter @Stream(name = ServiceLabelRecord.INDEX_NAME, scopeId = SERVICE_LABEL, builder = ServiceLabelRecord.Builder.class, processor = MetricsStreamProcessor.class) -@MetricsExtension(supportDownSampling = false, supportUpdate = false) +@MetricsExtension(supportDownSampling = false, supportUpdate = false, timeRelativeID = false) @EqualsAndHashCode(of = { "serviceId", "label" @@ -59,8 +57,10 @@ public class ServiceLabelRecord extends Metrics { public static final String SERVICE_ID = "service_id"; public static final String LABEL = "label"; + @BanyanDB.SeriesID(index = 0) @Column(columnName = SERVICE_ID) private String serviceId; + @BanyanDB.SeriesID(index = 1) @Column(columnName = LABEL, length = 50) private String label; @@ -84,9 +84,10 @@ public class ServiceLabelRecord extends Metrics { } @Override - protected String id0() { - return this.serviceId + Const.ID_CONNECTOR + new String(Base64.getEncoder() - .encode(label.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8); + protected StorageID id0() { + return new StorageID() + .append(SERVICE_ID, serviceId) + .append(LABEL, label); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java index 6437a71d97..78198382be 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/endpoint/EndpointRelationServerSideMetrics.java @@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.MetricsExtension; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; @@ -29,6 +28,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -72,10 +72,10 @@ public class EndpointRelationServerSideMetrics extends Metrics { private String entityId; @Override - protected String id0() { - String splitJointId = String.valueOf(getTimeBucket()); - splitJointId += Const.ID_CONNECTOR + entityId; - return splitJointId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java index a3290b4e3a..0684bfd37f 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationClientSideMetrics.java @@ -21,13 +21,13 @@ package org.apache.skywalking.oap.server.core.analysis.manual.relation.instance; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -78,8 +78,9 @@ public class ServiceInstanceRelationClientSideMetrics extends Metrics { private String entityId; @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID().append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, entityId); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java index d62527f59b..fb01c0bcaa 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/instance/ServiceInstanceRelationServerSideMetrics.java @@ -21,13 +21,13 @@ package org.apache.skywalking.oap.server.core.analysis.manual.relation.instance; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -80,8 +80,10 @@ public class ServiceInstanceRelationServerSideMetrics extends Metrics { private String entityId; @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationClientSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationClientSideMetrics.java index 109305aabd..8d25c4d49e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationClientSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationClientSideMetrics.java @@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.core.analysis.manual.relation.process; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.MetricsExtension; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; @@ -29,6 +28,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -73,8 +73,10 @@ public class ProcessRelationClientSideMetrics extends Metrics { private int componentId; @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationServerSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationServerSideMetrics.java index 78849f4d33..0db42a0a6c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationServerSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/process/ProcessRelationServerSideMetrics.java @@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.core.analysis.manual.relation.process; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.MetricsExtension; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; @@ -29,6 +28,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -72,8 +72,9 @@ public class ProcessRelationServerSideMetrics extends Metrics { private int componentId; @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID().append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, entityId); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java index d559aece29..7f1ffa402a 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationClientSideMetrics.java @@ -21,13 +21,13 @@ package org.apache.skywalking.oap.server.core.analysis.manual.relation.service; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -68,8 +68,9 @@ public class ServiceRelationClientSideMetrics extends Metrics { private String entityId; @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID().append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, entityId); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java index f767d331f2..d519cd31a1 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/relation/service/ServiceRelationServerSideMetrics.java @@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.core.analysis.manual.relation.service; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.MetricsExtension; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; @@ -29,6 +28,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -72,8 +72,10 @@ public class ServiceRelationServerSideMetrics extends Metrics { private String entityId; @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java index 703697cee3..7474fd24d8 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/searchtag/TagAutocompleteData.java @@ -28,6 +28,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -87,8 +88,12 @@ public class TagAutocompleteData extends Metrics { } @Override - protected String id0() { - return toTimeBucketInDay() + "-" + tagType + "-" + tagKey + "=" + tagValue; + protected StorageID id0() { + return new StorageID() + .appendMutant(new String[] {TIME_BUCKET}, toTimeBucketInDay()) + .append(TAG_TYPE, tagType) + .append(TAG_KEY, tagKey) + .append(TAG_VALUE, tagValue); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java index 9da77919ea..b5ceed2cd1 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/segment/SegmentRecord.java @@ -27,6 +27,7 @@ import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -106,8 +107,8 @@ public class SegmentRecord extends Record { private List tags; @Override - public String id() { - return segmentId; + public StorageID id() { + return new StorageID().append(SEGMENT_ID, segmentId); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java index 7a342b6df6..3aaca1e99d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java @@ -31,6 +31,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -98,12 +99,18 @@ public class ServiceTraffic extends Metrics { * @return Base64 encode(serviceName) + "." + layer.value */ @Override - protected String id0() { + protected StorageID id0() { + String id; if (layer != null) { - return encode(name) + Const.POINT + layer.value(); + id = encode(name) + Const.POINT + layer.value(); } else { - return encode(name) + Const.POINT + Layer.UNDEFINED.value(); + id = encode(name) + Const.POINT + Layer.UNDEFINED.value(); } + return new StorageID().appendMutant(new String[] { + NAME, + LAYER + }, id); + } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/spanattach/SpanAttachedEventRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/spanattach/SpanAttachedEventRecord.java index 3e5bcf1046..b7d989ea09 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/spanattach/SpanAttachedEventRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/spanattach/SpanAttachedEventRecord.java @@ -20,11 +20,11 @@ package org.apache.skywalking.oap.server.core.analysis.manual.spanattach; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -81,8 +81,12 @@ public class SpanAttachedEventRecord extends Record { private long timestamp; @Override - public String id() { - return traceSegmentId + Const.ID_CONNECTOR + startTimeSecond + Const.ID_CONNECTOR + startTimeNanos + Const.ID_CONNECTOR + event; + public StorageID id() { + return new StorageID() + .append(TRACE_SEGMENT_ID, traceSegmentId) + .append(START_TIME_SECOND, startTimeSecond) + .append(START_TIME_NANOS, startTimeNanos) + .append(EVENT, event); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledSlowTraceRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledSlowTraceRecord.java index 77a53567aa..b3fc1527b8 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledSlowTraceRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledSlowTraceRecord.java @@ -20,12 +20,12 @@ package org.apache.skywalking.oap.server.core.analysis.manual.trace; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -67,8 +67,11 @@ public class SampledSlowTraceRecord extends Record { private long timestamp; @Override - public String id() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId + Const.ID_CONNECTOR + traceId; + public StorageID id() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, entityId) + .append(TRACE_ID, traceId); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus4xxTraceRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus4xxTraceRecord.java index 45c88bd1c3..33ab12fd5d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus4xxTraceRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus4xxTraceRecord.java @@ -20,12 +20,12 @@ package org.apache.skywalking.oap.server.core.analysis.manual.trace; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -68,8 +68,11 @@ public class SampledStatus4xxTraceRecord extends Record { private long timestamp; @Override - public String id() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId + Const.ID_CONNECTOR + traceId; + public StorageID id() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, entityId) + .append(TRACE_ID, traceId); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus5xxTraceRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus5xxTraceRecord.java index eeaca14251..5c8c0213ed 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus5xxTraceRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/trace/SampledStatus5xxTraceRecord.java @@ -20,12 +20,12 @@ package org.apache.skywalking.oap.server.core.analysis.manual.trace; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.topn.TopN; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -68,8 +68,11 @@ public class SampledStatus5xxTraceRecord extends Record { private long timestamp; @Override - public String id() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId + Const.ID_CONNECTOR + traceId; + public StorageID id() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, entityId) + .append(TRACE_ID, traceId); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java index da8864bf07..6f01b1e628 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/HistogramFunction.java @@ -23,7 +23,6 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.extern.slf4j.Slf4j; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity; @@ -31,6 +30,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.query.type.Bucket; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -141,8 +141,10 @@ public abstract class HistogramFunction extends Meter implements AcceptableValue } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java index 4f6ce676fe..c8961eac1b 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/PercentileFunction.java @@ -26,7 +26,6 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity; @@ -37,6 +36,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.MultiIntValuesHold import org.apache.skywalking.oap.server.core.analysis.metrics.PercentileMetrics; import org.apache.skywalking.oap.server.core.query.type.Bucket; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; @@ -251,8 +251,10 @@ public abstract class PercentileFunction extends Meter implements AcceptableValu } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java index 9d6351c2d8..f01ff10ac2 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgFunction.java @@ -22,7 +22,6 @@ import java.util.Objects; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; @@ -36,6 +35,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Entranc import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.SourceFrom; import org.apache.skywalking.oap.server.core.query.sql.Function; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -151,8 +151,10 @@ public abstract class AvgFunction extends Meter implements AcceptableValue } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java index 76bcf523ee..46289e676d 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramFunction.java @@ -23,7 +23,6 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.extern.slf4j.Slf4j; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity; @@ -34,6 +33,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.query.type.Bucket; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; @@ -172,8 +172,10 @@ public abstract class AvgHistogramFunction extends Meter implements AcceptableVa } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java index 055a11b1d1..186e047b02 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgHistogramPercentileFunction.java @@ -30,7 +30,6 @@ import java.util.stream.IntStream; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity; @@ -43,6 +42,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.metrics.MultiIntValuesHolder; import org.apache.skywalking.oap.server.core.query.type.Bucket; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; @@ -325,8 +325,10 @@ public abstract class AvgHistogramPercentileFunction extends Meter implements Ac } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java index 89f94d66a8..9e78a41da8 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/avg/AvgLabeledFunction.java @@ -23,7 +23,6 @@ import java.util.Set; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; @@ -34,6 +33,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable; import org.apache.skywalking.oap.server.core.analysis.metrics.LabeledValueHolder; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; @@ -157,8 +157,10 @@ public abstract class AvgLabeledFunction extends Meter implements AcceptableValu } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java index 8ebe8ed4f9..800320048c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/latest/LatestFunction.java @@ -22,7 +22,6 @@ import java.util.Objects; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; @@ -35,6 +34,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Entranc import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.SourceFrom; import org.apache.skywalking.oap.server.core.query.sql.Function; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -136,8 +136,10 @@ public abstract class LatestFunction extends Meter implements AcceptableValue } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + getEntityId(); + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumHistogramPercentileFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumHistogramPercentileFunction.java index fc99621d79..c50a8723ac 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumHistogramPercentileFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumHistogramPercentileFunction.java @@ -21,10 +21,14 @@ package org.apache.skywalking.oap.server.core.analysis.meter.function.sum; import com.google.common.base.Strings; import io.vavr.Tuple; import io.vavr.Tuple2; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collector; +import java.util.stream.IntStream; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; import org.apache.skywalking.oap.server.core.analysis.meter.MeterEntity; @@ -37,6 +41,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.metrics.MultiIntValuesHolder; import org.apache.skywalking.oap.server.core.query.type.Bucket; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.ElasticSearch; @@ -44,12 +49,6 @@ import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; -import java.util.Comparator; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collector; -import java.util.stream.IntStream; - import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.mapping; @@ -290,8 +289,10 @@ public abstract class SumHistogramPercentileFunction extends Meter implements Ac } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java index 918837ed77..3e53c18c73 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinFunction.java @@ -18,10 +18,10 @@ package org.apache.skywalking.oap.server.core.analysis.meter.function.sumpermin; +import java.util.Objects; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; @@ -34,14 +34,13 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Entranc import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.SourceFrom; import org.apache.skywalking.oap.server.core.query.sql.Function; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; -import java.util.Objects; - @ToString @MeterFunction(functionName = "sumPerMin") public abstract class SumPerMinFunction extends Meter implements AcceptableValue, LongValueHolder { @@ -133,8 +132,10 @@ public abstract class SumPerMinFunction extends Meter implements AcceptableValue } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + getEntityId(); + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinLabeledFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinLabeledFunction.java index 338f9107c0..0dbae94e73 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinLabeledFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sumpermin/SumPerMinLabeledFunction.java @@ -18,9 +18,9 @@ package org.apache.skywalking.oap.server.core.analysis.meter.function.sumpermin; +import java.util.Objects; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.UnexpectedException; import org.apache.skywalking.oap.server.core.analysis.manual.instance.InstanceTraffic; import org.apache.skywalking.oap.server.core.analysis.meter.Meter; @@ -33,14 +33,13 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.Entrance; import org.apache.skywalking.oap.server.core.analysis.metrics.annotation.SourceFrom; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; -import java.util.Objects; - @MeterFunction(functionName = "sumPerMinLabeled") public abstract class SumPerMinLabeledFunction extends Meter implements AcceptableValue, LabeledValueHolder { @@ -124,8 +123,10 @@ public abstract class SumPerMinLabeledFunction extends Meter implements Acceptab } @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + getEntityId(); + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, getEntityId()); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java index 40c799d697..cc14d37545 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Event.java @@ -18,9 +18,10 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; -import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.EVENT; -import static org.apache.skywalking.oap.server.library.util.StringUtil.isNotBlank; import com.google.common.base.Strings; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; import org.apache.skywalking.oap.server.core.analysis.Layer; import org.apache.skywalking.oap.server.core.analysis.MetricsExtension; import org.apache.skywalking.oap.server.core.analysis.Stream; @@ -29,14 +30,15 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.Setter; + +import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.EVENT; +import static org.apache.skywalking.oap.server.library.util.StringUtil.isNotBlank; @Getter @Setter @@ -77,8 +79,8 @@ public class Event extends Metrics { private static final int PARAMETER_MAX_LENGTH = 2000; @Override - protected String id0() { - return getUuid(); + protected StorageID id0() { + return new StorageID().append(UUID, getUuid()); } @Column(columnName = UUID) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java index fb9412405c..8864b3663e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/metrics/Metrics.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.remote.data.StreamData; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; import org.apache.skywalking.oap.server.core.storage.StorageData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -149,15 +150,15 @@ public abstract class Metrics extends StreamData implements StorageData { return TimeBucket.isDayBucket(timeBucket); } - private volatile String id; + private volatile StorageID id; @Override - public String id() { + public StorageID id() { if (id == null) { id = id0(); } return id; } - protected abstract String id0(); + protected abstract StorageID id0(); } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsAggregateWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsAggregateWorker.java index 61576fc9cf..698341144f 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsAggregateWorker.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/MetricsAggregateWorker.java @@ -118,9 +118,6 @@ public class MetricsAggregateWorker extends AbstractWorker { if (currentTime - lastSendTime > l1FlushPeriod) { mergeDataCache.read().forEach( data -> { - if (log.isDebugEnabled()) { - log.debug(data.toString()); - } nextWorker.in(data); } ); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/errorlog/BrowserErrorLogRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/errorlog/BrowserErrorLogRecord.java index 73aec272cc..e26034dd90 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/errorlog/BrowserErrorLogRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/browser/manual/errorlog/BrowserErrorLogRecord.java @@ -24,6 +24,7 @@ import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -50,8 +51,8 @@ public class BrowserErrorLogRecord extends Record { public static final String DATA_BINARY = "data_binary"; @Override - public String id() { - return uniqueId; + public StorageID id() { + return new StorageID().append(UNIQUE_ID, uniqueId); } @Setter diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplate.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplate.java index a1bc7b08ef..7ecde5db8f 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplate.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/management/ui/template/UITemplate.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.management.ManagementData; import org.apache.skywalking.oap.server.core.analysis.worker.ManagementStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage; @@ -59,8 +60,8 @@ public class UITemplate extends ManagementData { private int disabled; @Override - public String id() { - return templateId; + public StorageID id() { + return new StorageID().append(TEMPLATE_ID, templateId); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java index 3c74857395..46d80e3c79 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingQueryService.java @@ -19,6 +19,16 @@ package org.apache.skywalking.oap.server.core.profiling.ebpf; import com.google.gson.Gson; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.oap.server.core.CoreModuleConfig; @@ -53,17 +63,6 @@ import org.apache.skywalking.oap.server.library.module.Service; import org.apache.skywalking.oap.server.library.util.CollectionUtils; import org.apache.skywalking.oap.server.library.util.StringUtil; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - @Slf4j @RequiredArgsConstructor public class EBPFProfilingQueryService implements Service { @@ -204,8 +203,8 @@ public class EBPFProfilingQueryService implements Service { final List processes = getProcessMetricsDAO().multiGet(processModel, processMetrics); final Map processMap = processes.stream() - .map(t -> (ProcessTraffic) t) - .collect(Collectors.toMap(Metrics::id, this::convertProcess)); + .map(t -> (ProcessTraffic) t) + .collect(Collectors.toMap(m -> m.id().build(), this::convertProcess)); schedules.forEach(p -> p.setProcess(processMap.get(p.getProcessId()))); } return schedules; @@ -219,7 +218,7 @@ public class EBPFProfilingQueryService implements Service { private Process convertProcess(ProcessTraffic traffic) { final Process process = new Process(); - process.setId(traffic.id()); + process.setId(traffic.id().build()); process.setName(traffic.getName()); final String serviceId = traffic.getServiceId(); process.setServiceId(serviceId); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java index 4bbe858610..919c168dea 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingDataRecord.java @@ -24,6 +24,7 @@ import lombok.Data; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -64,12 +65,19 @@ public class EBPFProfilingDataRecord extends Record { private long uploadTime; @Override - public String id() { - return Hashing.sha256().newHasher() - .putString(scheduleId, Charsets.UTF_8) - .putString(stackIdList, Charsets.UTF_8) - .putLong(uploadTime) - .hash().toString(); + public StorageID id() { + return new StorageID().appendMutant( + new String[] { + SCHEDULE_ID, + STACK_ID_LIST, + UPLOAD_TIME + }, + Hashing.sha256().newHasher() + .putString(scheduleId, Charsets.UTF_8) + .putString(stackIdList, Charsets.UTF_8) + .putLong(uploadTime) + .hash().toString() + ); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java index 39a2efd6c0..2c086d488e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingScheduleRecord.java @@ -27,6 +27,7 @@ import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -43,12 +44,12 @@ import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.EB @Setter @Getter @Stream(name = EBPFProfilingScheduleRecord.INDEX_NAME, scopeId = EBPF_PROFILING_SCHEDULE, - builder = EBPFProfilingScheduleRecord.Builder.class, processor = MetricsStreamProcessor.class) + builder = EBPFProfilingScheduleRecord.Builder.class, processor = MetricsStreamProcessor.class) @MetricsExtension(supportDownSampling = false, supportUpdate = true) @EqualsAndHashCode(of = { - "taskId", - "processId", - "startTime", + "taskId", + "processId", + "startTime", }) @SQLDatabase.Sharding(shardingAlgorithm = ShardingAlgorithm.NO_SHARDING) public class EBPFProfilingScheduleRecord extends Metrics { @@ -95,8 +96,8 @@ public class EBPFProfilingScheduleRecord extends Metrics { } @Override - protected String id0() { - return scheduleId; + protected StorageID id0() { + return new StorageID().append(EBPF_PROFILING_SCHEDULE_ID, scheduleId); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingTaskRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingTaskRecord.java index 1e34112d33..de7ce305b7 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingTaskRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/storage/EBPFProfilingTaskRecord.java @@ -25,6 +25,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.config.NoneStream; import org.apache.skywalking.oap.server.core.analysis.worker.NoneStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -39,7 +40,7 @@ import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.EB @Data @ScopeDeclaration(id = EBPF_PROFILING_TASK, name = "EBPFProfilingTask") @Stream(name = EBPFProfilingTaskRecord.INDEX_NAME, scopeId = EBPF_PROFILING_TASK, - builder = EBPFProfilingTaskRecord.Builder.class, processor = NoneStreamProcessor.class) + builder = EBPFProfilingTaskRecord.Builder.class, processor = NoneStreamProcessor.class) @BanyanDB.TimestampColumn(EBPFProfilingTaskRecord.CREATE_TIME) public class EBPFProfilingTaskRecord extends NoneStream { public static final String INDEX_NAME = "ebpf_profiling_task"; @@ -83,11 +84,17 @@ public class EBPFProfilingTaskRecord extends NoneStream { private String extensionConfigJson; @Override - public String id() { - return Hashing.sha256().newHasher() - .putString(logicalId, Charsets.UTF_8) - .putLong(createTime) - .hash().toString(); + public StorageID id() { + return new StorageID().appendMutant( + new String[] { + LOGICAL_ID, + CREATE_TIME + }, + Hashing.sha256().newHasher() + .putString(logicalId, Charsets.UTF_8) + .putLong(createTime) + .hash().toString() + ); } /** @@ -95,10 +102,10 @@ public class EBPFProfilingTaskRecord extends NoneStream { */ public void generateLogicalId() { this.logicalId = Hashing.sha256().newHasher() - .putString(serviceId, Charsets.UTF_8) - .putString(processLabelsJson, Charsets.UTF_8) - .putLong(startTime) - .hash().toString(); + .putString(serviceId, Charsets.UTF_8) + .putString(processLabelsJson, Charsets.UTF_8) + .putLong(startTime) + .hash().toString(); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskLogRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskLogRecord.java index 8102067a79..e27a42284c 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskLogRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskLogRecord.java @@ -20,11 +20,11 @@ package org.apache.skywalking.oap.server.core.profiling.trace; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -65,8 +65,12 @@ public class ProfileTaskLogRecord extends Record { private long timestamp; @Override - public String id() { - return getTaskId() + Const.ID_CONNECTOR + getInstanceId() + Const.ID_CONNECTOR + getOperationType() + Const.ID_CONNECTOR + getOperationTime(); + public StorageID id() { + return new StorageID() + .append(TASK_ID, getTaskId()) + .append(INSTANCE_ID, getInstanceId()) + .append(OPERATION_TYPE, getOperationType()) + .append(OPERATION_TIME, getOperationTime()); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskMutationService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskMutationService.java index 535a7d757f..1e095a5cb4 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskMutationService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskMutationService.java @@ -97,7 +97,7 @@ public class ProfileTaskMutationService implements Service { task.setTimeBucket(TimeBucket.getMinuteTimeBucket(taskStartTime)); NoneStreamProcessor.getInstance().in(task); - return ProfileTaskCreationResult.builder().id(task.id()).build(); + return ProfileTaskCreationResult.builder().id(task.id().build()).build(); } private String checkDataSuccess(final String serviceId, diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskRecord.java index 729b41f538..2fd77c6a90 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileTaskRecord.java @@ -24,6 +24,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.config.NoneStream; import org.apache.skywalking.oap.server.core.analysis.worker.NoneStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -54,8 +55,8 @@ public class ProfileTaskRecord extends NoneStream { public static final String MAX_SAMPLING_COUNT = "max_sampling_count"; @Override - public String id() { - return taskId; + public StorageID id() { + return new StorageID().append(TASK_ID, taskId); } @Column(columnName = SERVICE_ID) diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileThreadSnapshotRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileThreadSnapshotRecord.java index da239b72ec..a1c0818c5a 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileThreadSnapshotRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/trace/ProfileThreadSnapshotRecord.java @@ -20,11 +20,11 @@ package org.apache.skywalking.oap.server.core.profiling.trace; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.ScopeDeclaration; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -67,8 +67,11 @@ public class ProfileThreadSnapshotRecord extends Record { private byte[] stackBinary; @Override - public String id() { - return getTaskId() + Const.ID_CONNECTOR + getSegmentId() + Const.ID_CONNECTOR + getSequence() + Const.ID_CONNECTOR; + public StorageID id() { + return new StorageID() + .append(TASK_ID, getTaskId()) + .append(SEGMENT_ID, getSegmentId()) + .append(SEQUENCE, getSequence()); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java index f6874c4df3..cb57a5c01a 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/ProcessTopologyBuilder.java @@ -18,12 +18,20 @@ package org.apache.skywalking.oap.server.core.query; +import java.io.IOException; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.analysis.IDManager; import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType; import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic; -import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.config.IComponentLibraryCatalogService; import org.apache.skywalking.oap.server.core.query.type.Call; import org.apache.skywalking.oap.server.core.query.type.ProcessNode; @@ -36,16 +44,6 @@ import org.apache.skywalking.oap.server.core.storage.model.Model; import org.apache.skywalking.oap.server.core.storage.model.StorageModels; import org.apache.skywalking.oap.server.library.module.ModuleManager; -import java.io.IOException; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - @Slf4j public class ProcessTopologyBuilder { private final IComponentLibraryCatalogService componentLibraryCatalogService; @@ -88,7 +86,7 @@ public class ProcessTopologyBuilder { return p; }).collect(Collectors.toList())).stream() .map(t -> (ProcessTraffic) t) - .collect(Collectors.toMap(Metrics::id, this::buildNode)); + .collect(Collectors.toMap(m -> m.id().build(), this::buildNode)); for (Call.CallDetail clientCall : clientCalls) { if (!callMap.containsKey(clientCall.getId())) { @@ -128,7 +126,7 @@ public class ProcessTopologyBuilder { private ProcessNode buildNode(ProcessTraffic traffic) { ProcessNode processNode = new ProcessNode(); - processNode.setId(traffic.id()); + processNode.setId(traffic.id().build()); processNode.setServiceId(traffic.getServiceId()); processNode.setServiceName(IDManager.ServiceID.analysisId(traffic.getServiceId()).getName()); processNode.setServiceInstanceId(traffic.getInstanceId()); diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageData.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageData.java index f8224835d1..f3f4810c08 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageData.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageData.java @@ -25,5 +25,5 @@ public interface StorageData { /** * @return the unique id used in any storage option. */ - String id(); + StorageID id(); } diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageID.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageID.java new file mode 100644 index 0000000000..e6d8d26309 --- /dev/null +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageID.java @@ -0,0 +1,169 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.oap.server.core.storage; + +import com.google.common.base.Joiner; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.oap.server.core.Const; +import org.apache.skywalking.oap.server.library.util.StringUtil; + +/** + * StorageID represents an identification for the metric or the record. + * Typically, an ID is composited by two parts + * 1. Time bucket based on downsampling. + * 2. The encoded entity ID, such as Service ID. + * + * In the SQL database and ElasticSearch, the string ID is preferred. + * In the BanyanDB, time series and entity ID(series ID) would be treated separately. + * + * @since 9.4.0 StorageID replaced the `string id()` method in the StorageData. An object-oriented ID provides a more + * friendly interface for various database implementation. + */ +@EqualsAndHashCode(of = { + "fragments" +}) +public class StorageID { + private final List fragments; + /** + * Once the storage ID was {@link #build()} or {@link #read()}, + * this object would switch to the sealed status, no more append is allowed. + */ + private boolean sealed = false; + /** + * The string ID would only be built once. + */ + private String builtID; + + public StorageID() { + fragments = new ArrayList<>(2); + } + + public StorageID append(String name, String value) { + if (StringUtil.isBlank(name)) { + throw new IllegalArgumentException("The name of storage ID should not be null or empty."); + } + if (sealed) { + throw new IllegalStateException("The storage ID is sealed. Can't append a new fragment, name=" + name); + } + fragments.add(new Fragment(new String[] {name}, String.class, false, value)); + return this; + } + + public StorageID append(String name, long value) { + if (StringUtil.isBlank(name)) { + throw new IllegalArgumentException("The name of storage ID should not be null or empty."); + } + if (sealed) { + throw new IllegalStateException("The storage ID is sealed. Can't append a new fragment, name=" + name); + } + fragments.add(new Fragment(new String[] {name}, Long.class, false, value)); + return this; + } + + public StorageID append(String name, int value) { + if (StringUtil.isBlank(name)) { + throw new IllegalArgumentException("The name of storage ID should not be null or empty."); + } + if (sealed) { + throw new IllegalStateException("The storage ID is sealed. Can't append a new fragment, name=" + name); + } + fragments.add(new Fragment(new String[] {name}, Integer.class, false, value)); + return this; + } + + public StorageID appendMutant(String[] source, long value) { + if (sealed) { + throw new IllegalStateException("The storage ID is sealed. Can't append a new fragment, source=" + Arrays.toString(source)); + } + fragments.add(new Fragment(source, Long.class, true, value)); + return this; + } + + public StorageID appendMutant(final String[] source, final String value) { + if (sealed) { + throw new IllegalStateException("The storage ID is sealed. Can't append a new fragment, source=" + Arrays.toString(source)); + } + fragments.add(new Fragment(source, String.class, true, value)); + return this; + } + + /** + * @return the string ID concatenating the values of {@link #fragments} by the underline(_). + */ + public String build() { + sealed = true; + if (builtID == null) { + builtID = Joiner.on(Const.ID_CONNECTOR).join(fragments); + } + return builtID; + } + + /** + * @return a read-only list to avoid unexpected change for metric ID. + */ + public List read() { + sealed = true; + return Collections.unmodifiableList(fragments); + } + + @RequiredArgsConstructor + @Getter + @EqualsAndHashCode(of = { + "name", + "value" + }, doNotUseGetters = true) + public static class Fragment { + /** + * The column name of the value, or the original column names of the mutate value. + * + * The names could be + * 1. Always one column if this is not {@link #mutate} and from a certain persistent column. + * 2. Be null if {@link #mutate} is true and no relative column, such as the original value is not in + * the persistence. + * 3. One or multi-values if the value is built through a symmetrical or asymmetrical encoding algorithm. + */ + private final String[] name; + /** + * Represent the class type of the {@link #value}. + */ + private final Class type; + /** + * If true, the field was from {@link #name}, and value is changed by internal rules. + * Such as time bucket downsampling, use a day-level time-bucket to build the ID for a minute dimension metric. + */ + private final boolean mutate; + private final Object value; + + public Optional getName() { + return Optional.ofNullable(name); + } + + @Override + public String toString() { + return value.toString(); + } + } +} diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceRelationTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceRelationTraffic.java index 6f8cd850ea..93f267ce04 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceRelationTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceRelationTraffic.java @@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.core.zipkin; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.MetricsExtension; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; @@ -29,6 +28,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -59,8 +59,10 @@ public class ZipkinServiceRelationTraffic extends Metrics { private String remoteServiceName; @Override - protected String id0() { - return serviceName + Const.ID_CONNECTOR + remoteServiceName; + protected StorageID id0() { + return new StorageID() + .append(SERVICE_NAME, serviceName) + .append(REMOTE_SERVICE_NAME, remoteServiceName); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceSpanTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceSpanTraffic.java index d74d3ab1c3..6fd873e310 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceSpanTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceSpanTraffic.java @@ -29,6 +29,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -60,8 +61,10 @@ public class ZipkinServiceSpanTraffic extends Metrics { private String spanName = Const.EMPTY_STRING; @Override - protected String id0() { - return serviceName + Const.ID_CONNECTOR + spanName; + protected StorageID id0() { + return new StorageID() + .append(SERVICE_NAME, serviceName) + .append(SPAN_NAME, spanName); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceTraffic.java index a227e08a21..098790919b 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceTraffic.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinServiceTraffic.java @@ -29,6 +29,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity; @@ -53,8 +54,8 @@ public class ZipkinServiceTraffic extends Metrics { private String serviceName = Const.EMPTY_STRING; @Override - protected String id0() { - return serviceName; + protected StorageID id0() { + return new StorageID().append(SERVICE_NAME, serviceName); } @Override diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinSpanRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinSpanRecord.java index 875b8f21dd..959476867f 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinSpanRecord.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/zipkin/ZipkinSpanRecord.java @@ -31,6 +31,7 @@ import org.apache.skywalking.oap.server.core.analysis.record.Record; import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; import org.apache.skywalking.oap.server.core.storage.ShardingAlgorithm; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.BanyanDB; import org.apache.skywalking.oap.server.core.storage.annotation.Column; import org.apache.skywalking.oap.server.core.storage.annotation.SQLDatabase; @@ -167,8 +168,8 @@ public class ZipkinSpanRecord extends Record { private List query; @Override - public String id() { - return traceId + Const.LINE + spanId; + public StorageID id() { + return new StorageID().append(TRACE_ID, traceId).append(SPAN_ID, spanId); } public static class Builder implements StorageBuilder { diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedDataTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedDataTest.java index 9a6e217b70..e5445bd902 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedDataTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/data/LimitedSizeBufferedDataTest.java @@ -20,6 +20,7 @@ package org.apache.skywalking.oap.server.core.analysis.data; import java.util.Objects; import org.apache.skywalking.oap.server.core.storage.ComparableStorageData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -63,8 +64,8 @@ public class LimitedSizeBufferedDataTest { } @Override - public String id() { - return "id"; + public StorageID id() { + return new StorageID().append("ID", "id"); } @Override diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetricsTest.java index 446ee67aad..0fb369eafb 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/ApdexMetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Before; import org.junit.Test; @@ -104,7 +105,7 @@ public class ApdexMetricsTest { public class ApdexMetricsImpl extends ApdexMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetricsTest.java index 0809ebcede..47837b3533 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/CountMetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -56,7 +57,7 @@ public class CountMetricsTest { public class CountMetricsImpl extends CountMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/HeatMapMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/HeatMapMetricsTest.java index 713b4fac89..bd58c111a2 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/HeatMapMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/HeatMapMetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -88,7 +89,7 @@ public class HeatMapMetricsTest { public class HistogramMetricsMocker extends HistogramMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetricsTest.java index 4867dc5378..1efe2a7c19 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/LongAvgMetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -52,7 +53,7 @@ public class LongAvgMetricsTest { public class LongAvgMetricsImpl extends LongAvgMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java index f3dcd24186..0d11626c04 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MaxLongMetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -54,7 +55,7 @@ public class MaxLongMetricsTest { public class MaxLongMetricsImpl extends MaxLongMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java index 351441e41f..ec7c141ea0 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -73,7 +74,7 @@ public class MetricsTest { public class MetricsMocker extends Metrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetricsTest.java index b02dca055d..eb4dbfed1e 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/MinLongMetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -59,7 +60,7 @@ public class MinLongMetricsTest { public class MinLongMetricsImpl extends MinLongMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetricsTest.java index 51a2dbc655..5f7024a627 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentMetricsTest.java @@ -20,6 +20,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.analysis.metrics.expression.StringMatch; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -67,7 +68,7 @@ public class PercentMetricsTest { public class PercentMetricsImpl extends PercentMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetricsTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetricsTest.java index 512cc9964c..56b95222c4 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetricsTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/PercentileMetricsTest.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.core.analysis.metrics; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.junit.Assert; import org.junit.Test; @@ -118,7 +119,7 @@ public class PercentileMetricsTest { public class PercentileMetricsMocker extends PercentileMetrics { @Override - protected String id0() { + protected StorageID id0() { return null; } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/expression/NumberMatchTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/expression/NumberMatchTest.java index 2048f4451f..ea6c6edf85 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/expression/NumberMatchTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/analysis/metrics/expression/NumberMatchTest.java @@ -19,8 +19,8 @@ package org.apache.skywalking.oap.server.core.analysis.metrics.expression; import org.junit.Test; -import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; public class NumberMatchTest { diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimerTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimerTest.java index f10f78c863..1ba232e102 100644 --- a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimerTest.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/PersistenceTimerTest.java @@ -116,8 +116,8 @@ public class PersistenceTimerTest { private final String id; @Override - public String id() { - return id; + public StorageID id() { + return new StorageID().append("ID", id); } } diff --git a/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/StorageIDTest.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/StorageIDTest.java new file mode 100644 index 0000000000..bcee774ccd --- /dev/null +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/StorageIDTest.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.oap.server.core.storage; + +import org.junit.Assert; +import org.junit.Test; + +public class StorageIDTest { + @Test + public void testRawBuild() { + StorageID id = new StorageID(); + id.append("time_bucket", 202212141438L) //2022-12-14 14:38 + .append("entity_id", "encoded-service-name"); + + Assert.assertEquals("202212141438_encoded-service-name", id.build()); + } + + @Test + public void testEqual() { + StorageID id = new StorageID(); + id.append("time_bucket", 202212141438L) //2022-12-14 14:38 + .append("entity_id", "encoded-service-name"); + + StorageID id2 = new StorageID(); + id2.append("time_bucket", 202212141438L) //2022-12-14 14:38 + .append("entity_id", "encoded-service-name"); + + Assert.assertEquals(true, id.equals(id2)); + } +} diff --git a/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/BulkConsumePool.java b/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/BulkConsumePool.java index b881d50531..9d5bb0f615 100644 --- a/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/BulkConsumePool.java +++ b/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/BulkConsumePool.java @@ -36,7 +36,7 @@ public class BulkConsumePool implements ConsumerPool { public BulkConsumePool(String name, int size, long consumeCycle) { size = EnvUtil.getInt(name + "_THREAD", size); - allConsumers = new ArrayList(size); + allConsumers = new ArrayList<>(size); for (int i = 0; i < size; i++) { MultipleChannelsConsumer multipleChannelsConsumer = new MultipleChannelsConsumer("DataCarrier." + name + ".BulkConsumePool." + i + ".Thread", consumeCycle); multipleChannelsConsumer.setDaemon(true); diff --git a/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/MultipleChannelsConsumer.java b/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/MultipleChannelsConsumer.java index db60f0d098..69e2732f20 100644 --- a/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/MultipleChannelsConsumer.java +++ b/oap-server/server-library/library-datacarrier-queue/src/main/java/org/apache/skywalking/oap/server/library/datacarrier/consumer/MultipleChannelsConsumer.java @@ -95,7 +95,7 @@ public class MultipleChannelsConsumer extends Thread { public void addNewTarget(Channels channels, IConsumer consumer) { Group group = new Group(channels, consumer); // Recreate the new list to avoid change list while the list is used in consuming. - ArrayList newList = new ArrayList(); + ArrayList newList = new ArrayList<>(); for (Group target : consumeTargets) { newList.add(target); } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBNoneStreamDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBNoneStreamDAO.java index 46edb436ab..25f698a8fe 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBNoneStreamDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBNoneStreamDAO.java @@ -47,7 +47,7 @@ public class BanyanDBNoneStreamDAO extends AbstractDAO im StreamWrite streamWrite = new StreamWrite( schema.getMetadata().getGroup(), // group name schema.getMetadata().name(), // stream-name - noneStream.id() // identity + noneStream.id().build() // identity ); // set timestamp inside `BanyanDBConverter.StreamToStorage` Convert2Storage convert2Storage = new BanyanDBConverter.StreamToStorage(schema, streamWrite); storageBuilder.entity2Storage(noneStream, convert2Storage); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java index d616ed032e..bbbb4b183f 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java @@ -101,11 +101,11 @@ public class BanyanDBUITemplateManagementDAO extends AbstractBanyanDBDAO impleme this.getClient().define(applyStatus(uiTemplate)); return TemplateChangeStatus.builder() .status(true) - .id(uiTemplate.id()) + .id(uiTemplate.id().build()) .build(); } catch (IOException ioEx) { log.error("fail to disable the template", ioEx); - return TemplateChangeStatus.builder().status(false).id(uiTemplate.id()).message("Can't disable the template") + return TemplateChangeStatus.builder().status(false).id(uiTemplate.id().build()).message("Can't disable the template") .build(); } } @@ -133,7 +133,7 @@ public class BanyanDBUITemplateManagementDAO extends AbstractBanyanDBDAO impleme } public Property applyAll(UITemplate uiTemplate) { - return Property.create(GROUP, UITemplate.INDEX_NAME, uiTemplate.id()) + return Property.create(GROUP, UITemplate.INDEX_NAME, uiTemplate.id().build()) .addTag(TagAndValue.newStringTag(UITemplate.CONFIGURATION, uiTemplate.getConfiguration())) .addTag(TagAndValue.newLongTag(UITemplate.DISABLED, uiTemplate.getDisabled())) .addTag(TagAndValue.newLongTag(UITemplate.UPDATE_TIME, uiTemplate.getUpdateTime())) @@ -147,7 +147,7 @@ public class BanyanDBUITemplateManagementDAO extends AbstractBanyanDBDAO impleme * @return new property (patch) to be applied */ public Property applyStatus(UITemplate uiTemplate) { - return Property.create(GROUP, UITemplate.INDEX_NAME, uiTemplate.id()) + return Property.create(GROUP, UITemplate.INDEX_NAME, uiTemplate.id().build()) .addTag(TagAndValue.newLongTag(UITemplate.DISABLED, uiTemplate.getDisabled())) .addTag(TagAndValue.newLongTag(UITemplate.UPDATE_TIME, uiTemplate.getUpdateTime())) .build(); @@ -160,7 +160,7 @@ public class BanyanDBUITemplateManagementDAO extends AbstractBanyanDBDAO impleme * @return new property (patch) to be applied */ public Property applyConfiguration(UITemplate uiTemplate) { - return Property.create(GROUP, UITemplate.INDEX_NAME, uiTemplate.id()) + return Property.create(GROUP, UITemplate.INDEX_NAME, uiTemplate.id().build()) .addTag(TagAndValue.newStringTag(UITemplate.CONFIGURATION, uiTemplate.getConfiguration())) .addTag(TagAndValue.newLongTag(UITemplate.UPDATE_TIME, uiTemplate.getUpdateTime())) .build(); diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java index dbef1af363..758098eb63 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetricsDAO.java @@ -62,7 +62,7 @@ public class BanyanDBMetricsDAO extends AbstractBanyanDBDAO implements IMetricsD @Override protected void apply(MeasureQuery query) { for (final Metrics missCachedMetric : metrics) { - query.or(id(missCachedMetric.id())); + query.or(id(missCachedMetric.id().build())); } } }); @@ -89,7 +89,7 @@ public class BanyanDBMetricsDAO extends AbstractBanyanDBDAO implements IMetricsD TimeBucket.getTimestamp(metrics.getTimeBucket(), model.getDownsampling())); // timestamp final BanyanDBConverter.MeasureToStorage toStorage = new BanyanDBConverter.MeasureToStorage(schema, measureWrite); storageBuilder.entity2Storage(metrics, toStorage); - toStorage.acceptID(metrics.id()); + toStorage.acceptID(metrics.id().build()); return new BanyanDBMeasureInsertRequest(toStorage.obtain(), callback); } @@ -105,7 +105,7 @@ public class BanyanDBMetricsDAO extends AbstractBanyanDBDAO implements IMetricsD TimeBucket.getTimestamp(metrics.getTimeBucket(), model.getDownsampling())); // timestamp final BanyanDBConverter.MeasureToStorage toStorage = new BanyanDBConverter.MeasureToStorage(schema, measureWrite); storageBuilder.entity2Storage(metrics, toStorage); - toStorage.acceptID(metrics.id()); + toStorage.acceptID(metrics.id().build()); return new BanyanDBMeasureUpdateRequest(toStorage.obtain()); } } diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java index ed04f7e1bf..74e2d48cc9 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java @@ -44,7 +44,7 @@ public class BanyanDBRecordDAO implements IRecordDAO { StreamWrite streamWrite = new StreamWrite( schema.getMetadata().getGroup(), // group name model.getName(), // index-name - record.id() // identity + record.id().build() // identity ); // set timestamp inside `BanyanDBConverter.StreamToStorage` Convert2Storage convert2Storage = new BanyanDBConverter.StreamToStorage(schema, streamWrite); storageBuilder.entity2Storage(record, convert2Storage); diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ManagementEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ManagementEsDAO.java index 9693c90c9b..f0d0a10387 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ManagementEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/ManagementEsDAO.java @@ -38,7 +38,7 @@ public class ManagementEsDAO extends EsDAO implements IManagementDAO { @Override public void insert(Model model, ManagementData managementData) throws IOException { String tableName = IndexController.INSTANCE.getTableName(model); - String docId = IndexController.INSTANCE.generateDocId(model, managementData.id()); + String docId = IndexController.INSTANCE.generateDocId(model, managementData.id().build()); final boolean exist = getClient().existDoc(tableName, docId); if (exist) { return; diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/MetricsEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/MetricsEsDAO.java index 12319dae1a..75027a6fd5 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/MetricsEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/MetricsEsDAO.java @@ -65,7 +65,7 @@ public class MetricsEsDAO extends EsDAO implements IMetricsDAO { Map> indexIdsGroup = new HashMap<>(); groupIndices.forEach((tableName, metricList) -> { List ids = metricList.stream() - .map(item -> IndexController.INSTANCE.generateDocId(model, item.id())) + .map(item -> IndexController.INSTANCE.generateDocId(model, item.id().build())) .collect(Collectors.toList()); indexIdsGroup.put(tableName, ids); }); @@ -85,7 +85,7 @@ public class MetricsEsDAO extends EsDAO implements IMetricsDAO { }); groupIndices.forEach((tableName, metricList) -> { List ids = metricList.stream() - .map(item -> IndexController.INSTANCE.generateDocId(model, item.id())) + .map(item -> IndexController.INSTANCE.generateDocId(model, item.id().build())) .collect(Collectors.toList()); final SearchResponse response = getClient().searchIDs(tableName, ids); response.getHits().getHits().forEach(hit -> { @@ -103,7 +103,7 @@ public class MetricsEsDAO extends EsDAO implements IMetricsDAO { storageBuilder.entity2Storage(metrics, toStorage); Map builder = IndexController.INSTANCE.appendTableColumn(model, toStorage.obtain()); String modelName = TimeSeriesUtils.writeIndexName(model, metrics.getTimeBucket()); - String id = IndexController.INSTANCE.generateDocId(model, metrics.id()); + String id = IndexController.INSTANCE.generateDocId(model, metrics.id().build()); return new MetricIndexRequestWrapper(getClient().prepareInsert(modelName, id, builder), callback); } @@ -114,7 +114,7 @@ public class MetricsEsDAO extends EsDAO implements IMetricsDAO { Map builder = IndexController.INSTANCE.appendTableColumn(model, toStorage.obtain()); String modelName = TimeSeriesUtils.writeIndexName(model, metrics.getTimeBucket()); - String id = IndexController.INSTANCE.generateDocId(model, metrics.id()); + String id = IndexController.INSTANCE.generateDocId(model, metrics.id().build()); return new MetricIndexUpdateWrapper(getClient().prepareUpdate(modelName, id, builder), callback); } diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/NoneStreamEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/NoneStreamEsDAO.java index 811923cbbb..7ec21a0ccb 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/NoneStreamEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/NoneStreamEsDAO.java @@ -45,7 +45,7 @@ public class NoneStreamEsDAO extends EsDAO implements INoneStreamDAO { Map builder = IndexController.INSTANCE.appendTableColumn(model, toStorage.obtain()); String modelName = TimeSeriesUtils.writeIndexName(model, noneStream.getTimeBucket()); - String id = IndexController.INSTANCE.generateDocId(model, noneStream.id()); + String id = IndexController.INSTANCE.generateDocId(model, noneStream.id().build()); getClient().forceInsert(modelName, id, builder); } } diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RecordEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RecordEsDAO.java index 264007a024..21ffbb675e 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RecordEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/base/RecordEsDAO.java @@ -42,7 +42,7 @@ public class RecordEsDAO extends EsDAO implements IRecordDAO { storageBuilder.entity2Storage(record, toStorage); Map builder = IndexController.INSTANCE.appendTableColumn(model, toStorage.obtain()); String modelName = TimeSeriesUtils.writeIndexName(model, record.getTimeBucket()); - String id = IndexController.INSTANCE.generateDocId(model, record.id()); + String id = IndexController.INSTANCE.generateDocId(model, record.id().build()); return getClient().prepareInsert(modelName, id, builder); } } diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java index cbce35e41a..a0462d45fb 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java @@ -228,7 +228,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { new EndpointTraffic.Builder().storage2Entity(new ElasticSearchConverter.ToEntity(EndpointTraffic.INDEX_NAME, sourceAsMap)); Endpoint endpoint = new Endpoint(); - endpoint.setId(endpointTraffic.id()); + endpoint.setId(endpointTraffic.id().build()); endpoint.setName(endpointTraffic.getName()); endpoints.add(endpoint); } @@ -388,7 +388,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { new InstanceTraffic.Builder().storage2Entity(new ElasticSearchConverter.ToEntity(InstanceTraffic.INDEX_NAME, sourceAsMap)); ServiceInstance serviceInstance = new ServiceInstance(); - serviceInstance.setId(instanceTraffic.id()); + serviceInstance.setId(instanceTraffic.id().build()); serviceInstance.setName(instanceTraffic.getName()); serviceInstance.setInstanceUUID(serviceInstance.getId()); @@ -420,7 +420,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO { new ProcessTraffic.Builder().storage2Entity(new ElasticSearchConverter.ToEntity(ProcessTraffic.INDEX_NAME, sourceAsMap)); Process process = new Process(); - process.setId(processTraffic.id()); + process.setId(processTraffic.id().build()); process.setName(processTraffic.getName()); final String serviceId = processTraffic.getServiceId(); process.setServiceId(serviceId); diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/UITemplateManagementEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/UITemplateManagementEsDAO.java index 14146e8df5..a0719597b1 100644 --- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/UITemplateManagementEsDAO.java +++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/UITemplateManagementEsDAO.java @@ -105,7 +105,7 @@ public class UITemplateManagementEsDAO extends EsDAO implements UITemplateManage final UITemplate.Builder builder = new UITemplate.Builder(); final UITemplate uiTemplate = setting.toEntity(); - final boolean exist = getClient().existDoc(UITemplate.INDEX_NAME, uiTemplate.id()); + final boolean exist = getClient().existDoc(UITemplate.INDEX_NAME, uiTemplate.id().build()); if (exist) { return TemplateChangeStatus.builder().status(false).id(setting.getId()).message("Template exists") .build(); @@ -113,7 +113,7 @@ public class UITemplateManagementEsDAO extends EsDAO implements UITemplateManage final ElasticSearchConverter.ToStorage toStorage = new ElasticSearchConverter.ToStorage(UITemplate.INDEX_NAME); builder.entity2Storage(uiTemplate, toStorage); - getClient().forceInsert(UITemplate.INDEX_NAME, uiTemplate.id(), toStorage.obtain()); + getClient().forceInsert(UITemplate.INDEX_NAME, uiTemplate.id().build(), toStorage.obtain()); return TemplateChangeStatus.builder().status(true).id(uiTemplate.getTemplateId()).build(); } catch (Exception e) { log.error(e.getMessage(), e); @@ -128,7 +128,7 @@ public class UITemplateManagementEsDAO extends EsDAO implements UITemplateManage final UITemplate.Builder builder = new UITemplate.Builder(); final UITemplate uiTemplate = setting.toEntity(); - final boolean exist = getClient().existDoc(UITemplate.INDEX_NAME, uiTemplate.id()); + final boolean exist = getClient().existDoc(UITemplate.INDEX_NAME, uiTemplate.id().build()); if (!exist) { return TemplateChangeStatus.builder().status(false).id(setting.getId()) .message("Can't find the template").build(); @@ -136,7 +136,7 @@ public class UITemplateManagementEsDAO extends EsDAO implements UITemplateManage final ElasticSearchConverter.ToStorage toStorage = new ElasticSearchConverter.ToStorage(UITemplate.INDEX_NAME); builder.entity2Storage(uiTemplate, toStorage); - getClient().forceUpdate(UITemplate.INDEX_NAME, uiTemplate.id(), toStorage.obtain()); + getClient().forceUpdate(UITemplate.INDEX_NAME, uiTemplate.id().build(), toStorage.obtain()); return TemplateChangeStatus.builder().status(true).id(setting.getId()).build(); } catch (Exception e) { log.error(e.getMessage(), e); @@ -156,7 +156,7 @@ public class UITemplateManagementEsDAO extends EsDAO implements UITemplateManage final ElasticSearchConverter.ToStorage toStorage = new ElasticSearchConverter.ToStorage(UITemplate.INDEX_NAME); builder.entity2Storage(uiTemplate, toStorage); - getClient().forceUpdate(UITemplate.INDEX_NAME, uiTemplate.id(), toStorage.obtain()); + getClient().forceUpdate(UITemplate.INDEX_NAME, uiTemplate.id().build(), toStorage.obtain()); return TemplateChangeStatus.builder().status(true).id(id).build(); } else { return TemplateChangeStatus.builder().status(false).id(id).message("Can't find the template") diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCManagementDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCManagementDAO.java index 2aea8f6ef3..1a335a6d61 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCManagementDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCManagementDAO.java @@ -42,7 +42,7 @@ public class JDBCManagementDAO extends JDBCSQLExecutor implements IManagementDAO @Override public void insert(Model model, ManagementData storageData) throws IOException { try (Connection connection = jdbcClient.getConnection()) { - final StorageData data = getByID(jdbcClient, model.getName(), storageData.id(), storageBuilder); + final StorageData data = getByID(jdbcClient, model.getName(), storageData.id().build(), storageBuilder); if (data != null) { return; } diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetricsDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetricsDAO.java index 5170362df7..082bf2d913 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetricsDAO.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCMetricsDAO.java @@ -40,7 +40,7 @@ public class JDBCMetricsDAO extends JDBCSQLExecutor implements IMetricsDAO { @Override public List multiGet(Model model, List metrics) throws IOException { - String[] ids = metrics.stream().map(Metrics::id).collect(Collectors.toList()).toArray(new String[] {}); + String[] ids = metrics.stream().map(m -> m.id().build()).collect(Collectors.toList()).toArray(new String[] {}); List storageDataList = getByIDs(jdbcClient, model.getName(), ids, storageBuilder); List result = new ArrayList<>(storageDataList.size()); for (StorageData storageData : storageDataList) { diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSQLExecutor.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSQLExecutor.java index c15f4768ae..6db79f18b2 100644 --- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSQLExecutor.java +++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/common/dao/JDBCSQLExecutor.java @@ -154,7 +154,7 @@ public class JDBCSQLExecutor { SQLBuilder sqlBuilder = new SQLBuilder("INSERT INTO " + tableName + " VALUES"); List param = new ArrayList<>(); sqlBuilder.append("(?,"); - param.add(metrics.id()); + param.add(metrics.id().build()); for (int i = 0; i < columns.size(); i++) { ModelColumn column = columns.get(i); sqlBuilder.append("?"); @@ -185,7 +185,7 @@ public class JDBCSQLExecutor { SQLBuilder sqlBuilder = new SQLBuilder("INSERT INTO " + tableName + " VALUES"); List param = new ArrayList<>(); sqlBuilder.append("(?,"); - param.add(metrics.id()); + param.add(metrics.id().build()); int position = 0; List valueList = new ArrayList(); for (int i = 0; i < columns.size(); i++) { @@ -257,7 +257,7 @@ public class JDBCSQLExecutor { } sqlBuilder.replace(sqlBuilder.length() - 1, sqlBuilder.length(), ""); sqlBuilder.append(" WHERE id = ?"); - param.add(metrics.id()); + param.add(metrics.id().build()); return new SQLExecutor(sqlBuilder.toString(), param, callback); } diff --git a/oap-server/server-storage-plugin/storage-shardingsphere-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/shardingsphere/ServiceCpmMetrics.java b/oap-server/server-storage-plugin/storage-shardingsphere-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/shardingsphere/ServiceCpmMetrics.java index 2982b5186b..96277e5452 100644 --- a/oap-server/server-storage-plugin/storage-shardingsphere-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/shardingsphere/ServiceCpmMetrics.java +++ b/oap-server/server-storage-plugin/storage-shardingsphere-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/shardingsphere/ServiceCpmMetrics.java @@ -21,13 +21,13 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.shardingsphere; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.analysis.Stream; import org.apache.skywalking.oap.server.core.analysis.metrics.CPMMetrics; import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics; import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor; import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData; import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine; +import org.apache.skywalking.oap.server.core.storage.StorageID; import org.apache.skywalking.oap.server.core.storage.annotation.Column; @Stream( @@ -51,8 +51,10 @@ public class ServiceCpmMetrics extends CPMMetrics { private String entityId; @Override - protected String id0() { - return getTimeBucket() + Const.ID_CONNECTOR + entityId; + protected StorageID id0() { + return new StorageID() + .append(TIME_BUCKET, getTimeBucket()) + .append(ENTITY_ID, entityId); } @Override