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 2021/04/05 12:12:02 UTC
[skywalking] branch master updated: Fix `disable` statement not
working (#6687)
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/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 2b85ba1 Fix `disable` statement not working (#6687)
2b85ba1 is described below
commit 2b85ba104175f0e121b381a4739101b7b7ee9cb8
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Mon Apr 5 20:11:34 2021 +0800
Fix `disable` statement not working (#6687)
---
CHANGES.md | 5 ++--
docs/en/concepts-and-designs/oal.md | 2 ++
.../src/main/resources/oal/core.oal | 11 --------
.../src/main/resources/oal/disable.oal | 31 ++++++++++++++++++++++
.../oap/server/core/CoreModuleProvider.java | 12 ++++++---
.../oap/server/core/oal/rt/DisableOALDefine.java | 30 +++++++++++++++++++++
6 files changed, 74 insertions(+), 17 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index 874566c..d4f8efa 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -69,8 +69,9 @@ Release Notes.
* Add function `retagByK8sMeta` and opt type `K8sRetagType.Pod2Service` in MAL for k8s to relate pods and services.
* Make the flushing metrics operation concurrent.
* Fix ALS K8SServiceRegistry didn't remove the correct entry.
-* Using "service.istio.io/canonical-name" to replace "app" label to resolve Envoy ALS service name
-* Append the root slash(/) to getIndex and getTemplate requests in ES client
+* Using "service.istio.io/canonical-name" to replace "app" label to resolve Envoy ALS service name.
+* Append the root slash(/) to getIndex and getTemplate requests in ES client.
+* Fix `disable` statement not working. This bug exists since 8.0.0.
#### UI
* Update selector scroller to show in all pages.
diff --git a/docs/en/concepts-and-designs/oal.md b/docs/en/concepts-and-designs/oal.md
index 168dc0a..533c79b 100644
--- a/docs/en/concepts-and-designs/oal.md
+++ b/docs/en/concepts-and-designs/oal.md
@@ -101,6 +101,8 @@ Some of the aggregation and metrics are defined through core hard codes. Example
This `disable` statement is designed to render them inactive.
By default, none of them are disabled.
+**NOTICE**, all disable statements should be in `oal/disable.oal` script file.
+
## Examples
```
// Calculate p99 of both Endpoint1 and Endpoint2
diff --git a/oap-server/server-bootstrap/src/main/resources/oal/core.oal b/oap-server/server-bootstrap/src/main/resources/oal/core.oal
index 48af721..e02934d 100755
--- a/oap-server/server-bootstrap/src/main/resources/oal/core.oal
+++ b/oap-server/server-bootstrap/src/main/resources/oal/core.oal
@@ -68,14 +68,3 @@ database_access_resp_time = from(DatabaseAccess.latency).longAvg();
database_access_sla = from(DatabaseAccess.*).percent(status == true);
database_access_cpm = from(DatabaseAccess.*).cpm();
database_access_percentile = from(DatabaseAccess.latency).percentile(10);
-
-// Disable unnecessary hard core stream, targeting @Stream#name
-/////////
-// disable(segment);
-// disable(endpoint_relation_server_side);
-// disable(top_n_database_statement);
-// disable(zipkin_span);
-// disable(jaeger_span);
-// disable(profile_task);
-// disable(profile_task_log);
-// disable(profile_task_segment_snapshot);
diff --git a/oap-server/server-bootstrap/src/main/resources/oal/disable.oal b/oap-server/server-bootstrap/src/main/resources/oal/disable.oal
new file mode 100644
index 0000000..fdaad52
--- /dev/null
+++ b/oap-server/server-bootstrap/src/main/resources/oal/disable.oal
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ *
+ */
+
+///////////////////////////////////////////////////////////////
+//
+// Disable unnecessary hard core stream, targeting @Stream#name
+//
+///////////////////////////////////////////////////////////////
+// disable(segment);
+// disable(endpoint_relation_server_side);
+// disable(top_n_database_statement);
+// disable(zipkin_span);
+// disable(jaeger_span);
+// disable(profile_task);
+// disable(profile_task_log);
+// disable(profile_task_segment_snapshot);
\ No newline at end of file
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 18d5ec4..3892989 100755
--- 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
@@ -50,6 +50,7 @@ import org.apache.skywalking.oap.server.core.config.group.EndpointNameGrouping;
import org.apache.skywalking.oap.server.core.config.group.EndpointNameGroupingRuleWatcher;
import org.apache.skywalking.oap.server.core.management.ui.template.UITemplateInitializer;
import org.apache.skywalking.oap.server.core.management.ui.template.UITemplateManagementService;
+import org.apache.skywalking.oap.server.core.oal.rt.DisableOALDefine;
import org.apache.skywalking.oap.server.core.oal.rt.OALEngineLoaderService;
import org.apache.skywalking.oap.server.core.profile.ProfileTaskMutationService;
import org.apache.skywalking.oap.server.core.query.AggregationQueryService;
@@ -118,6 +119,7 @@ public class CoreModuleProvider extends ModuleProvider {
private final SourceReceiverImpl receiver;
private ApdexThresholdConfig apdexThresholdConfig;
private EndpointNameGroupingRuleWatcher endpointNameGroupingRuleWatcher;
+ private OALEngineLoaderService oalEngineLoaderService;
public CoreModuleProvider() {
super();
@@ -161,8 +163,6 @@ public class CoreModuleProvider extends ModuleProvider {
throw new ModuleStartException(e.getMessage(), e);
}
- StreamAnnotationListener streamAnnotationListener = new StreamAnnotationListener(getManager());
-
AnnotationScan scopeScan = new AnnotationScan();
scopeScan.registerListener(new DefaultScopeDefine.Listener());
try {
@@ -264,9 +264,10 @@ public class CoreModuleProvider extends ModuleProvider {
this.registerServiceImplementation(CommandService.class, new CommandService(getManager()));
// add oal engine loader service implementations
- this.registerServiceImplementation(OALEngineLoaderService.class, new OALEngineLoaderService(getManager()));
+ oalEngineLoaderService = new OALEngineLoaderService(getManager());
+ this.registerServiceImplementation(OALEngineLoaderService.class, oalEngineLoaderService);
- annotationScan.registerListener(streamAnnotationListener);
+ annotationScan.registerListener(new StreamAnnotationListener(getManager()));
if (moduleConfig.isGRPCSslEnabled()) {
this.remoteClientManager = new RemoteClientManager(getManager(), moduleConfig.getRemoteTimeout(),
@@ -293,6 +294,9 @@ public class CoreModuleProvider extends ModuleProvider {
grpcServer.addHandler(new HealthCheckServiceHandler());
remoteClientManager.start();
+ // Disable OAL script has higher priority
+ oalEngineLoaderService.load(DisableOALDefine.INSTANCE);
+
try {
receiver.scan();
annotationScan.scan();
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/DisableOALDefine.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/DisableOALDefine.java
new file mode 100644
index 0000000..b5f6438
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/DisableOALDefine.java
@@ -0,0 +1,30 @@
+/*
+ * 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.oal.rt;
+
+public class DisableOALDefine extends OALDefine {
+ public static final DisableOALDefine INSTANCE = new DisableOALDefine();
+
+ private DisableOALDefine() {
+ super(
+ "oal/disable.oal",
+ "org.apache.skywalking.oap.server.core.source"
+ );
+ }
+}