apache / apache/servicecomb-java-chassis

在org.apache.servicecomb.common.rest.RestEngineSchemaListener注册之前 kafka消费消息调用接口,导致后续调用该接口都报空指针异常

Offen
#3,240 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Java
Sterne
1.9k
Forks
814
Ø Merge
8 T. 23 Std.
Gemergte PRs (30 T.)
1

Beschreibung

```
2022-07-28 14:36:45.020|[]|mock-thread|WARN |SCBEngine.java:513|The request is rejected. Cannot process the request due to STATUS = STARTING
2022-07-28 14:36:45.020|[]|mock-thread|WARN |VehicleTaskEndListener.java:64|clear busyTag of [335157342402481152] failed
2022-07-28 14:36:45.215|[]|mock-thread|INFO |MicroserviceVersions.java:93|create MicroserviceVersions, appId=mockAppId, microserviceName=mockMicro.
2022-07-28 14:36:46.125|[]|main|INFO |SCBEngine.java:630|instance registry succeeds for the first time, will send AFTER_REGISTRY event.
```

`create MicroserviceVersions`日志打印早于`instance registry succeeds for the first time`

通过日志上下文可以确定这个日志是调用一个@RpcReference的接口触发的。但是按理`currentStatus` 不为UP调用接口应该会抛错。

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit SCBEngine.java rund um die Prüfung des Status STARTING und das erste Ereignis der Instanzregistrierung. Verfolge dann den Kafka-Consumer-Pfad, der die mit @RpcReference annotierte Schnittstelle aufruft, bevor RestEngineSchemaListener registriert wird. Verwende die bereitgestellte Reihenfolge der Logs, um die Race Condition im Lebenszyklus zu reproduzieren. Als abgeschlossen gilt die Arbeit, wenn der frühe Aufruf konsistent verarbeitet wird und spätere Aufrufe nicht mehr mit einer Nullzeiger-Ausnahme fehlschlagen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java, kafka
Bereich
backend, distributed-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.