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 ed5e729026 Init `log-mal-rules` at module provider start stage to
avoid re-init for every LAL (#13610)
ed5e729026 is described below
commit ed5e729026da621557b83b5dfa78e57ee0bc524a
Author: weixiang1862 <[email protected]>
AuthorDate: Sat Dec 13 14:21:59 2025 +0800
Init `log-mal-rules` at module provider start stage to avoid re-init for
every LAL (#13610)
---
docs/en/changes/changes.md | 1 +
.../oap/log/analyzer/dsl/spec/extractor/ExtractorSpec.java | 12 +++++-------
.../oap/log/analyzer/provider/LogAnalyzerModuleProvider.java | 12 ++++++++++++
.../org/apache/skywalking/oap/log/analyzer/dsl/DSLTest.java | 7 +++++++
4 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index a209491394..edcc5fa985 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -8,6 +8,7 @@
* KubernetesCoordinator: make self instance return real pod IP address instead
of `127.0.0.1`.
* Enhance the alarm kernel with recovered status notification capability
* Fix BrowserWebVitalsPerfData `clsTime` to `cls` and make it double type.
+* Init `log-mal-rules` at module provider start stage to avoid re-init for
every LAL.
#### UI
* Fix the missing icon in new native trace view.
diff --git
a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/extractor/ExtractorSpec.java
b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/extractor/ExtractorSpec.java
index 6c229f6f69..ee9e58e72e 100644
---
a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/extractor/ExtractorSpec.java
+++
b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/extractor/ExtractorSpec.java
@@ -38,7 +38,9 @@ import
org.apache.skywalking.apm.network.logging.v3.TraceContext;
import org.apache.skywalking.oap.log.analyzer.dsl.spec.AbstractSpec;
import
org.apache.skywalking.oap.log.analyzer.dsl.spec.extractor.sampledtrace.SampledTraceSpec;
import
org.apache.skywalking.oap.log.analyzer.dsl.spec.extractor.slowsql.SlowSqlSpec;
+import org.apache.skywalking.oap.log.analyzer.module.LogAnalyzerModule;
import org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleConfig;
+import
org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleProvider;
import org.apache.skywalking.oap.meter.analyzer.MetricConvert;
import org.apache.skywalking.oap.meter.analyzer.dsl.Sample;
import org.apache.skywalking.oap.meter.analyzer.dsl.SampleFamily;
@@ -49,7 +51,6 @@ import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.analysis.DownSampling;
import org.apache.skywalking.oap.server.core.analysis.Layer;
import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
-import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
import org.apache.skywalking.oap.server.core.analysis.record.Record;
import
org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor;
import org.apache.skywalking.oap.server.core.config.NamingControl;
@@ -82,13 +83,10 @@ public class ExtractorSpec extends AbstractSpec {
final LogAnalyzerModuleConfig moduleConfig) throws
ModuleStartException {
super(moduleManager, moduleConfig);
- final MeterSystem meterSystem =
-
moduleManager.find(CoreModule.NAME).provider().getService(MeterSystem.class);
+ LogAnalyzerModuleProvider provider = (LogAnalyzerModuleProvider)
moduleManager
+ .find(LogAnalyzerModule.NAME).provider();
- metricConverts = moduleConfig.malConfigs()
- .stream()
- .map(it -> new MetricConvert(it,
meterSystem))
- .collect(Collectors.toList());
+ metricConverts = provider.getMetricConverts();
slowSql = new SlowSqlSpec(moduleManager(), moduleConfig());
sampledTrace = new SampledTraceSpec(moduleManager(), moduleConfig());
diff --git
a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LogAnalyzerModuleProvider.java
b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LogAnalyzerModuleProvider.java
index e99391bcce..39a0021682 100644
---
a/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LogAnalyzerModuleProvider.java
+++
b/oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LogAnalyzerModuleProvider.java
@@ -17,13 +17,17 @@
package org.apache.skywalking.oap.log.analyzer.provider;
+import java.util.List;
+import java.util.stream.Collectors;
import lombok.Getter;
import org.apache.skywalking.oap.log.analyzer.module.LogAnalyzerModule;
import org.apache.skywalking.oap.log.analyzer.provider.log.ILogAnalyzerService;
import
org.apache.skywalking.oap.log.analyzer.provider.log.LogAnalyzerServiceImpl;
import
org.apache.skywalking.oap.log.analyzer.provider.log.listener.LogFilterListener;
+import org.apache.skywalking.oap.meter.analyzer.MetricConvert;
import org.apache.skywalking.oap.server.configuration.api.ConfigurationModule;
import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
import org.apache.skywalking.oap.server.library.module.ModuleDefine;
import org.apache.skywalking.oap.server.library.module.ModuleProvider;
import org.apache.skywalking.oap.server.library.module.ModuleStartException;
@@ -33,6 +37,9 @@ public class LogAnalyzerModuleProvider extends ModuleProvider
{
@Getter
private LogAnalyzerModuleConfig moduleConfig;
+ @Getter
+ private List<MetricConvert> metricConverts;
+
private LogAnalyzerServiceImpl logAnalyzerService;
@Override
@@ -68,6 +75,11 @@ public class LogAnalyzerModuleProvider extends
ModuleProvider {
@Override
public void start() throws ServiceNotProvidedException,
ModuleStartException {
+ MeterSystem meterSystem =
getManager().find(CoreModule.NAME).provider().getService(MeterSystem.class);
+ metricConverts = moduleConfig.malConfigs()
+ .stream()
+ .map(it -> new MetricConvert(it,
meterSystem))
+ .collect(Collectors.toList());
try {
logAnalyzerService.addListenerFactory(new
LogFilterListener.Factory(getManager(), moduleConfig));
} catch (final Exception e) {
diff --git
a/oap-server/analyzer/log-analyzer/src/test/java/org/apache/skywalking/oap/log/analyzer/dsl/DSLTest.java
b/oap-server/analyzer/log-analyzer/src/test/java/org/apache/skywalking/oap/log/analyzer/dsl/DSLTest.java
index 163595a3ff..66c996697e 100644
---
a/oap-server/analyzer/log-analyzer/src/test/java/org/apache/skywalking/oap/log/analyzer/dsl/DSLTest.java
+++
b/oap-server/analyzer/log-analyzer/src/test/java/org/apache/skywalking/oap/log/analyzer/dsl/DSLTest.java
@@ -19,7 +19,9 @@
package org.apache.skywalking.oap.log.analyzer.dsl;
import org.apache.skywalking.apm.network.logging.v3.LogData;
+import org.apache.skywalking.oap.log.analyzer.module.LogAnalyzerModule;
import org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleConfig;
+import
org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleProvider;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.config.ConfigService;
import org.apache.skywalking.oap.server.core.source.SourceReceiver;
@@ -197,6 +199,11 @@ public class DSLTest {
public void setup() {
Whitebox.setInternalState(manager, "isInPrepareStage", false);
when(manager.find(anyString())).thenReturn(mock(ModuleProviderHolder.class));
+ ModuleProviderHolder logAnalyzerHolder =
mock(ModuleProviderHolder.class);
+ LogAnalyzerModuleProvider logAnalyzerProvider =
mock(LogAnalyzerModuleProvider.class);
+
when(logAnalyzerProvider.getMetricConverts()).thenReturn(Collections.emptyList());
+ when(logAnalyzerHolder.provider()).thenReturn(logAnalyzerProvider);
+
when(manager.find(LogAnalyzerModule.NAME)).thenReturn(logAnalyzerHolder);
when(manager.find(CoreModule.NAME).provider()).thenReturn(mock(ModuleServiceHolder.class));
when(manager.find(CoreModule.NAME).provider().getService(SourceReceiver.class))
.thenReturn(mock(SourceReceiver.class));