diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md index 2807fc71ae2ba65a55b2c66b86e01ac420ed3656..5985742618da11e29849aa86bdb1558513d186e4 100644 --- a/docs/en/changes/changes.md +++ b/docs/en/changes/changes.md @@ -77,6 +77,7 @@ * Add the eBPF network profiling E2E Test in the per storage. * Fix TCP service instances are lack of instance properties like `pod` and `namespace`, which causes Pod log not to work for TCP workloads. * Add Python HBase happybase module component ID(94). +* Fix gRPC alarm cannot update settings from dynamic configuration source. #### UI diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/grpc/GRPCCallback.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/grpc/GRPCCallback.java index 4d109ee955254458916fe75d1eaca8dd062a98ad..de85df8ad4317a57b26041bbdf9589333a29cc73 100644 --- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/grpc/GRPCCallback.java +++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/grpc/GRPCCallback.java @@ -60,19 +60,15 @@ public class GRPCCallback implements AlarmCallback { @Override public void doAlarm(List alarmMessage) { - if (alarmSetting == null || alarmSetting.isEmptySetting()) { - return; - } - // recreate gRPC client and stub if host and port configuration changed. onGRPCAlarmSettingUpdated(alarmRulesWatcher.getGrpchookSetting()); - GRPCStreamStatus status = new GRPCStreamStatus(); - - if (alarmServiceStub == null) { + if (alarmSetting == null || alarmSetting.isEmptySetting() || alarmServiceStub == null) { return; } + GRPCStreamStatus status = new GRPCStreamStatus(); + StreamObserver streamObserver = alarmServiceStub.withDeadlineAfter(10, TimeUnit.SECONDS).doAlarm(new StreamObserver() { @Override @@ -156,6 +152,7 @@ public class GRPCCallback implements AlarmCallback { } if (!grpcAlarmSetting.equals(alarmSetting)) { + alarmSetting = grpcAlarmSetting; if (grpcClient != null) { grpcClient.shutdown(); }