You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2019/02/26 05:43:21 UTC
[incubator-skywalking] branch master updated: Improve OAP
extendibility (#2288)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new fb62025 Improve OAP extendibility (#2288)
fb62025 is described below
commit fb62025da832ba04a83b45a5437fe9728ecfe8e3
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Feb 26 13:43:14 2019 +0800
Improve OAP extendibility (#2288)
* Make scope meta configurable.
* Fix test cases in ci.
* Change step 1
* Refactor step 2
* Other compile issue done. Prepare the generator changes.
* Revert some wrong changes to Istio receiver.
* Step 3, make compile pass.
* Try to make CI passed.
* Add a check.
* Fix generated code style
* Provide new and extendable dispatcher generator tool
* Fix startup.
* Can't guarantee the dispatchers are always existing. Put explicit comments at there to avoid confusion, since this is different with old version.
* Fix a H2 query for endpoint search.
* Fix a wrong mysql alarm query.
* Provide new document and `generate-tool-grammer` module.
* Add missing last section of document.
* Fix typo
* Relocate the @ScopeDeclaration annotation, make it more sense. Also remove the useless @SourceType annotation. And adjust document for these changes
* ScopeDeclaration can be used once for each class only, now.
---
docs/en/guides/How-to-build.md | 2 +-
docs/en/guides/README.md | 7 +-
docs/en/guides/source-extension.md | 63 ++++++++
docs/others/cn/guides/How-to-build.md | 2 +-
.../pom.xml | 26 +---
.../apache/skywalking/oal/tool/grammar/OALLexer.g4 | 0
.../skywalking/oal/tool/grammar/OALParser.g4 | 0
oap-server/generate-tool/pom.xml | 23 +--
.../java/org/apache/skywalking/oal/tool/Main.java | 17 +++
.../skywalking/oal/tool/meta/MetaReader.java} | 18 +--
.../skywalking/oal/tool/meta/MetaSettings.java} | 14 +-
.../skywalking/oal/tool/meta/ScopeMeta.java} | 17 +--
.../oal/tool/output/AllDispatcherContext.java} | 15 +-
.../oal/tool/output/DispatcherContext.java | 19 +--
.../skywalking/oal/tool/output/FileGenerator.java | 160 +++------------------
.../skywalking/oal/tool/parser/AnalysisResult.java | 2 +
.../skywalking/oal/tool/parser/OALListener.java | 2 +
.../skywalking/oal/tool/parser/SourceColumn.java | 52 +++++++
.../oal/tool/parser/SourceColumnsFactory.java | 91 ++----------
.../DatabaseAccessDispatcherTemplate.ftl | 66 ---------
...spatcherTemplate.ftl => DispatcherTemplate.ftl} | 16 +--
.../code-templates/EndpointDispatcherTemplate.ftl | 67 ---------
.../EndpointRelationDispatcherTemplate.ftl | 66 ---------
.../code-templates/IndicatorImplementor.ftl | 5 +-
.../code-templates/ServiceDispatcherTemplate.ftl | 66 ---------
.../ServiceInstanceDispatcherTemplate.ftl | 66 ---------
.../ServiceInstanceJVMCPUDispatcherTemplate.ftl | 66 ---------
.../ServiceInstanceJVMGCDispatcherTemplate.ftl | 66 ---------
.../ServiceInstanceJVMMemoryDispatcherTemplate.ftl | 66 ---------
...viceInstanceJVMMemoryPoolDispatcherTemplate.ftl | 66 ---------
.../ServiceInstanceRelationDispatcherTemplate.ftl | 66 ---------
.../ServiceRelationDispatcherTemplate.ftl | 66 ---------
.../skywalking/oal/tool/meta/MetaReaderTest.java | 43 ++++++
.../oal/tool/meta/MockSourceColumnsFactory.java} | 9 +-
.../oal/tool/output/FileGeneratorTest.java | 12 +-
.../oal/tool/parser/DeepAnalysisTest.java | 7 +-
.../oal/tool/parser/ScriptParserTest.java | 18 ++-
.../IndicatorImplementorExpected.java | 5 +-
.../src/test/resources/scope-meta.yml | 136 ++++++++++++++++++
.../src/main/resources/generator-scope-meta.yml | 136 ++++++++++++++++++
oap-server/pom.xml | 1 +
.../server/core/alarm/provider/NotifyHandler.java | 10 +-
.../server/core/alarm/provider/RunningRule.java | 7 +-
.../alarm/provider/AlarmMessageFormatterTest.java | 12 +-
.../core/alarm/provider/RunningRuleTest.java | 26 ++--
.../core/alarm/provider/WebhookCallbackTest.java | 37 ++---
.../oap/server/core/CoreModuleProvider.java | 10 +-
.../oap/server/core/alarm/AlarmEntrance.java | 16 +--
.../oap/server/core/alarm/AlarmMessage.java | 3 +-
.../oap/server/core/alarm/AlarmMeta.java | 10 +-
.../oap/server/core/alarm/AlarmRecord.java | 7 +-
.../core/alarm/AlarmStandardPersistence.java | 2 +-
.../oap/server/core/alarm/EndpointMetaInAlarm.java | 6 +-
.../oap/server/core/alarm/MetaInAlarm.java | 5 +-
.../core/alarm/ServiceInstanceMetaInAlarm.java | 6 +-
.../oap/server/core/alarm/ServiceMetaInAlarm.java | 6 +-
.../server/core/analysis/DispatcherManager.java | 35 ++---
.../manual/database/TopNDatabaseStatement.java | 5 +-
.../EndpointRelationServerSideIndicator.java | 4 +-
.../analysis/manual/segment/SegmentRecord.java | 4 +-
.../ServiceRelationClientSideIndicator.java | 4 +-
.../ServiceRelationServerSideIndicator.java | 4 +-
.../oap/server/core/annotation/AnnotationScan.java | 4 +-
.../oap/server/core/query/AlarmQueryService.java | 5 +-
.../oap/server/core/query/entity/AlarmMessage.java | 2 +-
.../oap/server/core/query/entity/Scope.java | 57 ++++++++
.../server/core/register/EndpointInventory.java | 7 +-
.../core/register/NetworkAddressInventory.java | 7 +-
.../core/register/ServiceInstanceInventory.java | 7 +-
.../oap/server/core/register/ServiceInventory.java | 7 +-
.../core/register/worker/InventoryProcess.java | 20 +--
.../register/worker/RegisterPersistentWorker.java | 12 +-
.../skywalking/oap/server/core/source/All.java | 13 +-
.../oap/server/core/source/DatabaseAccess.java | 10 +-
.../server/core/source/DatabaseSlowStatement.java | 9 +-
.../oap/server/core/source/DefaultScopeDefine.java | 100 +++++++++++++
.../oap/server/core/source/Endpoint.java | 9 +-
.../oap/server/core/source/EndpointRelation.java | 7 +-
.../skywalking/oap/server/core/source/Scope.java | 35 -----
.../source/{Source.java => ScopeDeclaration.java} | 17 +--
.../skywalking/oap/server/core/source/Segment.java | 9 +-
.../skywalking/oap/server/core/source/Service.java | 9 +-
.../oap/server/core/source/ServiceInstance.java | 9 +-
.../server/core/source/ServiceInstanceJVMCPU.java | 9 +-
.../server/core/source/ServiceInstanceJVMGC.java | 9 +-
.../core/source/ServiceInstanceJVMMemory.java | 7 +-
.../core/source/ServiceInstanceJVMMemoryPool.java | 7 +-
.../core/source/ServiceInstanceRelation.java | 7 +-
.../oap/server/core/source/ServiceRelation.java | 7 +-
.../skywalking/oap/server/core/source/Source.java | 2 +-
.../oap/server/core/storage/IRegisterLockDAO.java | 5 +-
.../annotation/StorageAnnotationListener.java | 21 ++-
.../core/storage/annotation/StorageEntity.java | 6 +-
.../annotation/StorageEntityAnnotationUtils.java | 5 +-
.../oap/server/core/storage/model/Model.java | 10 +-
.../server/core/storage/query/IAlarmQueryDAO.java | 5 +-
.../oap/query/graphql/resolver/AlarmQuery.java | 5 +-
.../elasticsearch/lock/RegisterLockDAOImpl.java | 5 +-
.../elasticsearch/lock/RegisterLockInstaller.java | 5 +-
.../elasticsearch/query/AlarmQueryEsDAO.java | 11 +-
.../plugin/jdbc/h2/dao/H2AlarmQueryDAO.java | 8 +-
.../plugin/jdbc/h2/dao/H2MetadataQueryDAO.java | 2 +-
.../plugin/jdbc/h2/dao/H2RegisterLockDAO.java | 9 +-
.../jdbc/h2/dao/H2RegisterLockInstaller.java | 6 +-
.../plugin/jdbc/mysql/MySQLAlarmQueryDAO.java | 11 +-
.../plugin/jdbc/mysql/MySQLTableInstaller.java | 20 +--
.../PreventRedistributionMySQLDriverTest.java | 2 +-
107 files changed, 1041 insertions(+), 1362 deletions(-)
diff --git a/docs/en/guides/How-to-build.md b/docs/en/guides/How-to-build.md
index 27f8612..80c8ccb 100644
--- a/docs/en/guides/How-to-build.md
+++ b/docs/en/guides/How-to-build.md
@@ -30,7 +30,7 @@ For each official Apache release, there is a complete and independent source cod
* `grpc-java` and `java` folders in **apm-protocol/apm-network/target/generated-sources/protobuf**
* `grpc-java` and `java` folders in **oap-server/server-core/target/generated-sources/protobuf**
* `grpc-java` and `java` folders in **oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/target/generated-sources/protobuf**
- * `antlr4` folder in **oap-server/generate-tool/target/generated-sources**
+ * `antlr4` folder in **oap-server/generate-tool-grammar/target/generated-sources**
* `oal` folder in **oap-server/generated-analysis/target/generated-sources**
## Setup your Eclipse IDE
diff --git a/docs/en/guides/README.md b/docs/en/guides/README.md
index af3c192..7d406e8 100644
--- a/docs/en/guides/README.md
+++ b/docs/en/guides/README.md
@@ -27,7 +27,7 @@ All the following channels are open to the community, you could choose the way y
As a develop, first step, read [Compiling Guide](How-to-build.md). It teaches developer how to build the project in local.
### Project Extensions
-SkyWalking project supports many ways to extends existing features. If you are interesting in these ways,
+SkyWalking project supports many ways to extend existing features. If you are interesting in these ways,
read the following guides.
- [Java agent plugin development guide](Java-Plugin-Development-Guide.md).
@@ -37,6 +37,11 @@ and private plugin developer should read this.
- [Storage extension development guide](storage-extention.md). Help potential contributors to build a new
storage implementor besides the official.
- [Customize analysis by oal script](write-oal.md). Guide you to use oal script to make your own metric available.
+- [Source and scope extension for new metric](source-extension.md). If you want to analysis a new metric, which SkyWalking
+haven't provide. You need to
+add a new receiver rather than choosing [existed receiver](../setup/backend/backend-receivers.md).
+At that moment,
+you most likely need to add a new source and scope. This document will teach you how to do.
- [Backend Inventory entity extension](inventory-extension.md). If you want to extend SkyWalking inventory entities, and
want to push upstream back to our Apache OSS repo, please read these principles.
diff --git a/docs/en/guides/source-extension.md b/docs/en/guides/source-extension.md
new file mode 100644
index 0000000..8338b5e
--- /dev/null
+++ b/docs/en/guides/source-extension.md
@@ -0,0 +1,63 @@
+# Source and Scope extension for new metric
+From [OAL scope introduction](../concepts-and-designs/oal.md#scope), you should already have understood what the scope is.
+At here, as you want to do more extension, you need understand deeper, which is the **Source**.
+
+**Source** and **Scope** are binding concepts. **Scope** declare the id(int) and name, **Source** declare the attributes.
+Please follow these steps to create a new Source and Scope.
+
+1. In the OAP core module, it provide **SourceReceiver** internal service.
+```java
+public interface SourceReceiver extends Service {
+ void receive(Source source);
+}
+```
+
+2. All analysis data must be a **org.apache.skywalking.oap.server.core.source.Source** sub class,
+tagged by `@SourceType` annotation, and in `org.apache.skywalking` package.
+Then it could be supported by OAL script and OAP core.
+
+Such as existed source, **Service**.
+```java
+@ScopeDeclaration(id = SERVICE, name = "Service")
+public class Service extends Source {
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE;
+ }
+
+ @Override public String getEntityId() {
+ return String.valueOf(id);
+ }
+
+ @Getter @Setter private int id;
+ @Getter @Setter private String name;
+ @Getter @Setter private String serviceInstanceName;
+ @Getter @Setter private String endpointName;
+ @Getter @Setter private int latency;
+ @Getter @Setter private boolean status;
+ @Getter @Setter private int responseCode;
+ @Getter @Setter private RequestType type;
+}
+```
+
+3. The `scope()` method in Source, returns an ID, which is not a random number. This ID need to be declared through
+`@ScopeDeclaration` annotation too. The ID in `@ScopeDeclaration` and ID in `scope()` method should be same for this Source.
+
+4. The `String getEntityId()` method in Source, requests the return value representing unique entity which the scope related.
+Such as,
+in this Service scope, the id is service id, representing a particular service, like `Order` service.
+This value is used in [OAL group mechanism](../concepts-and-designs/oal.md#group).
+
+5. Add scope name as keyword to oal grammar definition file, `OALLexer.g4`, which is at `antlr4` folder of `generate-tool-grammar` module.
+
+6. Add scope name keyword as source in parser definition file, `OALParser.g4`, which is at same fold of `OALLexer.g4`.
+
+7. Set the default columns for new scope, at `generator-scope-meta.yml` file in `generated-analysis/src/main/resources`.
+If you want to understand why need these columns, you have to understand all existing query(s). But there is an easy way,
+follow other existing scopes. Such as, if you are adding metric, connection number for service instance, follow existing `ServiceInstance`.
+
+___
+After you done all of these, you could build a receiver, which do
+1. Get the original data of the metric,
+1. Build the source, send into `SourceReceiver`.
+1. Write your whole OAL scripts.
+1. Repackage the project.
\ No newline at end of file
diff --git a/docs/others/cn/guides/How-to-build.md b/docs/others/cn/guides/How-to-build.md
index 65cb6e0..b501e69 100644
--- a/docs/others/cn/guides/How-to-build.md
+++ b/docs/others/cn/guides/How-to-build.md
@@ -30,7 +30,7 @@
* **apm-protocol/apm-network/target/generated-sources/protobuf** 文件夹下的`grpc-java` 和 `java`
* **oap-server/server-core/target/generated-sources/protobuf** 文件夹下的`grpc-java` 和 `java`
* **oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/target/generated-sources/protobuf** 文件夹下的`grpc-java` 和 `java`
- * **oap-server/generate-tool/target/generated-sources** 文件夹下的 `antlr4`
+ * **oap-server/generate-tool-grammar/target/generated-sources** 文件夹下的 `antlr4`
* **oap-server/generated-analysis/target/generated-sources** 文件夹下的 `oal`
## 设置Eclipse IDE
diff --git a/oap-server/generate-tool/pom.xml b/oap-server/generate-tool-grammar/pom.xml
similarity index 64%
copy from oap-server/generate-tool/pom.xml
copy to oap-server/generate-tool-grammar/pom.xml
index e562a41..72a3537 100644
--- a/oap-server/generate-tool/pom.xml
+++ b/oap-server/generate-tool-grammar/pom.xml
@@ -17,7 +17,9 @@
~
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>oap-server</artifactId>
<groupId>org.apache.skywalking</groupId>
@@ -25,34 +27,14 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>generate-tool</artifactId>
+ <artifactId>generate-tool-grammar</artifactId>
<dependencies>
<dependency>
- <groupId>org.apache.skywalking</groupId>
- <artifactId>server-core</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4</artifactId>
<version>4.7.1</version>
</dependency>
- <dependency>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- <version>1.4</version>
- </dependency>
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <version>1.18.0</version>
- </dependency>
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- <version>2.3.28</version>
- </dependency>
</dependencies>
<build>
diff --git a/oap-server/generate-tool/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALLexer.g4 b/oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALLexer.g4
similarity index 100%
rename from oap-server/generate-tool/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALLexer.g4
rename to oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALLexer.g4
diff --git a/oap-server/generate-tool/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALParser.g4 b/oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALParser.g4
similarity index 100%
rename from oap-server/generate-tool/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALParser.g4
rename to oap-server/generate-tool-grammar/src/main/antlr4/org/apache/skywalking/oal/tool/grammar/OALParser.g4
diff --git a/oap-server/generate-tool/pom.xml b/oap-server/generate-tool/pom.xml
index e562a41..538c296 100644
--- a/oap-server/generate-tool/pom.xml
+++ b/oap-server/generate-tool/pom.xml
@@ -34,6 +34,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.skywalking</groupId>
+ <artifactId>generate-tool-grammar</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4</artifactId>
<version>4.7.1</version>
@@ -54,22 +59,4 @@
<version>2.3.28</version>
</dependency>
</dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.antlr</groupId>
- <artifactId>antlr4-maven-plugin</artifactId>
- <version>4.7.1</version>
- <executions>
- <execution>
- <id>antlr</id>
- <goals>
- <goal>antlr4</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
</project>
\ No newline at end of file
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/Main.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/Main.java
index 68d99b4..3c960d7 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/Main.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/Main.java
@@ -22,17 +22,25 @@ import freemarker.template.TemplateException;
import java.io.*;
import java.util.List;
import org.apache.skywalking.apm.util.StringUtil;
+import org.apache.skywalking.oal.tool.meta.*;
import org.apache.skywalking.oal.tool.output.FileGenerator;
import org.apache.skywalking.oal.tool.parser.*;
+import org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
public class Main {
public static void main(String[] args) throws IOException, TemplateException {
+ AnnotationScan scopeScan = new AnnotationScan();
+ scopeScan.registerListener(new DefaultScopeDefine.Listener());
+ scopeScan.scan(null);
+
String modulePath = args[0];
String scriptFilePath = StringUtil.join(File.separatorChar, modulePath, "src", "main", "resources", "official_analysis.oal");
String outputPath = StringUtil.join(File.separatorChar, modulePath, "..", "generated-analysis", "target", "generated-sources", "oal",
"org", "apache", "skywalking", "oap", "server", "core", "analysis");
+ String metaFilePath = StringUtil.join(File.separatorChar, modulePath, "src", "main", "resources", "generator-scope-meta.yml");
Indicators.init();
@@ -41,6 +49,15 @@ public class Main {
throw new IllegalArgumentException("OAL script file [" + scriptFilePath + "] doesn't exist");
}
+ File metaFile = new File(metaFilePath);
+ if (!metaFile.exists()) {
+ throw new IllegalArgumentException("Generator meta file [" + metaFilePath + "] doesn't exist");
+ }
+
+ MetaReader reader = new MetaReader();
+ MetaSettings metaSettings = reader.read(new FileInputStream(metaFile));
+ SourceColumnsFactory.setSettings(metaSettings);
+
ScriptParser scriptParser = ScriptParser.createFromFile(scriptFilePath);
List<AnalysisResult> analysisResults = scriptParser.parse();
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaReader.java
similarity index 69%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
copy to oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaReader.java
index 5e6ab35..8a0f9de 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaReader.java
@@ -16,17 +16,19 @@
*
*/
-package org.apache.skywalking.oap.server.core.source;
+package org.apache.skywalking.oal.tool.meta;
-import lombok.*;
+import java.io.InputStream;
+import org.yaml.snakeyaml.Yaml;
/**
- * @author peng-yongsheng
+ * @author wusheng
*/
-public abstract class Source {
- public abstract Scope scope();
+public class MetaReader {
+ public MetaSettings read(InputStream settingFileStream) {
+ Yaml yaml = new Yaml();
+ MetaSettings settings = yaml.loadAs(settingFileStream, MetaSettings.class);
- @Getter @Setter private long timeBucket;
-
- public abstract String getEntityId();
+ return settings;
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/annotation/SourceType.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaSettings.java
similarity index 79%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/annotation/SourceType.java
copy to oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaSettings.java
index e91854d..7e5ea0a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/annotation/SourceType.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/MetaSettings.java
@@ -16,14 +16,16 @@
*
*/
-package org.apache.skywalking.oap.server.core.source.annotation;
+package org.apache.skywalking.oal.tool.meta;
-import java.lang.annotation.*;
+import java.util.List;
+import lombok.*;
/**
- * @author peng-yongsheng
+ * @author wusheng
*/
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.SOURCE)
-public @interface SourceType {
+@Setter
+@Getter
+public class MetaSettings {
+ private List<ScopeMeta> scopes;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/ScopeMeta.java
similarity index 75%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
copy to oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/ScopeMeta.java
index 5e6ab35..f027d43 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/meta/ScopeMeta.java
@@ -16,17 +16,18 @@
*
*/
-package org.apache.skywalking.oap.server.core.source;
+package org.apache.skywalking.oal.tool.meta;
+import java.util.*;
import lombok.*;
+import org.apache.skywalking.oal.tool.parser.SourceColumn;
/**
- * @author peng-yongsheng
+ * @author wusheng
*/
-public abstract class Source {
- public abstract Scope scope();
-
- @Getter @Setter private long timeBucket;
-
- public abstract String getEntityId();
+@Setter
+@Getter
+public class ScopeMeta {
+ private String name;
+ private List<SourceColumn> columns = new ArrayList<>();
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/annotation/SourceType.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/AllDispatcherContext.java
similarity index 78%
rename from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/annotation/SourceType.java
rename to oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/AllDispatcherContext.java
index e91854d..ac11fe7 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/annotation/SourceType.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/AllDispatcherContext.java
@@ -16,14 +16,13 @@
*
*/
-package org.apache.skywalking.oap.server.core.source.annotation;
+package org.apache.skywalking.oal.tool.output;
-import java.lang.annotation.*;
+import java.util.*;
+import lombok.*;
-/**
- * @author peng-yongsheng
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.SOURCE)
-public @interface SourceType {
+@Getter
+@Setter
+public class AllDispatcherContext {
+ private Map<String, DispatcherContext> allContext = new HashMap<>();
}
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
index 9a160f8..8c83610 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/DispatcherContext.java
@@ -22,19 +22,10 @@ import java.util.*;
import lombok.*;
import org.apache.skywalking.oal.tool.parser.AnalysisResult;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class DispatcherContext {
- private List<AnalysisResult> allIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceInstanceIndicators = new LinkedList<>();
- private List<AnalysisResult> endpointIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceRelationIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceInstanceRelationIndicators = new LinkedList<>();
- private List<AnalysisResult> endpointRelationIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceInstanceJVMCPUIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceInstanceJVMMemoryIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceInstanceJVMMemoryPoolIndicators = new LinkedList<>();
- private List<AnalysisResult> serviceInstanceJVMGCIndicators = new LinkedList<>();
- private List<AnalysisResult> databaseAccessIndicators = new LinkedList<>();
+ private String source;
+ private String packageName;
+ private List<AnalysisResult> indicators = new ArrayList<>();
}
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
index 19bb941..469eb97 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/output/FileGenerator.java
@@ -27,7 +27,7 @@ public class FileGenerator {
private List<AnalysisResult> results;
private String outputPath;
private Configuration configuration;
- private DispatcherContext dispatcherContext;
+ private AllDispatcherContext allDispatcherContext;
public FileGenerator(List<AnalysisResult> results, String outputPath) {
this.results = results;
@@ -35,61 +35,19 @@ public class FileGenerator {
configuration = new Configuration(new Version("2.3.28"));
configuration.setEncoding(Locale.ENGLISH, "UTF-8");
configuration.setClassLoaderForTemplateLoading(FileGenerator.class.getClassLoader(), "/code-templates");
- this.toDispatchers();
+ allDispatcherContext = new AllDispatcherContext();
+ buildDispatcherContext();
}
public void generate() throws IOException, TemplateException {
for (AnalysisResult result : results) {
generate(result, "Indicator.java", writer -> generateIndicatorImplementor(result, writer));
- }
-
- File file = new File(outputPath, "generated/all/AllDispatcher.java");
- createFile(file);
- this.generateAllDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/service/ServiceDispatcher.java");
- createFile(file);
- this.generateServiceDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/databaseaccess/DatabaseAccessDispatcher.java");
- createFile(file);
- this.generateDatabaseAccessDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/servicerelation/ServiceRelationDispatcher.java");
- createFile(file);
- this.generateServiceRelationDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/endpoint/EndpointDispatcher.java");
- createFile(file);
- this.generateEndpointDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/endpointrelation/EndpointRelationDispatcher.java");
- createFile(file);
- this.generateEndpointRelationDispatcher(new FileWriter(file));
- file = new File(outputPath, "generated/serviceinstance/ServiceInstanceDispatcher.java");
- createFile(file);
- this.generateServiceInstanceDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/serviceinstancerelation/ServiceInstanceRelationDispatcher.java");
- createFile(file);
- this.generateServiceInstanceRelationDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/serviceinstancejvmcpu/ServiceInstanceJVMCPUDispatcher.java");
- createFile(file);
- this.generateServiceInstanceJVMCPUDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/serviceinstancejvmmemory/ServiceInstanceJVMMemoryDispatcher.java");
- createFile(file);
- this.generateServiceInstanceJVMMemoryDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/serviceinstancejvmmemorypool/ServiceInstanceJVMMemoryPoolDispatcher.java");
- createFile(file);
- this.generateServiceInstanceJVMMemoryPoolDispatcher(new FileWriter(file));
-
- file = new File(outputPath, "generated/serviceinstancejvmgc/ServiceInstanceJVMGCDispatcher.java");
- createFile(file);
- this.generateServiceInstanceJVMGCDispatcher(new FileWriter(file));
+ String scopeName = result.getSourceName();
+ File file = new File(outputPath, "generated/" + scopeName.toLowerCase() + "/" + scopeName + "Dispatcher.java");
+ createFile(file);
+ generateDispatcher(result, new FileWriter(file));
+ }
}
private void generate(AnalysisResult result, String fileSuffix,
@@ -123,98 +81,26 @@ public class FileGenerator {
configuration.getTemplate("IndicatorImplementor.ftl").process(result, output);
}
- void generateAllDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("AllDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateDatabaseAccessDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("DatabaseAccessDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceRelationDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceRelationDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateEndpointDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("EndpointDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateEndpointRelationDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("EndpointRelationDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceInstanceDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceInstanceDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceInstanceRelationDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceInstanceRelationDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceInstanceJVMCPUDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceInstanceJVMCPUDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceInstanceJVMMemoryDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceInstanceJVMMemoryDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceInstanceJVMMemoryPoolDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl").process(dispatcherContext, output);
- }
-
- void generateServiceInstanceJVMGCDispatcher(Writer output) throws IOException, TemplateException {
- configuration.getTemplate("ServiceInstanceJVMGCDispatcherTemplate.ftl").process(dispatcherContext, output);
+ void generateDispatcher(AnalysisResult result, Writer output) throws IOException, TemplateException {
+ String scopeName = result.getSourceName();
+ DispatcherContext context = allDispatcherContext.getAllContext().get(scopeName);
+ if (context != null) {
+ configuration.getTemplate("DispatcherTemplate.ftl").process(context, output);
+ }
}
- private void toDispatchers() {
- dispatcherContext = new DispatcherContext();
+ private void buildDispatcherContext() {
for (AnalysisResult result : results) {
String sourceName = result.getSourceName();
- switch (sourceName) {
- case "All":
- dispatcherContext.getAllIndicators().add(result);
- break;
- case "Service":
- dispatcherContext.getServiceIndicators().add(result);
- break;
- case "ServiceRelation":
- dispatcherContext.getServiceRelationIndicators().add(result);
- break;
- case "ServiceInstance":
- dispatcherContext.getServiceInstanceIndicators().add(result);
- break;
- case "ServiceInstanceRelation":
- dispatcherContext.getServiceInstanceRelationIndicators().add(result);
- break;
- case "Endpoint":
- dispatcherContext.getEndpointIndicators().add(result);
- break;
- case "EndpointRelation":
- dispatcherContext.getEndpointRelationIndicators().add(result);
- break;
- case "ServiceInstanceJVMCPU":
- dispatcherContext.getServiceInstanceJVMCPUIndicators().add(result);
- break;
- case "ServiceInstanceJVMMemory":
- dispatcherContext.getServiceInstanceJVMMemoryIndicators().add(result);
- break;
- case "ServiceInstanceJVMMemoryPool":
- dispatcherContext.getServiceInstanceJVMMemoryPoolIndicators().add(result);
- break;
- case "ServiceInstanceJVMGC":
- dispatcherContext.getServiceInstanceJVMGCIndicators().add(result);
- break;
- case "DatabaseAccess":
- dispatcherContext.getDatabaseAccessIndicators().add(result);
- break;
- default:
- throw new RuntimeException("Unexpected dispatcher");
+
+ DispatcherContext context = allDispatcherContext.getAllContext().get(sourceName);
+ if (context == null) {
+ context = new DispatcherContext();
+ context.setSource(sourceName);
+ context.setPackageName(sourceName.toLowerCase());
+ allDispatcherContext.getAllContext().put(sourceName, context);
}
+ context.getIndicators().add(result);
}
}
}
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/AnalysisResult.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/AnalysisResult.java
index 3711513..716594c 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/AnalysisResult.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/AnalysisResult.java
@@ -34,6 +34,8 @@ public class AnalysisResult {
private String sourceName;
+ private int sourceScopeId;
+
private String sourceAttribute;
private String aggregationFunctionName;
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALListener.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALListener.java
index 590ecd6..2e585a3 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALListener.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/OALListener.java
@@ -21,6 +21,7 @@ package org.apache.skywalking.oal.tool.parser;
import java.util.List;
import org.antlr.v4.runtime.misc.NotNull;
import org.apache.skywalking.oal.tool.grammar.*;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
public class OALListener extends OALParserBaseListener {
private List<AnalysisResult> results;
@@ -46,6 +47,7 @@ public class OALListener extends OALParserBaseListener {
@Override public void enterSource(OALParser.SourceContext ctx) {
current.setSourceName(ctx.getText());
+ current.setSourceScopeId(DefaultScopeDefine.valueOf(metricNameFormat(ctx.getText())));
}
@Override
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumn.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumn.java
index 095147f..74a7706 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumn.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumn.java
@@ -18,6 +18,7 @@
package org.apache.skywalking.oal.tool.parser;
+import java.util.Objects;
import lombok.*;
import org.apache.skywalking.oal.tool.util.ClassMethodUtil;
@@ -32,6 +33,9 @@ public class SourceColumn {
private String fieldSetter;
private String fieldGetter;
+ public SourceColumn() {
+ }
+
public SourceColumn(String fieldName, String columnName, Class<?> type, boolean isID) {
this.fieldName = fieldName;
this.columnName = columnName;
@@ -43,6 +47,35 @@ public class SourceColumn {
this.fieldSetter = ClassMethodUtil.toSetMethod(fieldName);
}
+ public void setFieldName(String fieldName) {
+ this.fieldName = fieldName;
+ this.fieldGetter = ClassMethodUtil.toGetMethod(fieldName);
+ this.fieldSetter = ClassMethodUtil.toSetMethod(fieldName);
+ }
+
+ public void setTypeName(String typeName) {
+ switch (typeName) {
+ case "int":
+ this.type = int.class;
+ break;
+ case "long":
+ this.type = long.class;
+ break;
+ case "string":
+ case "String":
+ this.type = String.class;
+ typeName = "String";
+ default:
+ try {
+ this.type = Class.forName(typeName);
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ this.typeName = typeName;
+ }
+
@Override public String toString() {
return "SourceColumn{" +
"fieldName='" + fieldName + '\'' +
@@ -51,4 +84,23 @@ public class SourceColumn {
", isID=" + isID +
'}';
}
+
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ SourceColumn column = (SourceColumn)o;
+ return isID == column.isID &&
+ Objects.equals(fieldName, column.fieldName) &&
+ Objects.equals(columnName, column.columnName) &&
+ Objects.equals(type, column.type) &&
+ Objects.equals(typeName, column.typeName) &&
+ Objects.equals(fieldSetter, column.fieldSetter) &&
+ Objects.equals(fieldGetter, column.fieldGetter);
+ }
+
+ @Override public int hashCode() {
+ return Objects.hash(fieldName, columnName, type, typeName, isID, fieldSetter, fieldGetter);
+ }
}
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
index 070e554..7be457c 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
+++ b/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
@@ -19,85 +19,22 @@
package org.apache.skywalking.oal.tool.parser;
import java.util.*;
+import org.apache.skywalking.oal.tool.meta.*;
+/**
+ * @author wusheng
+ */
public class SourceColumnsFactory {
- public static List<SourceColumn> getColumns(String source) {
- List<SourceColumn> columnList;
- SourceColumn idColumn;
- switch (source) {
- case "All":
- return new LinkedList<>();
- case "Service":
- columnList = new LinkedList<>();
- // Service id;
- idColumn = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(idColumn);
- return columnList;
- case "ServiceInstance":
- columnList = new LinkedList<>();
- // Service instance id;
- idColumn = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(idColumn);
- SourceColumn serviceIdColumn = new SourceColumn("serviceId", "service_id", int.class, false);
- columnList.add(serviceIdColumn);
- return columnList;
- case "Endpoint":
- columnList = new LinkedList<>();
- // Endpoint id;
- idColumn = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(idColumn);
- serviceIdColumn = new SourceColumn("serviceId", "service_id", int.class, false);
- columnList.add(serviceIdColumn);
- SourceColumn serviceInstanceIdColumn = new SourceColumn("serviceInstanceId", "service_instance_id", int.class, false);
- columnList.add(serviceInstanceIdColumn);
- return columnList;
- case "ServiceInstanceJVMCPU":
- case "ServiceInstanceJVMMemory":
- case "ServiceInstanceJVMMemoryPool":
- case "ServiceInstanceJVMGC":
- columnList = new LinkedList<>();
- // Service instance id;
- idColumn = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(idColumn);
- serviceInstanceIdColumn = new SourceColumn("serviceInstanceId", "service_instance_id", int.class, false);
- columnList.add(serviceInstanceIdColumn);
- return columnList;
- case "ServiceRelation":
- columnList = new LinkedList<>();
- SourceColumn sourceService = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(sourceService);
- return columnList;
- case "ServiceInstanceRelation":
- columnList = new LinkedList<>();
- sourceService = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(sourceService);
- sourceService = new SourceColumn("sourceServiceId", "source_service_id", int.class, false);
- columnList.add(sourceService);
- SourceColumn destService = new SourceColumn("destServiceId", "destServiceId", int.class, false);
- columnList.add(destService);
+ private static Map<String, ScopeMeta> SETTINGS;
- return columnList;
- case "EndpointRelation":
- columnList = new LinkedList<>();
- SourceColumn sourceEndpointColumn = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(sourceEndpointColumn);
- sourceService = new SourceColumn("serviceId", "service_id", int.class, false);
- columnList.add(sourceService);
- destService = new SourceColumn("childServiceId", "child_service_id", int.class, false);
- columnList.add(destService);
- SourceColumn sourceServiceInstance = new SourceColumn("serviceInstanceId", "service_instance_id", int.class, false);
- columnList.add(sourceServiceInstance);
- SourceColumn destServiceInstance = new SourceColumn("childServiceInstanceId", "child_service_instance_id", int.class, false);
- columnList.add(destServiceInstance);
- return columnList;
- case "DatabaseAccess":
- columnList = new LinkedList<>();
- // Service id;
- idColumn = new SourceColumn("entityId", "entity_id", String.class, true);
- columnList.add(idColumn);
- return columnList;
- default:
- throw new IllegalArgumentException("Illegal source :" + source);
- }
+ public static void setSettings(MetaSettings settings) {
+ SourceColumnsFactory.SETTINGS = new HashMap<>();
+ settings.getScopes().forEach(scope -> {
+ SourceColumnsFactory.SETTINGS.put(scope.getName(), scope);
+ });
+ }
+
+ public static List<SourceColumn> getColumns(String source) {
+ return SETTINGS.get(source).getColumns();
}
}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/DatabaseAccessDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/DatabaseAccessDispatcherTemplate.ftl
deleted file mode 100644
index 7bfb7b3..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/DatabaseAccessDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-* 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.analysis.generated.databaseaccess;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (databaseAccessIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list databaseAccessIndicators as indicator>
- <#if indicator.filterExpressions??>
- import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
-* This class is auto generated. Please don't change this class manually.
-*
-* @author Observability Analysis Language code generator
-*/
-public class DatabaseAccessDispatcher implements SourceDispatcher<DatabaseAccess> {
-
- @Override public void dispatch(DatabaseAccess source) {
- <#list databaseAccessIndicators as indicator>
- do${indicator.metricName}(source);
- </#list>
- }
-
- <#list databaseAccessIndicators as indicator>
- private void do${indicator.metricName}(DatabaseAccess source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
- </#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/AllDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/DispatcherTemplate.ftl
similarity index 87%
rename from oap-server/generate-tool/src/main/resources/code-templates/AllDispatcherTemplate.ftl
rename to oap-server/generate-tool/src/main/resources/code-templates/DispatcherTemplate.ftl
index 95ff276..b6068ca 100644
--- a/oap-server/generate-tool/src/main/resources/code-templates/AllDispatcherTemplate.ftl
+++ b/oap-server/generate-tool/src/main/resources/code-templates/DispatcherTemplate.ftl
@@ -16,12 +16,12 @@
*
*/
-package org.apache.skywalking.oap.server.core.analysis.generated.all;
+package org.apache.skywalking.oap.server.core.analysis.generated.${packageName};
import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (allIndicators?size>0)>
+<#if (indicators?size>0)>
import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list allIndicators as indicator>
+ <#list indicators as indicator>
<#if indicator.filterExpressions??>
import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
<#break>
@@ -35,16 +35,16 @@ import org.apache.skywalking.oap.server.core.source.*;
*
* @author Observability Analysis Language code generator
*/
-public class AllDispatcher implements SourceDispatcher<All> {
+public class ${source}Dispatcher implements SourceDispatcher<${source}> {
- @Override public void dispatch(All source) {
-<#list allIndicators as indicator>
+ @Override public void dispatch(${source} source) {
+<#list indicators as indicator>
do${indicator.metricName}(source);
</#list>
}
-<#list allIndicators as indicator>
- private void do${indicator.metricName}(All source) {
+<#list indicators as indicator>
+ private void do${indicator.metricName}(${source} source) {
${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
<#if indicator.filterExpressions??>
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/EndpointDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/EndpointDispatcherTemplate.ftl
deleted file mode 100644
index 468100a..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/EndpointDispatcherTemplate.ftl
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.analysis.generated.endpoint;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (endpointIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list endpointIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class EndpointDispatcher implements SourceDispatcher<Endpoint> {
-
- @Override public void dispatch(Endpoint source) {
-<#list endpointIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list endpointIndicators as indicator>
- private void do${indicator.metricName}(Endpoint source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/EndpointRelationDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/EndpointRelationDispatcherTemplate.ftl
deleted file mode 100644
index 5b68f81..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/EndpointRelationDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.endpointrelation;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (endpointRelationIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list endpointRelationIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class EndpointRelationDispatcher implements SourceDispatcher<EndpointRelation> {
-
- @Override public void dispatch(EndpointRelation source) {
-<#list endpointRelationIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list endpointRelationIndicators as indicator>
- private void do${indicator.metricName}(EndpointRelation source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl b/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl
index 2562b22..8fe2b5a 100644
--- a/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl
+++ b/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl
@@ -36,7 +36,6 @@ import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
-import org.apache.skywalking.oap.server.core.source.Scope;
/**
* This class is auto generated. Please don't change this class manually.
@@ -45,7 +44,7 @@ import org.apache.skywalking.oap.server.core.source.Scope;
*/
@IndicatorType
@StreamData
-@StorageEntity(name = "${tableName}", builder = ${metricName}Indicator.Builder.class, source = Scope.${sourceName})
+@StorageEntity(name = "${tableName}", builder = ${metricName}Indicator.Builder.class, sourceScopeId = ${sourceScopeId})
public class ${metricName}Indicator extends ${indicatorClassName} implements AlarmSupported {
<#list fieldsFromSource as sourceField>
@@ -172,7 +171,7 @@ public class ${metricName}Indicator extends ${indicatorClassName} implements Ala
}
@Override public AlarmMeta getAlarmMeta() {
- return new AlarmMeta("${varName}", Scope.${sourceName}<#if (fieldsFromSource?size>0) ><#list fieldsFromSource as field><#if field.isID()>, ${field.fieldName}</#if></#list></#if>);
+ return new AlarmMeta("${varName}", ${sourceScopeId}<#if (fieldsFromSource?size>0) ><#list fieldsFromSource as field><#if field.isID()>, ${field.fieldName}</#if></#list></#if>);
}
@Override
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceDispatcherTemplate.ftl
deleted file mode 100644
index 78b908d..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.service;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceDispatcher implements SourceDispatcher<Service> {
-
- @Override public void dispatch(Service source) {
-<#list serviceIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceIndicators as indicator>
- private void do${indicator.metricName}(Service source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceDispatcherTemplate.ftl
deleted file mode 100644
index 9ea53a4..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.serviceinstance;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceInstanceIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceInstanceIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceInstanceDispatcher implements SourceDispatcher<ServiceInstance> {
-
- @Override public void dispatch(ServiceInstance source) {
-<#list serviceInstanceIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceInstanceIndicators as indicator>
- private void do${indicator.metricName}(ServiceInstance source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMCPUDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMCPUDispatcherTemplate.ftl
deleted file mode 100644
index d1d4913..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMCPUDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.serviceinstancejvmcpu;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceInstanceJVMCPUIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceInstanceJVMCPUIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceInstanceJVMCPUDispatcher implements SourceDispatcher<ServiceInstanceJVMCPU> {
-
- @Override public void dispatch(ServiceInstanceJVMCPU source) {
-<#list serviceInstanceJVMCPUIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceInstanceJVMCPUIndicators as indicator>
- private void do${indicator.metricName}(ServiceInstanceJVMCPU source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMGCDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMGCDispatcherTemplate.ftl
deleted file mode 100644
index 7ffb0b3..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMGCDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.serviceinstancejvmgc;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceInstanceJVMGCIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceInstanceJVMGCIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceInstanceJVMGCDispatcher implements SourceDispatcher<ServiceInstanceJVMGC> {
-
- @Override public void dispatch(ServiceInstanceJVMGC source) {
-<#list serviceInstanceJVMGCIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceInstanceJVMGCIndicators as indicator>
- private void do${indicator.metricName}(ServiceInstanceJVMGC source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMMemoryDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMMemoryDispatcherTemplate.ftl
deleted file mode 100644
index 3df4b88..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMMemoryDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.serviceinstancejvmmemory;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceInstanceJVMMemoryIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceInstanceJVMMemoryIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceInstanceJVMMemoryDispatcher implements SourceDispatcher<ServiceInstanceJVMMemory> {
-
- @Override public void dispatch(ServiceInstanceJVMMemory source) {
-<#list serviceInstanceJVMMemoryIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceInstanceJVMMemoryIndicators as indicator>
- private void do${indicator.metricName}(ServiceInstanceJVMMemory source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl
deleted file mode 100644
index 505e35e..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceJVMMemoryPoolDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.serviceinstancejvmmemorypool;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceInstanceJVMMemoryPoolIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceInstanceJVMMemoryPoolIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceInstanceJVMMemoryPoolDispatcher implements SourceDispatcher<ServiceInstanceJVMMemoryPool> {
-
- @Override public void dispatch(ServiceInstanceJVMMemoryPool source) {
-<#list serviceInstanceJVMMemoryPoolIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceInstanceJVMMemoryPoolIndicators as indicator>
- private void do${indicator.metricName}(ServiceInstanceJVMMemoryPool source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceRelationDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceRelationDispatcherTemplate.ftl
deleted file mode 100644
index c7a485a..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceInstanceRelationDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.serviceinstancerelation;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceInstanceRelationIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceInstanceRelationIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceInstanceRelationDispatcher implements SourceDispatcher<ServiceInstanceRelation> {
-
- @Override public void dispatch(ServiceInstanceRelation source) {
-<#list serviceInstanceRelationIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceInstanceRelationIndicators as indicator>
- private void do${indicator.metricName}(ServiceInstanceRelation source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/ServiceRelationDispatcherTemplate.ftl b/oap-server/generate-tool/src/main/resources/code-templates/ServiceRelationDispatcherTemplate.ftl
deleted file mode 100644
index 42fd47e..0000000
--- a/oap-server/generate-tool/src/main/resources/code-templates/ServiceRelationDispatcherTemplate.ftl
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * 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.analysis.generated.servicerelation;
-
-import org.apache.skywalking.oap.server.core.analysis.SourceDispatcher;
-<#if (serviceRelationIndicators?size>0)>
-import org.apache.skywalking.oap.server.core.analysis.worker.IndicatorProcess;
- <#list serviceRelationIndicators as indicator>
- <#if indicator.filterExpressions??>
-import org.apache.skywalking.oap.server.core.analysis.indicator.expression.*;
- <#break>
- </#if>
- </#list>
-</#if>
-import org.apache.skywalking.oap.server.core.source.*;
-
-/**
- * This class is auto generated. Please don't change this class manually.
- *
- * @author Observability Analysis Language code generator
- */
-public class ServiceRelationDispatcher implements SourceDispatcher<ServiceRelation> {
-
- @Override public void dispatch(ServiceRelation source) {
-<#list serviceRelationIndicators as indicator>
- do${indicator.metricName}(source);
-</#list>
- }
-
-<#list serviceRelationIndicators as indicator>
- private void do${indicator.metricName}(ServiceRelation source) {
- ${indicator.metricName}Indicator indicator = new ${indicator.metricName}Indicator();
-
- <#if indicator.filterExpressions??>
- <#list indicator.filterExpressions as filterExpression>
- if (!new ${filterExpression.expressionObject}().setLeft(${filterExpression.left}).setRight(${filterExpression.right}).match()) {
- return;
- }
- </#list>
- </#if>
-
- indicator.setTimeBucket(source.getTimeBucket());
- <#list indicator.fieldsFromSource as field>
- indicator.${field.fieldSetter}(source.${field.fieldGetter}());
- </#list>
- indicator.${indicator.entryMethod.methodName}(<#list indicator.entryMethod.argsExpressions as arg>${arg}<#if arg_has_next>, </#if></#list>);
- IndicatorProcess.INSTANCE.in(indicator);
- }
-</#list>
-}
diff --git a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MetaReaderTest.java b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MetaReaderTest.java
new file mode 100644
index 0000000..bb1ac4c
--- /dev/null
+++ b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MetaReaderTest.java
@@ -0,0 +1,43 @@
+/*
+ * 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.oal.tool.meta;
+
+import java.io.InputStream;
+import java.util.List;
+import org.apache.skywalking.oal.tool.parser.SourceColumn;
+import org.junit.*;
+
+public class MetaReaderTest {
+ @Test
+ public void testFileParser() {
+ MetaReader reader = new MetaReader();
+ InputStream stream = MetaReaderTest.class.getResourceAsStream("/scope-meta.yml");
+ MetaSettings metaSettings = reader.read(stream);
+ Assert.assertNotEquals(0, metaSettings.getScopes().size());
+
+ metaSettings.getScopes().forEach(scopeMeta -> {
+ List<SourceColumn> sourceColumns = MockSourceColumnsFactory.getColumns(scopeMeta.getName());
+ for (int i = 0; i < sourceColumns.size(); i++) {
+ SourceColumn column = scopeMeta.getColumns().get(i);
+ SourceColumn expected = sourceColumns.get(i);
+ Assert.assertEquals(expected, column);
+ }
+ });
+ }
+}
diff --git a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MockSourceColumnsFactory.java
similarity index 95%
copy from oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
copy to oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MockSourceColumnsFactory.java
index 070e554..5930907 100644
--- a/oap-server/generate-tool/src/main/java/org/apache/skywalking/oal/tool/parser/SourceColumnsFactory.java
+++ b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/meta/MockSourceColumnsFactory.java
@@ -16,11 +16,12 @@
*
*/
-package org.apache.skywalking.oal.tool.parser;
+package org.apache.skywalking.oal.tool.meta;
import java.util.*;
+import org.apache.skywalking.oal.tool.parser.SourceColumn;
-public class SourceColumnsFactory {
+public class MockSourceColumnsFactory {
public static List<SourceColumn> getColumns(String source) {
List<SourceColumn> columnList;
SourceColumn idColumn;
@@ -73,7 +74,7 @@ public class SourceColumnsFactory {
columnList.add(sourceService);
sourceService = new SourceColumn("sourceServiceId", "source_service_id", int.class, false);
columnList.add(sourceService);
- SourceColumn destService = new SourceColumn("destServiceId", "destServiceId", int.class, false);
+ SourceColumn destService = new SourceColumn("destServiceId", "dest_service_id", int.class, false);
columnList.add(destService);
return columnList;
@@ -97,7 +98,7 @@ public class SourceColumnsFactory {
columnList.add(idColumn);
return columnList;
default:
- throw new IllegalArgumentException("Illegal source :" + source);
+ throw new IllegalArgumentException("Illegal sourceScopeId :" + source);
}
}
}
diff --git a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
index 435de82..1740a1d 100644
--- a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
+++ b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/output/FileGeneratorTest.java
@@ -21,14 +21,24 @@ package org.apache.skywalking.oal.tool.output;
import freemarker.template.TemplateException;
import java.io.*;
import java.util.*;
+import org.apache.skywalking.oal.tool.meta.*;
import org.apache.skywalking.oal.tool.parser.*;
import org.junit.*;
public class FileGeneratorTest {
+ @BeforeClass
+ public static void init() {
+ MetaReader reader = new MetaReader();
+ InputStream stream = MetaReaderTest.class.getResourceAsStream("/scope-meta.yml");
+ MetaSettings metaSettings = reader.read(stream);
+ SourceColumnsFactory.setSettings(metaSettings);
+ }
+
private AnalysisResult buildResult() {
AnalysisResult result = new AnalysisResult();
result.setVarName("generate_indicator");
result.setSourceName("Service");
+ result.setSourceScopeId(1);
result.setPackageName("service.serviceavg");
result.setTableName("service_avg");
result.setSourceAttribute("latency");
@@ -83,7 +93,7 @@ public class FileGeneratorTest {
FileGenerator fileGenerator = new FileGenerator(results, ".");
StringWriter writer = new StringWriter();
- fileGenerator.generateServiceDispatcher(writer);
+ fileGenerator.generateDispatcher(result, writer);
Assert.assertEquals(readExpectedFile("ServiceDispatcherExpected.java"), writer.toString());
//fileGenerator.generateServiceDispatcher(new OutputStreamWriter(System.out));
diff --git a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
index 837eec9..1482617 100644
--- a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
+++ b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/DeepAnalysisTest.java
@@ -18,13 +18,18 @@
package org.apache.skywalking.oal.tool.parser;
-import java.io.IOException;
+import java.io.*;
import java.util.List;
+import org.apache.skywalking.oal.tool.meta.*;
import org.junit.*;
public class DeepAnalysisTest {
@BeforeClass
public static void init() throws IOException {
+ MetaReader reader = new MetaReader();
+ InputStream stream = MetaReaderTest.class.getResourceAsStream("/scope-meta.yml");
+ MetaSettings metaSettings = reader.read(stream);
+ SourceColumnsFactory.setSettings(metaSettings);
Indicators.init();
}
diff --git a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
index a62c79b..58cb838 100644
--- a/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
+++ b/oap-server/generate-tool/src/test/java/org/apache/skywalking/oal/tool/parser/ScriptParserTest.java
@@ -18,14 +18,30 @@
package org.apache.skywalking.oal.tool.parser;
-import java.io.IOException;
+import java.io.*;
import java.util.List;
+import org.apache.skywalking.oal.tool.meta.*;
+import org.apache.skywalking.oap.server.core.annotation.AnnotationScan;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.junit.*;
public class ScriptParserTest {
@BeforeClass
public static void init() throws IOException {
+ MetaReader reader = new MetaReader();
+ InputStream stream = MetaReaderTest.class.getResourceAsStream("/scope-meta.yml");
+ MetaSettings metaSettings = reader.read(stream);
+ SourceColumnsFactory.setSettings(metaSettings);
Indicators.init();
+
+ AnnotationScan scopeScan = new AnnotationScan();
+ scopeScan.registerListener(new DefaultScopeDefine.Listener());
+ scopeScan.scan(null);
+ }
+
+ @AfterClass
+ public static void clear() {
+ DefaultScopeDefine.reset();
}
@Test
diff --git a/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java b/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
index 5395803..461553b 100644
--- a/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
+++ b/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
@@ -29,7 +29,6 @@ import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
-import org.apache.skywalking.oap.server.core.source.Scope;
/**
* This class is auto generated. Please don't change this class manually.
@@ -38,7 +37,7 @@ import org.apache.skywalking.oap.server.core.source.Scope;
*/
@IndicatorType
@StreamData
-@StorageEntity(name = "service_avg", builder = ServiceAvgIndicator.Builder.class, source = Scope.Service)
+@StorageEntity(name = "service_avg", builder = ServiceAvgIndicator.Builder.class, sourceScopeId = 1)
public class ServiceAvgIndicator extends LongAvgIndicator implements AlarmSupported {
@Setter @Getter @Column(columnName = "entity_id") @IDColumn private java.lang.String entityId;
@@ -110,7 +109,7 @@ public class ServiceAvgIndicator extends LongAvgIndicator implements AlarmSuppor
}
@Override public AlarmMeta getAlarmMeta() {
- return new AlarmMeta("generate_indicator", Scope.Service, entityId);
+ return new AlarmMeta("generate_indicator", 1, entityId);
}
@Override
diff --git a/oap-server/generate-tool/src/test/resources/scope-meta.yml b/oap-server/generate-tool/src/test/resources/scope-meta.yml
new file mode 100644
index 0000000..004a400
--- /dev/null
+++ b/oap-server/generate-tool/src/test/resources/scope-meta.yml
@@ -0,0 +1,136 @@
+# 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.
+
+scopes:
+ - name: All
+ - name: Service
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - name: ServiceInstance
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceId
+ columnName: service_id
+ typeName: int
+ ID: false
+ - name: Endpoint
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceId
+ columnName: service_id
+ typeName: int
+ ID: false
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMCPU
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMMemory
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMMemoryPool
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMGC
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceRelation
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - name: ServiceInstanceRelation
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: sourceServiceId
+ columnName: source_service_id
+ typeName: int
+ ID: false
+ - fieldName: destServiceId
+ columnName: dest_service_id
+ typeName: int
+ ID: false
+ - name: EndpointRelation
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceId
+ columnName: service_id
+ typeName: int
+ ID: false
+ - fieldName: childServiceId
+ columnName: child_service_id
+ typeName: int
+ ID: false
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - fieldName: childServiceInstanceId
+ columnName: child_service_instance_id
+ typeName: int
+ ID: false
+ - name: DatabaseAccess
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
diff --git a/oap-server/generated-analysis/src/main/resources/generator-scope-meta.yml b/oap-server/generated-analysis/src/main/resources/generator-scope-meta.yml
new file mode 100644
index 0000000..004a400
--- /dev/null
+++ b/oap-server/generated-analysis/src/main/resources/generator-scope-meta.yml
@@ -0,0 +1,136 @@
+# 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.
+
+scopes:
+ - name: All
+ - name: Service
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - name: ServiceInstance
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceId
+ columnName: service_id
+ typeName: int
+ ID: false
+ - name: Endpoint
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceId
+ columnName: service_id
+ typeName: int
+ ID: false
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMCPU
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMMemory
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMMemoryPool
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceInstanceJVMGC
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - name: ServiceRelation
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - name: ServiceInstanceRelation
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: sourceServiceId
+ columnName: source_service_id
+ typeName: int
+ ID: false
+ - fieldName: destServiceId
+ columnName: dest_service_id
+ typeName: int
+ ID: false
+ - name: EndpointRelation
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
+ - fieldName: serviceId
+ columnName: service_id
+ typeName: int
+ ID: false
+ - fieldName: childServiceId
+ columnName: child_service_id
+ typeName: int
+ ID: false
+ - fieldName: serviceInstanceId
+ columnName: service_instance_id
+ typeName: int
+ ID: false
+ - fieldName: childServiceInstanceId
+ columnName: child_service_instance_id
+ typeName: int
+ ID: false
+ - name: DatabaseAccess
+ columns:
+ - fieldName: entityId
+ columnName: entity_id
+ typeName: java.lang.String
+ ID: true
diff --git a/oap-server/pom.xml b/oap-server/pom.xml
index f0869ae..77bc8a4 100644
--- a/oap-server/pom.xml
+++ b/oap-server/pom.xml
@@ -40,6 +40,7 @@
<module>generated-analysis</module>
<module>generate-tool</module>
<module>server-telemetry</module>
+ <module>generate-tool-grammar</module>
</modules>
<properties>
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
index b0cb665..5aa6494 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
@@ -25,6 +25,8 @@ import org.apache.skywalking.oap.server.core.alarm.IndicatorNotify;
import org.apache.skywalking.oap.server.core.alarm.MetaInAlarm;
import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.*;
+
public class NotifyHandler implements IndicatorNotify {
private final AlarmCore core;
private final Rules rules;
@@ -35,12 +37,12 @@ public class NotifyHandler implements IndicatorNotify {
}
@Override public void notify(MetaInAlarm meta, Indicator indicator) {
- switch (meta.getScope()) {
- case Service:
+ switch (meta.getScopeId()) {
+ case SERVICE:
break;
- case ServiceInstance:
+ case SERVICE_INSTANCE:
break;
- case Endpoint:
+ case ENDPOINT:
break;
default:
return;
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
index dd0659d..bf8ac47 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
@@ -30,7 +30,6 @@ import org.apache.skywalking.oap.server.core.analysis.indicator.DoubleValueHolde
import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
import org.apache.skywalking.oap.server.core.analysis.indicator.IntValueHolder;
import org.apache.skywalking.oap.server.core.analysis.indicator.LongValueHolder;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.library.util.CollectionUtils;
import org.joda.time.LocalDateTime;
import org.joda.time.Minutes;
@@ -57,7 +56,7 @@ public class RunningRule {
private final int silencePeriod;
private Map<MetaInAlarm, Window> windows;
private volatile IndicatorValueType valueType;
- private Scope targetScope;
+ private int targetScopeId;
private List<String> includeNames;
private AlarmMessageFormatter formatter;
@@ -111,7 +110,7 @@ public class RunningRule {
} else {
return;
}
- targetScope = meta.getScope();
+ targetScopeId = meta.getScopeId();
}
if (valueType != null) {
@@ -147,7 +146,7 @@ public class RunningRule {
Window window = entry.getValue();
AlarmMessage alarmMessage = window.checkAlarm();
if (alarmMessage != AlarmMessage.NONE) {
- alarmMessage.setScope(meta.getScope());
+ alarmMessage.setScopeId(meta.getScopeId());
alarmMessage.setName(meta.getName());
alarmMessage.setId0(meta.getId0());
alarmMessage.setId1(meta.getId1());
diff --git a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmMessageFormatterTest.java b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmMessageFormatterTest.java
index 02a3699..5d96606 100644
--- a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmMessageFormatterTest.java
+++ b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmMessageFormatterTest.java
@@ -19,9 +19,7 @@
package org.apache.skywalking.oap.server.core.alarm.provider;
import org.apache.skywalking.oap.server.core.alarm.MetaInAlarm;
-import org.apache.skywalking.oap.server.core.source.Scope;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.*;
public class AlarmMessageFormatterTest {
@Test
@@ -29,8 +27,8 @@ public class AlarmMessageFormatterTest {
AlarmMessageFormatter formatter = new AlarmMessageFormatter("abc words {sdf");
String message = formatter.format(new MetaInAlarm() {
- @Override public Scope getScope() {
- return null;
+ @Override public int getScopeId() {
+ return -1;
}
@Override public String getName() {
@@ -58,8 +56,8 @@ public class AlarmMessageFormatterTest {
AlarmMessageFormatter formatter = new AlarmMessageFormatter("abc} words {name} - {id} .. {");
String message = formatter.format(new MetaInAlarm() {
- @Override public Scope getScope() {
- return null;
+ @Override public int getScopeId() {
+ return -1;
}
@Override public String getName() {
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 336e6df..371e6ef 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
@@ -18,22 +18,14 @@
package org.apache.skywalking.oap.server.core.alarm.provider;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import org.apache.skywalking.oap.server.core.alarm.AlarmCallback;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMessage;
-import org.apache.skywalking.oap.server.core.alarm.MetaInAlarm;
-import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
-import org.apache.skywalking.oap.server.core.analysis.indicator.IntValueHolder;
+import java.util.*;
+import org.apache.skywalking.oap.server.core.alarm.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.*;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.joda.time.LocalDateTime;
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
-import org.junit.Assert;
-import org.junit.Test;
+import org.joda.time.format.*;
+import org.junit.*;
import org.powermock.reflect.Whitebox;
/**
@@ -177,7 +169,7 @@ public class RunningRuleTest {
Assert.assertEquals(0, runningRule.check().size()); //check matches, no alarm
runningRule.moveTo(TIME_BUCKET_FORMATTER.parseLocalDateTime("201808301441"));
// check at 201808301441
- Assert.assertEquals(0, runningRule.check().size()); //check matches, no alarm
+ Assert.assertEquals(0, runningRule.check().size()); //check matches, no alarm
runningRule.moveTo(TIME_BUCKET_FORMATTER.parseLocalDateTime("201808301442"));
// check at 201808301442
Assert.assertNotEquals(0, runningRule.check().size()); //alarm
@@ -191,8 +183,8 @@ public class RunningRuleTest {
private MetaInAlarm getMetaInAlarm(int id) {
return new MetaInAlarm() {
- @Override public Scope getScope() {
- return Scope.Service;
+ @Override public int getScopeId() {
+ return DefaultScopeDefine.SERVICE;
}
@Override public String getName() {
diff --git a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/WebhookCallbackTest.java b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/WebhookCallbackTest.java
index e3ef8b5..097a77f 100644
--- a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/WebhookCallbackTest.java
+++ b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/WebhookCallbackTest.java
@@ -18,30 +18,17 @@
package org.apache.skywalking.oap.server.core.alarm.provider;
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import com.google.gson.*;
+import java.io.*;
import java.net.InetSocketAddress;
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+import javax.servlet.*;
+import javax.servlet.http.*;
import org.apache.skywalking.oap.server.core.alarm.AlarmMessage;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.eclipse.jetty.servlet.*;
+import org.junit.*;
public class WebhookCallbackTest implements Servlet {
private Server server;
@@ -74,12 +61,12 @@ public class WebhookCallbackTest implements Servlet {
WebhookCallback webhookCallback = new WebhookCallback(remoteEndpoints);
List<AlarmMessage> alarmMessages = new ArrayList<>(2);
AlarmMessage alarmMessage = new AlarmMessage();
- alarmMessage.setScope(Scope.All);
- alarmMessage.setAlarmMessage("alarmMessage with [Scope.All]");
+ alarmMessage.setScopeId(DefaultScopeDefine.ALL);
+ alarmMessage.setAlarmMessage("alarmMessage with [DefaultScopeDefine.All]");
alarmMessages.add(alarmMessage);
AlarmMessage anotherAlarmMessage = new AlarmMessage();
- anotherAlarmMessage.setScope(Scope.Endpoint);
- anotherAlarmMessage.setAlarmMessage("anotherAlarmMessage with [Scope.Endpoint]");
+ anotherAlarmMessage.setScopeId(DefaultScopeDefine.ENDPOINT);
+ anotherAlarmMessage.setAlarmMessage("anotherAlarmMessage with [DefaultScopeDefine.Endpoint]");
alarmMessages.add(anotherAlarmMessage);
webhookCallback.doAlarm(alarmMessages);
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
index f6db632..cb4160b 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
@@ -85,7 +85,15 @@ public class CoreModuleProvider extends ModuleProvider {
return moduleConfig;
}
- @Override public void prepare() throws ServiceNotProvidedException {
+ @Override public void prepare() throws ServiceNotProvidedException, ModuleStartException {
+ AnnotationScan scopeScan = new AnnotationScan();
+ scopeScan.registerListener(new DefaultScopeDefine.Listener());
+ try {
+ scopeScan.scan(null);
+ } catch (IOException e) {
+ throw new ModuleStartException(e.getMessage(), e);
+ }
+
grpcServer = new GRPCServer(moduleConfig.getGRPCHost(), moduleConfig.getGRPCPort());
if (moduleConfig.getMaxConcurrentCallsPerConnection() > 0) {
grpcServer.setMaxConcurrentCallsPerConnection(moduleConfig.getMaxConcurrentCallsPerConnection());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java
index 207ec3e..d673e46 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java
@@ -21,14 +21,12 @@ package org.apache.skywalking.oap.server.core.alarm;
import java.util.concurrent.locks.ReentrantLock;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
-import org.apache.skywalking.oap.server.core.cache.EndpointInventoryCache;
-import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache;
-import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache;
-import org.apache.skywalking.oap.server.core.register.EndpointInventory;
-import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
-import org.apache.skywalking.oap.server.core.register.ServiceInventory;
+import org.apache.skywalking.oap.server.core.cache.*;
+import org.apache.skywalking.oap.server.core.register.*;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.*;
+
/**
* @author wusheng
*/
@@ -56,7 +54,7 @@ public class AlarmEntrance {
MetaInAlarm metaInAlarm;
switch (alarmMeta.getScope()) {
- case Service:
+ case SERVICE:
int serviceId = Integer.parseInt(alarmMeta.getId());
ServiceInventory serviceInventory = serviceInventoryCache.get(serviceId);
ServiceMetaInAlarm serviceMetaInAlarm = new ServiceMetaInAlarm();
@@ -65,7 +63,7 @@ public class AlarmEntrance {
serviceMetaInAlarm.setName(serviceInventory.getName());
metaInAlarm = serviceMetaInAlarm;
break;
- case ServiceInstance:
+ case SERVICE_INSTANCE:
int serviceInstanceId = Integer.parseInt(alarmMeta.getId());
ServiceInstanceInventory serviceInstanceInventory = serviceInstanceInventoryCache.get(serviceInstanceId);
ServiceInstanceMetaInAlarm instanceMetaInAlarm = new ServiceInstanceMetaInAlarm();
@@ -74,7 +72,7 @@ public class AlarmEntrance {
instanceMetaInAlarm.setName(serviceInstanceInventory.getName());
metaInAlarm = instanceMetaInAlarm;
break;
- case Endpoint:
+ case ENDPOINT:
int endpointId = Integer.parseInt(alarmMeta.getId());
EndpointInventory endpointInventory = endpointInventoryCache.get(endpointId);
EndpointMetaInAlarm endpointMetaInAlarm = new EndpointMetaInAlarm();
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java
index 051e761..4eb1dd7 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.core.alarm;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
/**
* Alarm message represents the details of each alarm.
@@ -32,7 +31,7 @@ public class AlarmMessage {
public static AlarmMessage NONE = new NoAlarm();
- private Scope scope;
+ private int scopeId;
private String name;
private int id0;
private int id1;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMeta.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMeta.java
index 82cc939..c751df0 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMeta.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMeta.java
@@ -18,26 +18,24 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.source.Scope;
/**
* @author wusheng
*/
public class AlarmMeta {
@Setter @Getter private String indicatorName;
- @Setter @Getter private Scope scope;
+ @Setter @Getter private int scope;
@Setter @Getter private String id;
- public AlarmMeta(String indicatorName, Scope scope) {
+ public AlarmMeta(String indicatorName, int scope) {
this.indicatorName = indicatorName;
this.scope = scope;
this.id = Const.EMPTY_STRING;
}
- public AlarmMeta(String indicatorName, Scope scope, String id) {
+ public AlarmMeta(String indicatorName, int scope, String id) {
this.indicatorName = indicatorName;
this.scope = scope;
this.id = id;
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 9257829..f7abbff 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
@@ -23,17 +23,20 @@ import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.analysis.record.Record;
import org.apache.skywalking.oap.server.core.analysis.record.annotation.RecordType;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ALARM;
+
/**
* @author peng-yongsheng
*/
@Getter
@Setter
@RecordType
-@StorageEntity(name = AlarmRecord.INDEX_NAME, builder = AlarmRecord.Builder.class, source = Scope.Alarm)
+@ScopeDeclaration(id = ALARM, name = "Alarm")
+@StorageEntity(name = AlarmRecord.INDEX_NAME, builder = AlarmRecord.Builder.class, sourceScopeId = DefaultScopeDefine.ALARM)
public class AlarmRecord extends Record {
public static final String INDEX_NAME = "alarm_record";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java
index 2fec9ae..326affc 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java
@@ -39,7 +39,7 @@ public class AlarmStandardPersistence implements AlarmCallback {
}
AlarmRecord record = new AlarmRecord();
- record.setScope(message.getScope().ordinal());
+ record.setScope(message.getScopeId());
record.setId0(message.getId0());
record.setId1(message.getId1());
record.setName(message.getName());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java
index 10b859f..6438c68 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java
@@ -21,7 +21,7 @@ package org.apache.skywalking.oap.server.core.alarm;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
@Getter(AccessLevel.PUBLIC)
@Setter(AccessLevel.PUBLIC)
@@ -33,8 +33,8 @@ public class EndpointMetaInAlarm extends MetaInAlarm {
private String[] tags;
private String[] properties;
- @Override public Scope getScope() {
- return Scope.Endpoint;
+ @Override public int getScopeId() {
+ return DefaultScopeDefine.ENDPOINT;
}
@Override public int getId0() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/MetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/MetaInAlarm.java
index 7fe9ea2..0d55f07 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/MetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/MetaInAlarm.java
@@ -19,10 +19,9 @@
package org.apache.skywalking.oap.server.core.alarm;
import java.util.Objects;
-import org.apache.skywalking.oap.server.core.source.Scope;
public abstract class MetaInAlarm {
- public abstract Scope getScope();
+ public abstract int getScopeId();
public abstract String getName();
@@ -30,7 +29,7 @@ public abstract class MetaInAlarm {
/**
* In most scopes, there is only id0, as primary id. Such as Service, Endpoint. But in relation, the ID includes
- * two, actually. Such as ServiceRelation, id0 represents the source service id
+ * two, actually. Such as ServiceRelation, id0 represents the sourceScopeId service id
*
* @return the primary id.
*/
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
index 4c8862a..09fca31 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
@@ -21,7 +21,7 @@ package org.apache.skywalking.oap.server.core.alarm;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
@Getter(AccessLevel.PUBLIC)
@Setter(AccessLevel.PUBLIC)
@@ -33,8 +33,8 @@ public class ServiceInstanceMetaInAlarm extends MetaInAlarm {
private String[] tags;
private String[] properties;
- @Override public Scope getScope() {
- return Scope.ServiceInstance;
+ @Override public int getScopeId() {
+ return DefaultScopeDefine.SERVICE_INSTANCE;
}
@Override public int getId0() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java
index e8359ed..192b118 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java
@@ -21,7 +21,7 @@ package org.apache.skywalking.oap.server.core.alarm;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
@Getter(AccessLevel.PUBLIC)
@Setter(AccessLevel.PUBLIC)
@@ -33,8 +33,8 @@ public class ServiceMetaInAlarm extends MetaInAlarm {
private String[] tags;
private String[] properties;
- @Override public Scope getScope() {
- return Scope.Service;
+ @Override public int getScopeId() {
+ return DefaultScopeDefine.SERVICE;
}
@Override public int getId0() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java
index 61602a6..f84ee9d 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/DispatcherManager.java
@@ -21,17 +21,11 @@ package org.apache.skywalking.oap.server.core.analysis;
import com.google.common.collect.ImmutableSet;
import com.google.common.reflect.ClassPath;
import java.io.IOException;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.lang.reflect.*;
+import java.util.*;
import org.apache.skywalking.oap.server.core.UnexpectedException;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.source.Source;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.slf4j.*;
/**
* @author peng-yongsheng, wusheng
@@ -40,7 +34,7 @@ public class DispatcherManager {
private static final Logger logger = LoggerFactory.getLogger(DispatcherManager.class);
- private Map<Scope, List<SourceDispatcher>> dispatcherMap;
+ private Map<Integer, List<SourceDispatcher>> dispatcherMap;
public DispatcherManager() {
this.dispatcherMap = new HashMap<>();
@@ -51,8 +45,17 @@ public class DispatcherManager {
return;
}
- for (SourceDispatcher dispatcher : dispatcherMap.get(source.scope())) {
- dispatcher.dispatch(source);
+ List<SourceDispatcher> dispatchers = dispatcherMap.get(source.scope());
+
+ /**
+ * Dispatcher is only generated by oal script analysis result.
+ * So these will/could be possible, the given source doesn't have the dispatcher,
+ * when the receiver is open, and oal script doesn't ask for analysis.
+ */
+ if (dispatchers != null) {
+ for (SourceDispatcher dispatcher : dispatchers) {
+ dispatcher.dispatch(source);
+ }
}
}
@@ -93,17 +96,17 @@ public class DispatcherManager {
Source dispatcherSource = (Source)source;
SourceDispatcher dispatcher = (SourceDispatcher)aClass.newInstance();
- Scope scope = dispatcherSource.scope();
+ int scopeId = dispatcherSource.scope();
- List<SourceDispatcher> dispatchers = this.dispatcherMap.get(scope);
+ List<SourceDispatcher> dispatchers = this.dispatcherMap.get(scopeId);
if (dispatchers == null) {
dispatchers = new ArrayList<>();
- this.dispatcherMap.put(scope, dispatchers);
+ this.dispatcherMap.put(scopeId, dispatchers);
}
dispatchers.add(dispatcher);
- logger.info("Dispatcher {} is added into Scope {}.", dispatcher.getClass().getName(), scope);
+ logger.info("Dispatcher {} is added into DefaultScopeDefine {}.", dispatcher.getClass().getName(), scopeId);
}
}
}
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 2456486..7ea0ca4 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
@@ -20,10 +20,9 @@ package org.apache.skywalking.oap.server.core.analysis.manual.database;
import java.util.*;
import lombok.*;
-import org.apache.skywalking.oap.server.core.*;
import org.apache.skywalking.oap.server.core.analysis.topn.TopN;
import org.apache.skywalking.oap.server.core.analysis.topn.annotation.TopNType;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
@@ -33,7 +32,7 @@ import org.apache.skywalking.oap.server.core.storage.annotation.*;
* @author wusheng
*/
@TopNType
-@StorageEntity(name = TopNDatabaseStatement.INDEX_NAME, builder = TopNDatabaseStatement.Builder.class, source = Scope.DatabaseSlowStatement)
+@StorageEntity(name = TopNDatabaseStatement.INDEX_NAME, builder = TopNDatabaseStatement.Builder.class, sourceScopeId = DefaultScopeDefine.DATABASE_SLOW_STATEMENT)
public class TopNDatabaseStatement extends TopN {
public static final String INDEX_NAME = "top_n_database_statement";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpointrelation/EndpointRelationServerSideIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpointrelation/EndpointRelationServerSideIndicator.java
index 78d6139..3e6a1e3 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpointrelation/EndpointRelationServerSideIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpointrelation/EndpointRelationServerSideIndicator.java
@@ -25,13 +25,13 @@ import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
@IndicatorType
@StreamData
-@StorageEntity(name = EndpointRelationServerSideIndicator.INDEX_NAME, builder = EndpointRelationServerSideIndicator.Builder.class, source = Scope.EndpointRelation)
+@StorageEntity(name = EndpointRelationServerSideIndicator.INDEX_NAME, builder = EndpointRelationServerSideIndicator.Builder.class, sourceScopeId = DefaultScopeDefine.ENDPOINT_RELATION)
public class EndpointRelationServerSideIndicator extends Indicator {
public static final String INDEX_NAME = "endpoint_relation_server_side";
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 b98e774..ae1b56c 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
@@ -24,7 +24,7 @@ import org.apache.skywalking.apm.util.StringUtil;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.analysis.record.Record;
import org.apache.skywalking.oap.server.core.analysis.record.annotation.RecordType;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.apache.skywalking.oap.server.library.util.CollectionUtils;
@@ -33,7 +33,7 @@ import org.apache.skywalking.oap.server.library.util.CollectionUtils;
* @author peng-yongsheng
*/
@RecordType
-@StorageEntity(name = SegmentRecord.INDEX_NAME, builder = SegmentRecord.Builder.class, source = Scope.Segment)
+@StorageEntity(name = SegmentRecord.INDEX_NAME, builder = SegmentRecord.Builder.class, sourceScopeId = DefaultScopeDefine.SEGMENT)
public class SegmentRecord extends Record {
public static final String INDEX_NAME = "segment";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationClientSideIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationClientSideIndicator.java
index b0f1855..7e740da 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationClientSideIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationClientSideIndicator.java
@@ -25,13 +25,13 @@ import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
@IndicatorType
@StreamData
-@StorageEntity(name = ServiceRelationClientSideIndicator.INDEX_NAME, builder = ServiceRelationClientSideIndicator.Builder.class, source = Scope.ServiceRelation)
+@StorageEntity(name = ServiceRelationClientSideIndicator.INDEX_NAME, builder = ServiceRelationClientSideIndicator.Builder.class, sourceScopeId = DefaultScopeDefine.SERVICE_RELATION)
public class ServiceRelationClientSideIndicator extends Indicator {
public static final String INDEX_NAME = "service_relation_client_side";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationServerSideIndicator.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationServerSideIndicator.java
index e24cc61..3dea780 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationServerSideIndicator.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/servicerelation/ServiceRelationServerSideIndicator.java
@@ -25,14 +25,14 @@ import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
@IndicatorType
@StreamData
@StorageEntity(name = ServiceRelationServerSideIndicator.INDEX_NAME, builder = ServiceRelationServerSideIndicator.Builder.class,
- source = Scope.ServiceRelation)
+ sourceScopeId = DefaultScopeDefine.SERVICE_RELATION)
public class ServiceRelationServerSideIndicator extends Indicator {
public static final String INDEX_NAME = "service_relation_server_side";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
index 7d9cd8a..3d70fd4 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/annotation/AnnotationScan.java
@@ -56,7 +56,9 @@ public class AnnotationScan {
listener.complete()
);
- callBack.run();
+ if (callBack != null) {
+ callBack.run();
+ }
}
public class AnnotationListenerCache {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AlarmQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AlarmQueryService.java
index 9533cbe..30a30aa 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AlarmQueryService.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AlarmQueryService.java
@@ -20,7 +20,6 @@ package org.apache.skywalking.oap.server.core.query;
import java.io.IOException;
import org.apache.skywalking.oap.server.core.query.entity.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.StorageModule;
import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO;
import org.apache.skywalking.oap.server.library.module.*;
@@ -48,9 +47,9 @@ public class AlarmQueryService implements Service {
return alarmQueryDAO;
}
- public Alarms getAlarm(final Scope scope, final String keyword, final Pagination paging, final long startTB,
+ public Alarms getAlarm(final Integer scopeId, final String keyword, final Pagination paging, final long startTB,
final long endTB) throws IOException {
PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging);
- return getAlarmQueryDAO().getAlarm(scope, keyword, page.getLimit(), page.getFrom(), startTB, endTB);
+ return getAlarmQueryDAO().getAlarm(scopeId, keyword, page.getLimit(), page.getFrom(), startTB, endTB);
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmMessage.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmMessage.java
index 99bf234..b179378 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmMessage.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmMessage.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
/**
* @author peng-yongsheng
@@ -28,6 +27,7 @@ import org.apache.skywalking.oap.server.core.source.Scope;
@Setter
public class AlarmMessage {
private Scope scope;
+ private int scopeId;
private String id;
private String message;
private Long startTime;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Scope.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Scope.java
new file mode 100644
index 0000000..be8b793
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Scope.java
@@ -0,0 +1,57 @@
+/*
+ * 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.query.entity;
+
+import java.util.HashMap;
+import lombok.Getter;
+import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+
+/**
+ * @author wusheng
+ */
+public enum Scope {
+ Service(DefaultScopeDefine.SERVICE),
+ ServiceInstance(DefaultScopeDefine.SERVICE_INSTANCE),
+ Endpoint(DefaultScopeDefine.ENDPOINT),
+ ServiceRelation(DefaultScopeDefine.SERVICE_RELATION),
+ ServiceInstanceRelation(DefaultScopeDefine.SERVICE_INSTANCE_RELATION),
+ EndpointRelation(DefaultScopeDefine.ENDPOINT_RELATION);
+
+ @Getter
+ private int scopeId;
+
+ Scope(int scopeId) {
+ this.scopeId = scopeId;
+ Finder.ALL_QUERY_SCOPES.put(scopeId, this);
+ }
+
+ public static class Finder {
+ private static HashMap<Integer, Scope> ALL_QUERY_SCOPES = new HashMap<>();
+
+ public static Scope valueOf(int scopeId) {
+ Scope scope = ALL_QUERY_SCOPES.get(scopeId);
+ if (scope == null) {
+ throw new UnexpectedException("Can't find scope id =" + scopeId);
+ }
+ return scope;
+ }
+ }
+
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/EndpointInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/EndpointInventory.java
index a643623..89e8b0b 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/EndpointInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/EndpointInventory.java
@@ -24,17 +24,20 @@ import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.register.annotation.InventoryType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.elasticsearch.common.Strings;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT_INVENTORY;
+
/**
* @author peng-yongsheng
*/
@InventoryType
@StreamData
-@StorageEntity(name = EndpointInventory.MODEL_NAME, builder = EndpointInventory.Builder.class, deleteHistory = false, source = Scope.EndpointInventory)
+@ScopeDeclaration(id = ENDPOINT_INVENTORY, name = "EndpointInventory")
+@StorageEntity(name = EndpointInventory.MODEL_NAME, builder = EndpointInventory.Builder.class, deleteHistory = false, sourceScopeId = DefaultScopeDefine.ENDPOINT_INVENTORY)
public class EndpointInventory extends RegisterSource {
public static final String MODEL_NAME = "endpoint_inventory";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java
index 4572e3d..1510c29 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java
@@ -24,17 +24,20 @@ import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.register.annotation.InventoryType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.elasticsearch.common.Strings;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.NETWORK_ADDRESS;
+
/**
* @author peng-yongsheng
*/
@InventoryType
@StreamData
-@StorageEntity(name = NetworkAddressInventory.MODEL_NAME, builder = NetworkAddressInventory.Builder.class, deleteHistory = false, source = Scope.NetworkAddress)
+@ScopeDeclaration(id = NETWORK_ADDRESS, name = "NetworkAddress")
+@StorageEntity(name = NetworkAddressInventory.MODEL_NAME, builder = NetworkAddressInventory.Builder.class, deleteHistory = false, sourceScopeId = DefaultScopeDefine.NETWORK_ADDRESS)
public class NetworkAddressInventory extends RegisterSource {
public static final String MODEL_NAME = "network_address_inventory";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
index 196a674..ca49439 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
@@ -26,18 +26,21 @@ import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.register.annotation.InventoryType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.apache.skywalking.oap.server.library.util.BooleanUtils;
import org.elasticsearch.common.Strings;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_INVENTORY;
+
/**
* @author peng-yongsheng
*/
@InventoryType
@StreamData
-@StorageEntity(name = ServiceInstanceInventory.MODEL_NAME, builder = ServiceInstanceInventory.Builder.class, deleteHistory = false, source = Scope.ServiceInstanceInventory)
+@ScopeDeclaration(id = SERVICE_INSTANCE_INVENTORY, name = "ServiceInstanceInventory")
+@StorageEntity(name = ServiceInstanceInventory.MODEL_NAME, builder = ServiceInstanceInventory.Builder.class, deleteHistory = false, sourceScopeId = DefaultScopeDefine.SERVICE_INSTANCE_INVENTORY)
public class ServiceInstanceInventory extends RegisterSource {
public static final String MODEL_NAME = "service_instance_inventory";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
index f8b3546..bcdee42 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
@@ -25,18 +25,21 @@ import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.register.annotation.InventoryType;
import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.*;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
import org.apache.skywalking.oap.server.core.storage.annotation.*;
import org.apache.skywalking.oap.server.library.util.BooleanUtils;
import org.elasticsearch.common.Strings;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INVENTORY;
+
/**
* @author peng-yongsheng
*/
@InventoryType
@StreamData
-@StorageEntity(name = ServiceInventory.MODEL_NAME, builder = ServiceInventory.Builder.class, deleteHistory = false, source = Scope.ServiceInventory)
+@ScopeDeclaration(id = SERVICE_INVENTORY, name = "ServiceInventory")
+@StorageEntity(name = ServiceInventory.MODEL_NAME, builder = ServiceInventory.Builder.class, deleteHistory = false, sourceScopeId = DefaultScopeDefine.SERVICE_INVENTORY)
public class ServiceInventory extends RegisterSource {
public static final String MODEL_NAME = "service_inventory";
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/InventoryProcess.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/InventoryProcess.java
index cd6f35f..ab7e83b 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/InventoryProcess.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/InventoryProcess.java
@@ -18,20 +18,12 @@
package org.apache.skywalking.oap.server.core.register.worker;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import org.apache.skywalking.oap.server.core.UnexpectedException;
import org.apache.skywalking.oap.server.core.register.RegisterSource;
-import org.apache.skywalking.oap.server.core.source.Scope;
-import org.apache.skywalking.oap.server.core.storage.IRegisterDAO;
-import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
-import org.apache.skywalking.oap.server.core.storage.StorageDAO;
-import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.*;
import org.apache.skywalking.oap.server.core.storage.annotation.StorageEntityAnnotationUtils;
-import org.apache.skywalking.oap.server.core.worker.WorkerIdGenerator;
-import org.apache.skywalking.oap.server.core.worker.WorkerInstances;
+import org.apache.skywalking.oap.server.core.worker.*;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
/**
@@ -48,7 +40,7 @@ public enum InventoryProcess {
public void create(ModuleManager moduleManager, Class<? extends RegisterSource> inventoryClass) {
String modelName = StorageEntityAnnotationUtils.getModelName(inventoryClass);
- Scope scope = StorageEntityAnnotationUtils.getSourceScope(inventoryClass);
+ int scopeId = StorageEntityAnnotationUtils.getSourceScope(inventoryClass);
Class<? extends StorageBuilder> builderClass = StorageEntityAnnotationUtils.getBuilder(inventoryClass);
@@ -60,7 +52,7 @@ public enum InventoryProcess {
throw new UnexpectedException("");
}
- RegisterPersistentWorker persistentWorker = new RegisterPersistentWorker(WorkerIdGenerator.INSTANCES.generate(), modelName, moduleManager, registerDAO, scope);
+ RegisterPersistentWorker persistentWorker = new RegisterPersistentWorker(WorkerIdGenerator.INSTANCES.generate(), modelName, moduleManager, registerDAO, scopeId);
WorkerInstances.INSTANCES.put(persistentWorker.getWorkerId(), persistentWorker);
RegisterRemoteWorker remoteWorker = new RegisterRemoteWorker(WorkerIdGenerator.INSTANCES.generate(), moduleManager, persistentWorker);
@@ -73,7 +65,7 @@ public enum InventoryProcess {
}
/**
- * @return all register source class types
+ * @return all register sourceScopeId class types
*/
public List<Class> getAllRegisterSources() {
List allSources = new ArrayList<>();
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java
index 2bd11e5..3cbfc93 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/worker/RegisterPersistentWorker.java
@@ -24,7 +24,7 @@ import org.apache.skywalking.apm.commons.datacarrier.consumer.*;
import org.apache.skywalking.oap.server.core.*;
import org.apache.skywalking.oap.server.core.analysis.data.EndOfBatchContext;
import org.apache.skywalking.oap.server.core.register.RegisterSource;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.*;
import org.apache.skywalking.oap.server.core.worker.AbstractWorker;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
@@ -37,7 +37,7 @@ public class RegisterPersistentWorker extends AbstractWorker<RegisterSource> {
private static final Logger logger = LoggerFactory.getLogger(RegisterPersistentWorker.class);
- private final Scope scope;
+ private final int scopeId;
private final String modelName;
private final Map<RegisterSource, RegisterSource> sources;
private final IRegisterLockDAO registerLockDAO;
@@ -45,13 +45,13 @@ public class RegisterPersistentWorker extends AbstractWorker<RegisterSource> {
private final DataCarrier<RegisterSource> dataCarrier;
RegisterPersistentWorker(int workerId, String modelName, ModuleManager moduleManager,
- IRegisterDAO registerDAO, Scope scope) {
+ IRegisterDAO registerDAO, int scopeId) {
super(workerId);
this.modelName = modelName;
this.sources = new HashMap<>();
this.registerDAO = registerDAO;
this.registerLockDAO = moduleManager.find(StorageModule.NAME).provider().getService(IRegisterLockDAO.class);
- this.scope = scope;
+ this.scopeId = scopeId;
this.dataCarrier = new DataCarrier<>("IndicatorPersistentWorker." + modelName, 1, 1000);
String name = "REGISTER_L2";
@@ -91,7 +91,7 @@ public class RegisterPersistentWorker extends AbstractWorker<RegisterSource> {
}
} else {
int sequence;
- if ((sequence = registerLockDAO.getId(scope, registerSource)) != Const.NONE) {
+ if ((sequence = registerLockDAO.getId(scopeId, registerSource)) != Const.NONE) {
try {
dbSource = registerDAO.get(modelName, source.id());
if (Objects.nonNull(dbSource)) {
@@ -106,7 +106,7 @@ public class RegisterPersistentWorker extends AbstractWorker<RegisterSource> {
logger.error(t.getMessage(), t);
}
} else {
- logger.info("{} inventory register try lock and increment sequence failure.", scope.name());
+ logger.info("{} inventory register try lock and increment sequence failure.", DefaultScopeDefine.nameOf(scopeId));
}
}
} catch (Throwable t) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/All.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/All.java
index 0be4324..ea2830b 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/All.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/All.java
@@ -18,17 +18,16 @@
package org.apache.skywalking.oap.server.core.source;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+import lombok.*;
-@SourceType
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ALL;
+
+@ScopeDeclaration(id = ALL, name = "All")
public class All extends Source {
- @Override public Scope scope() {
- return Scope.All;
+ @Override public int scope() {
+ return DefaultScopeDefine.ALL;
}
-
@Override public String getEntityId() {
return "";
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java
index 0bb1e9d..67a17fb 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java
@@ -18,17 +18,19 @@
package org.apache.skywalking.oap.server.core.source;
-import lombok.Getter;
-import lombok.Setter;
+import lombok.*;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.DATABASE_ACCESS;
/**
* @author: liuhaoyang
*/
+@ScopeDeclaration(id = DATABASE_ACCESS, name = "DatabaseAccess")
public class DatabaseAccess extends Source {
@Override
- public Scope scope() {
- return Scope.DatabaseAccess;
+ public int scope() {
+ return DefaultScopeDefine.DATABASE_ACCESS;
}
@Override
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseSlowStatement.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseSlowStatement.java
index 254a5e7..667d413 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseSlowStatement.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseSlowStatement.java
@@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.core.source;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.DATABASE_SLOW_STATEMENT;
/**
* @author wusheng
*/
-@SourceType
+@ScopeDeclaration(id = DATABASE_SLOW_STATEMENT, name = "DatabaseSlowStatement")
public class DatabaseSlowStatement extends Source {
@Getter @Setter private String id;
@Getter @Setter private int databaseServiceId;
@@ -33,8 +34,8 @@ public class DatabaseSlowStatement extends Source {
@Getter @Setter private long latency;
@Getter @Setter private String traceId;
- @Override public Scope scope() {
- return Scope.DatabaseSlowStatement;
+ @Override public int scope() {
+ return DefaultScopeDefine.DATABASE_SLOW_STATEMENT;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
new file mode 100644
index 0000000..4bf9b6d
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
@@ -0,0 +1,100 @@
+/*
+ * 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.source;
+
+import java.lang.annotation.Annotation;
+import java.util.*;
+import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.annotation.AnnotationListener;
+
+/**
+ * @author peng-yongsheng, wusheng
+ */
+
+public class DefaultScopeDefine {
+ private static final Map<String, Integer> NAME_2_ID = new HashMap<>();
+ private static final Map<Integer, String> ID_2_NAME = new HashMap<>();
+
+ public static final int ALL = 0;
+ public static final int SERVICE = 1;
+ public static final int SERVICE_INSTANCE = 2;
+ public static final int ENDPOINT = 3;
+ public static final int SERVICE_RELATION = 4;
+ public static final int SERVICE_INSTANCE_RELATION = 5;
+ public static final int ENDPOINT_RELATION = 6;
+ public static final int NETWORK_ADDRESS = 7;
+ public static final int SERVICE_INSTANCE_JVM_CPU = 8;
+ public static final int SERVICE_INSTANCE_JVM_MEMORY = 9;
+ public static final int SERVICE_INSTANCE_JVM_MEMORY_POOL = 10;
+ public static final int SERVICE_INSTANCE_JVM_GC = 11;
+ public static final int SEGMENT = 12;
+ public static final int ALARM = 13;
+ public static final int SERVICE_INVENTORY = 14;
+ public static final int SERVICE_INSTANCE_INVENTORY = 15;
+ public static final int ENDPOINT_INVENTORY = 16;
+ public static final int DATABASE_ACCESS = 17;
+ public static final int DATABASE_SLOW_STATEMENT = 18;
+
+ public static class Listener implements AnnotationListener {
+ @Override public Class<? extends Annotation> annotation() {
+ return ScopeDeclaration.class;
+ }
+
+ @Override public void notify(Class originalClass) {
+ ScopeDeclaration declaration = (ScopeDeclaration)originalClass.getAnnotation(ScopeDeclaration.class);
+ if (declaration != null) {
+ addNewScope(declaration, originalClass);
+ }
+ }
+ }
+
+ public static final void addNewScope(ScopeDeclaration declaration, Class originalClass) {
+ int id = declaration.id();
+ if (ID_2_NAME.containsKey(id)) {
+ throw new UnexpectedException("ScopeDeclaration id=" + id + " at " + originalClass.getName() + " has conflict with another named " + ID_2_NAME.get(id));
+ }
+ String name = declaration.name();
+ if (NAME_2_ID.containsKey(name)) {
+ throw new UnexpectedException("ScopeDeclaration name=" + name + " at " + originalClass.getName() + " has conflict with another id= " + NAME_2_ID.get(name));
+ }
+ ID_2_NAME.put(id, name);
+ NAME_2_ID.put(name, id);
+ }
+
+ public static String nameOf(int id) {
+ String name = ID_2_NAME.get(id);
+ if (name == null) {
+ throw new UnexpectedException("ScopeDefine id = " + id + " not found.");
+ }
+ return name;
+ }
+
+ public static int valueOf(String name) {
+ Integer id = NAME_2_ID.get(name);
+ if (id == null) {
+ throw new UnexpectedException("ScopeDefine name = " + name + " not found.");
+ }
+ return id;
+ }
+
+ public static void reset() {
+ NAME_2_ID.clear();
+ ID_2_NAME.clear();
+ }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
index 17e2ed7..7879c79 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
@@ -19,15 +19,16 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT;
/**
* @author peng-yongsheng
*/
-@SourceType
+@ScopeDeclaration(id = ENDPOINT, name = "Endpoint")
public class Endpoint extends Source {
- @Override public Scope scope() {
- return Scope.Endpoint;
+ @Override public int scope() {
+ return DefaultScopeDefine.ENDPOINT;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
index 534309f..648daec 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
@@ -21,13 +21,16 @@ package org.apache.skywalking.oap.server.core.source;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT_RELATION;
+
/**
* @author peng-yongsheng
*/
+@ScopeDeclaration(id = ENDPOINT_RELATION, name = "EndpointRelation")
public class EndpointRelation extends Source {
- @Override public Scope scope() {
- return Scope.EndpointRelation;
+ @Override public int scope() {
+ return DefaultScopeDefine.ENDPOINT_RELATION;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
deleted file mode 100644
index fd66299..0000000
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.source;
-
-/**
- * @author peng-yongsheng, wusheng
- */
-public enum Scope {
- All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress,
- ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC,
- Segment, Alarm, ServiceInventory, ServiceInstanceInventory, EndpointInventory, DatabaseAccess, DatabaseSlowStatement;
-
- public static Scope valueOf(int ordinal) {
- if (ordinal < 0 || ordinal >= values().length) {
- throw new IndexOutOfBoundsException("Invalid ordinal");
- }
- return values()[ordinal];
- }
-}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDeclaration.java
similarity index 79%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDeclaration.java
index 5e6ab35..0f5f062 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDeclaration.java
@@ -18,15 +18,16 @@
package org.apache.skywalking.oap.server.core.source;
-import lombok.*;
+import java.lang.annotation.*;
/**
- * @author peng-yongsheng
+ * DefaultScopeDefine id declaration.
+ *
+ * @author wusheng
*/
-public abstract class Source {
- public abstract Scope scope();
-
- @Getter @Setter private long timeBucket;
-
- public abstract String getEntityId();
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ScopeDeclaration {
+ int id();
+ String name();
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java
index 5959aed..041cbf6 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Segment.java
@@ -19,16 +19,17 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SEGMENT;
/**
* @author peng-yongsheng
*/
-@SourceType
+@ScopeDeclaration(id = SEGMENT, name = "Segment")
public class Segment extends Source {
- @Override public Scope scope() {
- return Scope.Segment;
+ @Override public int scope() {
+ return DefaultScopeDefine.SEGMENT;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
index f59be7a..974596f 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
@@ -19,15 +19,16 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE;
/**
* @author wusheng, peng-yongsheng
*/
-@SourceType
+@ScopeDeclaration(id = SERVICE, name = "Service")
public class Service extends Source {
- @Override public Scope scope() {
- return Scope.Service;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java
index 4a96727..63d71a9 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java
@@ -19,15 +19,16 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE;
/**
* @author peng-yongsheng
*/
-@SourceType
+@ScopeDeclaration(id = SERVICE_INSTANCE, name = "ServiceInstance")
public class ServiceInstance extends Source {
- @Override public Scope scope() {
- return Scope.ServiceInstance;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE_INSTANCE;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
index 4decea0..bbf0b49 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
@@ -19,15 +19,16 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_CPU;
/**
* @author peng-yongsheng
*/
-@SourceType
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_CPU, name = "ServiceInstanceJVMCPU")
public class ServiceInstanceJVMCPU extends Source {
- @Override public Scope scope() {
- return Scope.ServiceInstanceJVMCPU;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE_INSTANCE_JVM_CPU;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
index 865589d..0c005bc 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
@@ -19,15 +19,16 @@
package org.apache.skywalking.oap.server.core.source;
import lombok.*;
-import org.apache.skywalking.oap.server.core.source.annotation.SourceType;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_GC;
/**
* @author peng-yongsheng
*/
-@SourceType
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_GC, name = "ServiceInstanceJVMGC")
public class ServiceInstanceJVMGC extends Source {
- @Override public Scope scope() {
- return Scope.ServiceInstanceJVMGC;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE_INSTANCE_JVM_GC;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
index 37e4b98..9688f56 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
@@ -20,12 +20,15 @@ package org.apache.skywalking.oap.server.core.source;
import lombok.*;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY;
+
/**
* @author peng-yongsheng
*/
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_MEMORY, name = "ServiceInstanceJVMMemory")
public class ServiceInstanceJVMMemory extends Source {
- @Override public Scope scope() {
- return Scope.ServiceInstanceJVMMemory;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
index b7864a8..2e00932 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
@@ -20,12 +20,15 @@ package org.apache.skywalking.oap.server.core.source;
import lombok.*;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY_POOL;
+
/**
* @author peng-yongsheng
*/
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_MEMORY_POOL, name = "ServiceInstanceJVMMemoryPool")
public class ServiceInstanceJVMMemoryPool extends Source {
- @Override public Scope scope() {
- return Scope.ServiceInstanceJVMMemoryPool;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY_POOL;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java
index 07f34cb..27d4b65 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java
@@ -21,13 +21,16 @@ package org.apache.skywalking.oap.server.core.source;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_RELATION;
+
/**
* @author peng-yongsheng
*/
+@ScopeDeclaration(id = SERVICE_INSTANCE_RELATION, name = "ServiceInstanceRelation")
public class ServiceInstanceRelation extends Source {
- @Override public Scope scope() {
- return Scope.ServiceInstanceRelation;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE_INSTANCE_RELATION;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java
index f4a3a18..1f0d62b 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java
@@ -21,13 +21,16 @@ package org.apache.skywalking.oap.server.core.source;
import lombok.*;
import org.apache.skywalking.oap.server.core.Const;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_RELATION;
+
/**
* @author peng-yongsheng
*/
+@ScopeDeclaration(id = SERVICE_RELATION, name = "ServiceRelation")
public class ServiceRelation extends Source {
- @Override public Scope scope() {
- return Scope.ServiceRelation;
+ @Override public int scope() {
+ return DefaultScopeDefine.SERVICE_RELATION;
}
@Override public String getEntityId() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
index 5e6ab35..11e4e22 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Source.java
@@ -24,7 +24,7 @@ import lombok.*;
* @author peng-yongsheng
*/
public abstract class Source {
- public abstract Scope scope();
+ public abstract int scope();
@Getter @Setter private long timeBucket;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterLockDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterLockDAO.java
index 2edaa8f..034e4da 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterLockDAO.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/IRegisterLockDAO.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.core.storage;
import org.apache.skywalking.oap.server.core.register.RegisterSource;
-import org.apache.skywalking.oap.server.core.source.Scope;
/**
* Entity register and ID generator.
@@ -32,8 +31,8 @@ public interface IRegisterLockDAO extends DAO {
* in concurrent way, so no `sync` in method level, but the implementation must make sure the return id is unique no
* matter the cluster size.
*
- * @param scope for the id. IDs at different scopes could be same, but unique in same scope.
+ * @param scopeId for the id. IDs at different scopes could be same, but unique in same scope.
* @return Unique ID.
*/
- int getId(Scope scope, RegisterSource registerSource);
+ int getId(int scopeId, RegisterSource registerSource);
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageAnnotationListener.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageAnnotationListener.java
index e31f347..5fd5533 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageAnnotationListener.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageAnnotationListener.java
@@ -20,20 +20,13 @@ package org.apache.skywalking.oap.server.core.storage.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import lombok.Getter;
import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorAnnotationUtils;
import org.apache.skywalking.oap.server.core.annotation.AnnotationListener;
-import org.apache.skywalking.oap.server.core.source.Scope;
-import org.apache.skywalking.oap.server.core.storage.model.ColumnName;
-import org.apache.skywalking.oap.server.core.storage.model.IModelGetter;
-import org.apache.skywalking.oap.server.core.storage.model.IModelOverride;
-import org.apache.skywalking.oap.server.core.storage.model.Model;
-import org.apache.skywalking.oap.server.core.storage.model.ModelColumn;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+import org.apache.skywalking.oap.server.core.storage.model.*;
+import org.slf4j.*;
/**
* @author peng-yongsheng
@@ -57,12 +50,14 @@ public class StorageAnnotationListener implements AnnotationListener, IModelGett
String modelName = StorageEntityAnnotationUtils.getModelName(aClass);
boolean deleteHistory = StorageEntityAnnotationUtils.getDeleteHistory(aClass);
- Scope sourceScope = StorageEntityAnnotationUtils.getSourceScope(aClass);
+ int sourceScopeId = StorageEntityAnnotationUtils.getSourceScope(aClass);
+ // Check this scope id is valid.
+ DefaultScopeDefine.nameOf(sourceScopeId);
List<ModelColumn> modelColumns = new LinkedList<>();
boolean isIndicator = IndicatorAnnotationUtils.isIndicator(aClass);
retrieval(aClass, modelName, modelColumns);
- models.add(new Model(modelName, modelColumns, isIndicator, deleteHistory, sourceScope));
+ models.add(new Model(modelName, modelColumns, isIndicator, deleteHistory, sourceScopeId));
}
private void retrieval(Class clazz, String modelName, List<ModelColumn> modelColumns) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntity.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntity.java
index bbbc38f..1b53fdd 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntity.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntity.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.core.storage.annotation;
import java.lang.annotation.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
/**
@@ -32,7 +31,10 @@ public @interface StorageEntity {
Class<? extends StorageBuilder> builder();
- Scope source();
+ /**
+ * @return scope id.
+ */
+ int sourceScopeId();
boolean deleteHistory() default true;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntityAnnotationUtils.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntityAnnotationUtils.java
index b351f20..ecfebe4 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntityAnnotationUtils.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/annotation/StorageEntityAnnotationUtils.java
@@ -19,7 +19,6 @@
package org.apache.skywalking.oap.server.core.storage.annotation;
import org.apache.skywalking.oap.server.core.UnexpectedException;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
/**
@@ -54,10 +53,10 @@ public class StorageEntityAnnotationUtils {
}
}
- public static Scope getSourceScope(Class aClass) {
+ public static int getSourceScope(Class aClass) {
if (aClass.isAnnotationPresent(StorageEntity.class)) {
StorageEntity annotation = (StorageEntity)aClass.getAnnotation(StorageEntity.class);
- return annotation.source();
+ return annotation.sourceScopeId();
} else {
throw new UnexpectedException("");
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/Model.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/Model.java
index 07dc1c5..f847db7 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/Model.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/model/Model.java
@@ -20,7 +20,6 @@ package org.apache.skywalking.oap.server.core.storage.model;
import java.util.List;
import lombok.Getter;
-import org.apache.skywalking.oap.server.core.source.Scope;
/**
* @author peng-yongsheng
@@ -31,17 +30,18 @@ public class Model {
private final boolean isIndicator;
private final boolean deleteHistory;
private final List<ModelColumn> columns;
- private final Scope source;
+ private final int sourceScopeId;
- public Model(String name, List<ModelColumn> columns, boolean isIndicator, boolean deleteHistory, Scope source) {
+ public Model(String name, List<ModelColumn> columns, boolean isIndicator, boolean deleteHistory,
+ int sourceScopeId) {
this.name = name;
this.columns = columns;
this.isIndicator = isIndicator;
this.deleteHistory = deleteHistory;
- this.source = source;
+ this.sourceScopeId = sourceScopeId;
}
public Model copy(String name) {
- return new Model(name, columns, isIndicator, deleteHistory, source);
+ return new Model(name, columns, isIndicator, deleteHistory, sourceScopeId);
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAlarmQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAlarmQueryDAO.java
index 0f6d4cb..a4dcb94 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAlarmQueryDAO.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAlarmQueryDAO.java
@@ -19,8 +19,7 @@
package org.apache.skywalking.oap.server.core.storage.query;
import java.io.IOException;
-import org.apache.skywalking.oap.server.core.query.entity.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.query.entity.Alarms;
import org.apache.skywalking.oap.server.core.storage.DAO;
/**
@@ -28,6 +27,6 @@ import org.apache.skywalking.oap.server.core.storage.DAO;
*/
public interface IAlarmQueryDAO extends DAO {
- Alarms getAlarm(final Scope scope, final String keyword, final int limit, final int from, final long startTB,
+ Alarms getAlarm(final Integer scopeId, final String keyword, final int limit, final int from, final long startTB,
final long endTB) throws IOException;
}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java
index c69b162..0fc3fc6 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java
@@ -20,11 +20,10 @@ package org.apache.skywalking.oap.query.graphql.resolver;
import com.coxautodev.graphql.tools.GraphQLQueryResolver;
import java.io.IOException;
-import org.apache.skywalking.oap.query.graphql.type.Duration;
+import org.apache.skywalking.oap.query.graphql.type.*;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.query.*;
import org.apache.skywalking.oap.server.core.query.entity.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
/**
@@ -55,6 +54,6 @@ public class AlarmQuery implements GraphQLQueryResolver {
long startTimeBucket = DurationUtils.INSTANCE.startTimeDurationToSecondTimeBucket(duration.getStep(), duration.getStart());
long endTimeBucket = DurationUtils.INSTANCE.endTimeDurationToSecondTimeBucket(duration.getStep(), duration.getEnd());
- return getQueryService().getAlarm(scope, keyword, paging, startTimeBucket, endTimeBucket);
+ return getQueryService().getAlarm(scope.getScopeId(), keyword, paging, startTimeBucket, endTimeBucket);
}
}
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockDAOImpl.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockDAOImpl.java
index 3f7fdd0..a7b3830 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockDAOImpl.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockDAOImpl.java
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.util.Map;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.register.RegisterSource;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.IRegisterLockDAO;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base.EsDAO;
@@ -41,8 +40,8 @@ public class RegisterLockDAOImpl extends EsDAO implements IRegisterLockDAO {
super(client);
}
- @Override public int getId(Scope scope, RegisterSource registerSource) {
- String id = String.valueOf(scope.ordinal());
+ @Override public int getId(int scopeId, RegisterSource registerSource) {
+ String id = scopeId + "";
int sequence = Const.NONE;
try {
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockInstaller.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockInstaller.java
index cf6d253..72ff4f0 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockInstaller.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/lock/RegisterLockInstaller.java
@@ -20,7 +20,6 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.lock;
import java.io.IOException;
import org.apache.skywalking.oap.server.core.register.worker.InventoryProcess;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.StorageException;
import org.apache.skywalking.oap.server.core.storage.annotation.StorageEntityAnnotationUtils;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
@@ -56,8 +55,8 @@ public class RegisterLockInstaller {
}
for (Class registerSource : InventoryProcess.INSTANCE.getAllRegisterSources()) {
- Scope sourceScope = StorageEntityAnnotationUtils.getSourceScope(registerSource);
- putIfAbsent(sourceScope.ordinal());
+ int sourceScopeId = StorageEntityAnnotationUtils.getSourceScope(registerSource);
+ putIfAbsent(sourceScopeId);
}
} catch (IOException e) {
throw new StorageException(e.getMessage());
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AlarmQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AlarmQueryEsDAO.java
index 24272ec..5db788d 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AlarmQueryEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AlarmQueryEsDAO.java
@@ -23,7 +23,6 @@ import java.io.IOException;
import java.util.Objects;
import org.apache.skywalking.oap.server.core.alarm.AlarmRecord;
import org.apache.skywalking.oap.server.core.query.entity.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO;
import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
import org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base.*;
@@ -41,15 +40,16 @@ public class AlarmQueryEsDAO extends EsDAO implements IAlarmQueryDAO {
super(client);
}
- public Alarms getAlarm(final Scope scope, final String keyword, final int limit, final int from, final long startTB,
+ public Alarms getAlarm(final Integer scopeId, final String keyword, final int limit, final int from,
+ final long startTB,
final long endTB) throws IOException {
SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must().add(QueryBuilders.rangeQuery(AlarmRecord.TIME_BUCKET).gte(startTB).lte(endTB));
- if (Objects.nonNull(scope)) {
- boolQueryBuilder.must().add(QueryBuilders.termQuery(AlarmRecord.SCOPE, scope.ordinal()));
+ if (Objects.nonNull(scopeId)) {
+ boolQueryBuilder.must().add(QueryBuilders.termQuery(AlarmRecord.SCOPE, scopeId.intValue()));
}
if (!Strings.isNullOrEmpty(keyword)) {
@@ -74,7 +74,8 @@ public class AlarmQueryEsDAO extends EsDAO implements IAlarmQueryDAO {
message.setId(String.valueOf(alarmRecord.getId0()));
message.setMessage(alarmRecord.getAlarmMessage());
message.setStartTime(alarmRecord.getStartTime());
- message.setScope(Scope.valueOf(alarmRecord.getScope()));
+ message.setScope(Scope.Finder.valueOf(alarmRecord.getScope()));
+ message.setScopeId(alarmRecord.getScope());
alarms.getMsgs().add(message);
}
return alarms;
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java
index 1fa18f9..dc8a401 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2AlarmQueryDAO.java
@@ -23,7 +23,6 @@ import java.sql.*;
import java.util.*;
import org.apache.skywalking.oap.server.core.alarm.AlarmRecord;
import org.apache.skywalking.oap.server.core.query.entity.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO;
import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
import org.elasticsearch.common.Strings;
@@ -39,13 +38,15 @@ public class H2AlarmQueryDAO implements IAlarmQueryDAO {
}
@Override
- public Alarms getAlarm(Scope scope, String keyword, int limit, int from, long startTB,
+ public Alarms getAlarm(Integer scopeId, String keyword, int limit, int from, long startTB,
long endTB) throws IOException {
StringBuilder sql = new StringBuilder();
List<Object> parameters = new ArrayList<>(10);
sql.append("from ").append(AlarmRecord.INDEX_NAME).append(" where ");
sql.append(" 1=1 ");
+ sql.append(" and ").append(AlarmRecord.SCOPE).append(" = ?");
+ parameters.add(scopeId.intValue());
if (startTB != 0 && endTB != 0) {
sql.append(" and ").append(AlarmRecord.TIME_BUCKET).append(" >= ?");
parameters.add(startTB);
@@ -75,7 +76,8 @@ public class H2AlarmQueryDAO implements IAlarmQueryDAO {
message.setId(resultSet.getString(AlarmRecord.ID0));
message.setMessage(resultSet.getString(AlarmRecord.ALARM_MESSAGE));
message.setStartTime(resultSet.getLong(AlarmRecord.START_TIME));
- message.setScope(Scope.valueOf(resultSet.getInt(AlarmRecord.SCOPE)));
+ message.setScope(Scope.Finder.valueOf(resultSet.getInt(AlarmRecord.SCOPE)));
+ message.setScopeId(resultSet.getInt(AlarmRecord.SCOPE));
alarms.getMsgs().add(message);
}
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
index 12aabeb..1f235a7 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
@@ -217,7 +217,7 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO {
sql.append(EndpointInventory.SERVICE_ID).append("=?");
condition.add(serviceId);
if (!Strings.isNullOrEmpty(keyword)) {
- sql.append(" and ").append(EndpointInventory.NAME).append(" like \"%").append(keyword).append("%\" ");
+ sql.append(" and ").append(EndpointInventory.NAME).append(" like '%").append(keyword).append("%' ");
}
sql.append(" and ").append(EndpointInventory.DETECT_POINT).append(" = ?");
condition.add(DetectPoint.SERVER.ordinal());
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockDAO.java
index 1e3f204..91b63da 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockDAO.java
@@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
import java.sql.*;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.register.RegisterSource;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.IRegisterLockDAO;
import org.apache.skywalking.oap.server.library.client.jdbc.JDBCClientException;
import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
@@ -42,18 +41,18 @@ public class H2RegisterLockDAO implements IRegisterLockDAO {
this.h2Client = h2Client;
}
- @Override public int getId(Scope scope, RegisterSource registerSource) {
+ @Override public int getId(int scopeId, RegisterSource registerSource) {
try (Connection connection = h2Client.getTransactionConnection()) {
- ResultSet resultSet = h2Client.executeQuery(connection, "select sequence from " + H2RegisterLockInstaller.LOCK_TABLE_NAME + " where id = " + scope.ordinal() + " for update");
+ ResultSet resultSet = h2Client.executeQuery(connection, "select sequence from " + H2RegisterLockInstaller.LOCK_TABLE_NAME + " where id = " + scopeId + " for update");
while (resultSet.next()) {
int sequence = resultSet.getInt("sequence");
sequence++;
- h2Client.execute(connection, "update " + H2RegisterLockInstaller.LOCK_TABLE_NAME + " set sequence = " + sequence + " where id = " + scope.ordinal());
+ h2Client.execute(connection, "update " + H2RegisterLockInstaller.LOCK_TABLE_NAME + " set sequence = " + sequence + " where id = " + scopeId);
connection.commit();
return sequence;
}
} catch (JDBCClientException | SQLException e) {
- logger.error("try inventory register lock for scope id={} name={} failure.", scope.ordinal(), scope.name());
+ logger.error("try inventory register lock for scope id={} name={} failure.", scopeId, scopeId);
logger.error("tryLock error", e);
return Const.NONE;
}
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockInstaller.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockInstaller.java
index 572ba0c..21c5cf8 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockInstaller.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2RegisterLockInstaller.java
@@ -20,7 +20,7 @@ package org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao;
import java.sql.*;
import org.apache.skywalking.oap.server.core.register.worker.InventoryProcess;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.StorageException;
import org.apache.skywalking.oap.server.core.storage.annotation.StorageEntityAnnotationUtils;
import org.apache.skywalking.oap.server.library.client.Client;
@@ -60,8 +60,8 @@ public class H2RegisterLockInstaller {
h2Client.execute(connection, tableCreateSQL.toString());
for (Class registerSource : InventoryProcess.INSTANCE.getAllRegisterSources()) {
- Scope sourceScope = StorageEntityAnnotationUtils.getSourceScope(registerSource);
- putIfAbsent(h2Client, connection, sourceScope.ordinal(), sourceScope.name());
+ int scopeId = StorageEntityAnnotationUtils.getSourceScope(registerSource);
+ putIfAbsent(h2Client, connection, scopeId, DefaultScopeDefine.nameOf(scopeId));
}
} catch (JDBCClientException | SQLException e) {
throw new StorageException(e.getMessage(), e);
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java
index 582a01e..3c67196 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLAlarmQueryDAO.java
@@ -23,7 +23,6 @@ import java.sql.*;
import java.util.*;
import org.apache.skywalking.oap.server.core.alarm.AlarmRecord;
import org.apache.skywalking.oap.server.core.query.entity.*;
-import org.apache.skywalking.oap.server.core.source.Scope;
import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO;
import org.apache.skywalking.oap.server.library.client.jdbc.hikaricp.JDBCHikariCPClient;
import org.elasticsearch.common.Strings;
@@ -39,14 +38,15 @@ public class MySQLAlarmQueryDAO implements IAlarmQueryDAO {
}
@Override
- public Alarms getAlarm(Scope scope, String keyword, int limit, int from, long startTB,
+ public Alarms getAlarm(Integer scopeId, String keyword, int limit, int from, long startTB,
long endTB) throws IOException {
StringBuilder sql = new StringBuilder();
List<Object> parameters = new ArrayList<>(10);
sql.append("from ").append(AlarmRecord.INDEX_NAME).append(" where ");
- sql.append(" scope = ?");
- parameters.add(scope.ordinal());
+ sql.append(" 1=1 ");
+ sql.append(" and ").append(AlarmRecord.SCOPE).append(" = ?");
+ parameters.add(scopeId.intValue());
if (startTB != 0 && endTB != 0) {
sql.append(" and ").append(AlarmRecord.TIME_BUCKET).append(" >= ?");
parameters.add(startTB);
@@ -76,7 +76,8 @@ public class MySQLAlarmQueryDAO implements IAlarmQueryDAO {
message.setId(resultSet.getString(AlarmRecord.ID0));
message.setMessage(resultSet.getString(AlarmRecord.ALARM_MESSAGE));
message.setStartTime(resultSet.getLong(AlarmRecord.START_TIME));
- message.setScope(Scope.valueOf(resultSet.getInt(AlarmRecord.SCOPE)));
+ message.setScope(Scope.Finder.valueOf(resultSet.getInt(AlarmRecord.SCOPE)));
+ message.setScopeId(resultSet.getInt(AlarmRecord.SCOPE));
alarms.getMsgs().add(message);
}
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTableInstaller.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTableInstaller.java
index eeced14..a54216e 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTableInstaller.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/MySQLTableInstaller.java
@@ -23,7 +23,7 @@ import java.sql.SQLException;
import org.apache.skywalking.oap.server.core.analysis.indicator.IntKeyLongValueArray;
import org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord;
import org.apache.skywalking.oap.server.core.register.RegisterSource;
-import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
import org.apache.skywalking.oap.server.core.storage.StorageException;
import org.apache.skywalking.oap.server.core.storage.model.ColumnName;
import org.apache.skywalking.oap.server.core.storage.model.Model;
@@ -36,6 +36,8 @@ import org.apache.skywalking.oap.server.storage.plugin.jdbc.h2.dao.H2TableInstal
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.*;
+
/**
* Extend H2TableInstaller but match MySQL SQL syntax.
*
@@ -77,7 +79,7 @@ public class MySQLTableInstaller extends H2TableInstaller {
} else if (Double.class.equals(type) || double.class.equals(type)) {
return "DOUBLE";
} else if (String.class.equals(type)) {
- if (Scope.Segment.equals(model.getSource())) {
+ if (DefaultScopeDefine.SEGMENT == model.getSourceScopeId()) {
if (name.getName().equals(SegmentRecord.TRACE_ID) || name.getName().equals(SegmentRecord.SEGMENT_ID))
return "VARCHAR(300)";
}
@@ -92,17 +94,17 @@ public class MySQLTableInstaller extends H2TableInstaller {
}
protected void createIndexes(JDBCHikariCPClient client, Model model) throws StorageException {
- switch (model.getSource()) {
- case ServiceInventory:
- case ServiceInstanceInventory:
- case NetworkAddress:
- case EndpointInventory:
+ switch (model.getSourceScopeId()) {
+ case SERVICE_INVENTORY:
+ case SERVICE_INSTANCE_INVENTORY:
+ case NETWORK_ADDRESS:
+ case ENDPOINT_INVENTORY:
createInventoryIndexes(client, model);
return;
- case Segment:
+ case SEGMENT:
createSegmentIndexes(client, model);
return;
- case Alarm:
+ case ALARM:
createAlarmIndexes(client, model);
return;
default:
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/PreventRedistributionMySQLDriverTest.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/PreventRedistributionMySQLDriverTest.java
index 77db0fe..dbc13db 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/PreventRedistributionMySQLDriverTest.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/test/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/mysql/PreventRedistributionMySQLDriverTest.java
@@ -23,7 +23,7 @@ import org.junit.Test;
/**
* This is a very special test case. It isn't for feature testing.
*
- * In Apache, we can't redistribute MySQL Driver, because of GPL license, but we deliver MySQL solution source codes and
+ * In Apache, we can't redistribute MySQL Driver, because of GPL license, but we deliver MySQL solution sourceScopeId codes and
* distribution by using JDBC.
*
* @author wusheng