This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch id0-refactor in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 17d9dc4fe69a0d921e562ea6abbeae498e5998d1 Author: Wu Sheng <[email protected]> AuthorDate: Wed Dec 14 18:06:57 2022 +0800 Refactor kernel id0()/id() methods to return StorageID object, rather than built string. --- .../analyzer/dsl/registry/ProcessRegistry.java | 2 +- .../server/exporter/provider/grpc/MockMetrics.java | 5 +- .../main/resources/code-templates/metrics/id.ftl | 7 +- .../core/alarm/provider/RunningRuleTest.java | 3 +- .../oap/server/core/alarm/AlarmRecord.java | 11 +- .../analysis/data/LimitedSizeBufferedData.java | 5 +- .../core/analysis/data/MergableBufferedData.java | 5 +- .../manual/cache/TopNCacheReadCommand.java | 5 +- .../manual/cache/TopNCacheWriteCommand.java | 5 +- .../manual/database/TopNDatabaseStatement.java | 5 +- .../analysis/manual/endpoint/EndpointTraffic.java | 9 +- .../analysis/manual/instance/InstanceTraffic.java | 6 +- .../analysis/manual/log/AbstractLogRecord.java | 3 +- .../server/core/analysis/manual/log/LogRecord.java | 5 +- .../manual/networkalias/NetworkAddressAlias.java | 5 +- .../analysis/manual/process/ProcessTraffic.java | 12 +- .../manual/process/ServiceLabelRecord.java | 17 +-- .../EndpointRelationServerSideMetrics.java | 10 +- .../ServiceInstanceRelationClientSideMetrics.java | 7 +- .../ServiceInstanceRelationServerSideMetrics.java | 8 +- .../process/ProcessRelationClientSideMetrics.java | 8 +- .../process/ProcessRelationServerSideMetrics.java | 7 +- .../service/ServiceRelationClientSideMetrics.java | 7 +- .../service/ServiceRelationServerSideMetrics.java | 8 +- .../manual/searchtag/TagAutocompleteData.java | 9 +- .../analysis/manual/segment/SegmentRecord.java | 5 +- .../analysis/manual/service/ServiceTraffic.java | 10 +- .../manual/spanattach/SpanAttachedEventRecord.java | 10 +- .../manual/trace/SampledSlowTraceRecord.java | 9 +- .../manual/trace/SampledStatus4xxTraceRecord.java | 9 +- .../manual/trace/SampledStatus5xxTraceRecord.java | 9 +- .../analysis/meter/function/HistogramFunction.java | 8 +- .../meter/function/PercentileFunction.java | 8 +- .../analysis/meter/function/avg/AvgFunction.java | 8 +- .../meter/function/avg/AvgHistogramFunction.java | 8 +- .../avg/AvgHistogramPercentileFunction.java | 8 +- .../meter/function/avg/AvgLabeledFunction.java | 8 +- .../meter/function/latest/LatestFunction.java | 8 +- .../analysis/meter/function/sum/SumFunction.java | 8 +- .../sum/SumHistogramPercentileFunction.java | 19 +-- .../function/sumpermin/SumPerMinFunction.java | 11 +- .../sumpermin/SumPerMinLabeledFunction.java | 11 +- .../oap/server/core/analysis/metrics/Event.java | 16 ++- .../oap/server/core/analysis/metrics/Metrics.java | 7 +- .../manual/errorlog/BrowserErrorLogRecord.java | 5 +- .../core/management/ui/template/UITemplate.java | 5 +- .../profiling/ebpf/EBPFProfilingQueryService.java | 27 ++-- .../ebpf/storage/EBPFProfilingDataRecord.java | 16 ++- .../ebpf/storage/EBPFProfilingScheduleRecord.java | 13 +- .../ebpf/storage/EBPFProfilingTaskRecord.java | 24 ++-- .../core/profiling/trace/ProfileTaskLogRecord.java | 10 +- .../trace/ProfileTaskMutationService.java | 2 +- .../core/profiling/trace/ProfileTaskRecord.java | 5 +- .../trace/ProfileThreadSnapshotRecord.java | 9 +- .../server/core/query/ProcessTopologyBuilder.java | 24 ++-- .../oap/server/core/storage/StorageData.java | 2 +- .../oap/server/core/storage/StorageID.java | 159 +++++++++++++++++++++ .../core/zipkin/ZipkinServiceRelationTraffic.java | 8 +- .../core/zipkin/ZipkinServiceSpanTraffic.java | 7 +- .../server/core/zipkin/ZipkinServiceTraffic.java | 5 +- .../oap/server/core/zipkin/ZipkinSpanRecord.java | 5 +- .../analysis/data/LimitedSizeBufferedDataTest.java | 5 +- .../core/analysis/metrics/ApdexMetricsTest.java | 3 +- .../core/analysis/metrics/CountMetricsTest.java | 3 +- .../core/analysis/metrics/HeatMapMetricsTest.java | 3 +- .../core/analysis/metrics/LongAvgMetricsTest.java | 3 +- .../core/analysis/metrics/MaxLongMetricsTest.java | 3 +- .../server/core/analysis/metrics/MetricsTest.java | 3 +- .../core/analysis/metrics/MinLongMetricsTest.java | 3 +- .../core/analysis/metrics/PercentMetricsTest.java | 3 +- .../analysis/metrics/PercentileMetricsTest.java | 3 +- .../metrics/expression/NumberMatchTest.java | 2 +- .../server/core/storage/PersistenceTimerTest.java | 4 +- .../oap/server/core/storage/StorageIDTest.java} | 20 +-- 74 files changed, 499 insertions(+), 239 deletions(-) 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/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..6928897c3c 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())); +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}); </#if> </#list> -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..048076cb6a 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; @@ -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<STORAGE_DATA extends ComparableStorageData & StorageData> implements BufferedData<STORAGE_DATA> { - private final HashMap<String, LinkedList<STORAGE_DATA>> data; + private final HashMap<StorageID, LinkedList<STORAGE_DATA>> data; private final int limitedSize; public LimitedSizeBufferedData(int limitedSize) { @@ -40,7 +41,7 @@ public class LimitedSizeBufferedData<STORAGE_DATA extends ComparableStorageData @Override public void accept(final STORAGE_DATA data) { - final String id = data.id(); + final StorageID id = data.id(); LinkedList<STORAGE_DATA> 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<METRICS extends Metrics> implements BufferedData<METRICS> { - private Map<String, METRICS> buffer; + private Map<StorageID, METRICS> buffer; public MergableBufferedData() { buffer = new HashMap<>(); @@ -46,7 +47,7 @@ public class MergableBufferedData<METRICS extends Metrics> 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..d64a9535c8 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 @@ -23,7 +23,6 @@ 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.IDManager; 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; @@ -31,6 +30,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 +65,12 @@ 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() + .append(SERVICE_ID, getServiceId()) + .append(NAME, 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..8c4d405964 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,9 @@ public class InstanceTraffic extends Metrics { } @Override - protected String id0() { - return IDManager.ServiceInstanceID.buildId(serviceId, name); + protected StorageID id0() { + return new StorageID() + .appendMutant(null, IDManager.ServiceInstanceID.buildId(serviceId, name)); } public static class Builder implements StorageBuilder<InstanceTraffic> { 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<String> 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<LogRecord> { 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..ebe04c5f39 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,8 @@ public class NetworkAddressAlias extends Metrics { } @Override - protected String id0() { - return IDManager.NetworkAddressAliasDefine.buildId(address); + protected StorageID id0() { + return new StorageID().appendMutant(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..e7cb4c6d77 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,11 @@ 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(null, processId); } public static class Builder implements StorageBuilder<ProcessTraffic> { 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..80b3ec35b6 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(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<String> tags; @Override - public String id() { - return segmentId; + public StorageID id() { + return new StorageID().append(SEGMENT_ID, segmentId); } public static class Builder implements StorageBuilder<SegmentRecord> { 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..76b58665f5 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; @@ -38,7 +39,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 static org.apache.logging.log4j.util.Base64Util.encode; import static org.apache.skywalking.oap.server.core.Const.DOUBLE_COLONS_SPLIT; @Stream(name = ServiceTraffic.INDEX_NAME, scopeId = DefaultScopeDefine.SERVICE, @@ -98,12 +98,8 @@ public class ServiceTraffic extends Metrics { * @return Base64 encode(serviceName) + "." + layer.value */ @Override - protected String id0() { - if (layer != null) { - return encode(name) + Const.POINT + layer.value(); - } else { - return encode(name) + Const.POINT + Layer.UNDEFINED.value(); - } + protected StorageID id0() { + return new StorageID().appendMutant(SERVICE_ID, getServiceId()); } @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<SpanAttachedEventRecord> { 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<SampledSlowTraceRecord> { 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<SampledStatus4xxTraceRecord> { 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<SampledStatus5xxTraceRecord> { 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<Long> } @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<Lo } @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/sum/SumFunction.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java index be861d371f..43c3012ab1 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/function/sum/SumFunction.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; @@ -126,8 +126,10 @@ public abstract class SumFunction extends Meter implements AcceptableValue<Long> } @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<Long>, 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<DataTable>, 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/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<UITemplate> { 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<Metrics> processes = getProcessMetricsDAO().multiGet(processModel, processMetrics); final Map<String, Process> 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..a1eb69b56c 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,15 @@ 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( + null, + Hashing.sha256().newHasher() + .putString(scheduleId, Charsets.UTF_8) + .putString(stackIdList, Charsets.UTF_8) + .putLong(uploadTime) + .hash().toString() + ); } public static class Builder implements StorageBuilder<EBPFProfilingDataRecord> { 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..e82ef6a998 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,14 @@ 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( + null, + Hashing.sha256().newHasher() + .putString(logicalId, Charsets.UTF_8) + .putLong(createTime) + .hash().toString() + ); } /** @@ -95,10 +99,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<EBPFProfilingTaskRecord> { 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<ProfileTaskLogRecord> { 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<ProfileThreadSnapshotRecord> { 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..ae4dda941a --- /dev/null +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageID.java @@ -0,0 +1,159 @@ +/* + * 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 java.util.ArrayList; +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.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<Fragment> 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; + + 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(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(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(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=" + 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=" + 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; + String[] idParts = new String[fragments.size()]; + for (int i = 0; i < fragments.size(); i++) { + idParts[i] = fragments.get(i).toString(); + } + return StringUtil.join('_', idParts); + } + + /** + * @return a read-only list to avoid unexpected change for metric ID. + */ + public List<Fragment> read() { + sealed = true; + return Collections.unmodifiableList(fragments); + } + + @RequiredArgsConstructor + @Getter + @EqualsAndHashCode(of = { + "name", + "value" + }) + public class Fragment { + /** + * The column name of the value, or the original column name of the mutate value. + * This could be null if {@link #mutate} is true and no relative column, such as the original value is not in + * the persistence. + */ + 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<String> 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<ZipkinSpanRecord> { 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/main/java/org/apache/skywalking/oap/server/core/storage/StorageData.java b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/StorageIDTest.java similarity index 70% copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageData.java copy to oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/StorageIDTest.java index f8224835d1..e66720c125 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageData.java +++ b/oap-server/server-core/src/test/java/org/apache/skywalking/oap/server/core/storage/StorageIDTest.java @@ -18,12 +18,16 @@ package org.apache.skywalking.oap.server.core.storage; -/** - * Any persistent entity should be an implementation of this interface. - */ -public interface StorageData { - /** - * @return the unique id used in any storage option. - */ - String id(); +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()); + } }
