Skip to content

Commit ed5e729

Browse files
authored
Init log-mal-rules at module provider start stage to avoid re-init for every LAL (#13610)
1 parent bea2941 commit ed5e729

File tree

4 files changed

+25
-7
lines changed

4 files changed

+25
-7
lines changed

docs/en/changes/changes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
* KubernetesCoordinator: make self instance return real pod IP address instead of `127.0.0.1`.
99
* Enhance the alarm kernel with recovered status notification capability
1010
* Fix BrowserWebVitalsPerfData `clsTime` to `cls` and make it double type.
11+
* Init `log-mal-rules` at module provider start stage to avoid re-init for every LAL.
1112

1213
#### UI
1314
* Fix the missing icon in new native trace view.

oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/dsl/spec/extractor/ExtractorSpec.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@
3838
import org.apache.skywalking.oap.log.analyzer.dsl.spec.AbstractSpec;
3939
import org.apache.skywalking.oap.log.analyzer.dsl.spec.extractor.sampledtrace.SampledTraceSpec;
4040
import org.apache.skywalking.oap.log.analyzer.dsl.spec.extractor.slowsql.SlowSqlSpec;
41+
import org.apache.skywalking.oap.log.analyzer.module.LogAnalyzerModule;
4142
import org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleConfig;
43+
import org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleProvider;
4244
import org.apache.skywalking.oap.meter.analyzer.MetricConvert;
4345
import org.apache.skywalking.oap.meter.analyzer.dsl.Sample;
4446
import org.apache.skywalking.oap.meter.analyzer.dsl.SampleFamily;
@@ -49,7 +51,6 @@
4951
import org.apache.skywalking.oap.server.core.analysis.DownSampling;
5052
import org.apache.skywalking.oap.server.core.analysis.Layer;
5153
import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
52-
import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
5354
import org.apache.skywalking.oap.server.core.analysis.record.Record;
5455
import org.apache.skywalking.oap.server.core.analysis.worker.RecordStreamProcessor;
5556
import org.apache.skywalking.oap.server.core.config.NamingControl;
@@ -82,13 +83,10 @@ public ExtractorSpec(final ModuleManager moduleManager,
8283
final LogAnalyzerModuleConfig moduleConfig) throws ModuleStartException {
8384
super(moduleManager, moduleConfig);
8485

85-
final MeterSystem meterSystem =
86-
moduleManager.find(CoreModule.NAME).provider().getService(MeterSystem.class);
86+
LogAnalyzerModuleProvider provider = (LogAnalyzerModuleProvider) moduleManager
87+
.find(LogAnalyzerModule.NAME).provider();
8788

88-
metricConverts = moduleConfig.malConfigs()
89-
.stream()
90-
.map(it -> new MetricConvert(it, meterSystem))
91-
.collect(Collectors.toList());
89+
metricConverts = provider.getMetricConverts();
9290

9391
slowSql = new SlowSqlSpec(moduleManager(), moduleConfig());
9492
sampledTrace = new SampledTraceSpec(moduleManager(), moduleConfig());

oap-server/analyzer/log-analyzer/src/main/java/org/apache/skywalking/oap/log/analyzer/provider/LogAnalyzerModuleProvider.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@
1717

1818
package org.apache.skywalking.oap.log.analyzer.provider;
1919

20+
import java.util.List;
21+
import java.util.stream.Collectors;
2022
import lombok.Getter;
2123
import org.apache.skywalking.oap.log.analyzer.module.LogAnalyzerModule;
2224
import org.apache.skywalking.oap.log.analyzer.provider.log.ILogAnalyzerService;
2325
import org.apache.skywalking.oap.log.analyzer.provider.log.LogAnalyzerServiceImpl;
2426
import org.apache.skywalking.oap.log.analyzer.provider.log.listener.LogFilterListener;
27+
import org.apache.skywalking.oap.meter.analyzer.MetricConvert;
2528
import org.apache.skywalking.oap.server.configuration.api.ConfigurationModule;
2629
import org.apache.skywalking.oap.server.core.CoreModule;
30+
import org.apache.skywalking.oap.server.core.analysis.meter.MeterSystem;
2731
import org.apache.skywalking.oap.server.library.module.ModuleDefine;
2832
import org.apache.skywalking.oap.server.library.module.ModuleProvider;
2933
import org.apache.skywalking.oap.server.library.module.ModuleStartException;
@@ -33,6 +37,9 @@ public class LogAnalyzerModuleProvider extends ModuleProvider {
3337
@Getter
3438
private LogAnalyzerModuleConfig moduleConfig;
3539

40+
@Getter
41+
private List<MetricConvert> metricConverts;
42+
3643
private LogAnalyzerServiceImpl logAnalyzerService;
3744

3845
@Override
@@ -68,6 +75,11 @@ public void prepare() throws ServiceNotProvidedException, ModuleStartException {
6875

6976
@Override
7077
public void start() throws ServiceNotProvidedException, ModuleStartException {
78+
MeterSystem meterSystem = getManager().find(CoreModule.NAME).provider().getService(MeterSystem.class);
79+
metricConverts = moduleConfig.malConfigs()
80+
.stream()
81+
.map(it -> new MetricConvert(it, meterSystem))
82+
.collect(Collectors.toList());
7183
try {
7284
logAnalyzerService.addListenerFactory(new LogFilterListener.Factory(getManager(), moduleConfig));
7385
} catch (final Exception e) {

oap-server/analyzer/log-analyzer/src/test/java/org/apache/skywalking/oap/log/analyzer/dsl/DSLTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
package org.apache.skywalking.oap.log.analyzer.dsl;
2020

2121
import org.apache.skywalking.apm.network.logging.v3.LogData;
22+
import org.apache.skywalking.oap.log.analyzer.module.LogAnalyzerModule;
2223
import org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleConfig;
24+
import org.apache.skywalking.oap.log.analyzer.provider.LogAnalyzerModuleProvider;
2325
import org.apache.skywalking.oap.server.core.CoreModule;
2426
import org.apache.skywalking.oap.server.core.config.ConfigService;
2527
import org.apache.skywalking.oap.server.core.source.SourceReceiver;
@@ -197,6 +199,11 @@ public static Collection<Object[]> data() {
197199
public void setup() {
198200
Whitebox.setInternalState(manager, "isInPrepareStage", false);
199201
when(manager.find(anyString())).thenReturn(mock(ModuleProviderHolder.class));
202+
ModuleProviderHolder logAnalyzerHolder = mock(ModuleProviderHolder.class);
203+
LogAnalyzerModuleProvider logAnalyzerProvider = mock(LogAnalyzerModuleProvider.class);
204+
when(logAnalyzerProvider.getMetricConverts()).thenReturn(Collections.emptyList());
205+
when(logAnalyzerHolder.provider()).thenReturn(logAnalyzerProvider);
206+
when(manager.find(LogAnalyzerModule.NAME)).thenReturn(logAnalyzerHolder);
200207
when(manager.find(CoreModule.NAME).provider()).thenReturn(mock(ModuleServiceHolder.class));
201208
when(manager.find(CoreModule.NAME).provider().getService(SourceReceiver.class))
202209
.thenReturn(mock(SourceReceiver.class));

0 commit comments

Comments
 (0)