Potential concurrency bugs in ConfigManager
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginne damit, ConfigManager und seine Aufrufstellen von GetConfig und WatchConfig zu lokalisieren. Überprüfe, wie Initialisierung, Benachrichtigungsblockierung und die Lebensdauer des Watchers gehandhabt werden; als erledigt gilt die Aufgabe, wenn ein abgestimmtes Design vorliegt, das verpasste Aktualisierungen, blockierte Module und Abbestellung berücksichtigt, zusammen mit den entsprechenden Tests.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Development Task
ConfigManager notifies other modules with the config change by a channel. There are some bugs:
- When a module starts, it must receive an initial config and a channel as its parameters, such as
someModule.Init(cfgMgr.GetConfig(), cfgMgr.WatchConfig()). However, between callingGetConfig()andWatchConfig(), there may be a config change, and thussomeModulemay miss this config change. ConfigManagernotifies all the modules by writing to the channels when config changes. If one module blocks (maybe forever or temporarily), it hangs. If the module blocks forever, such as deadlock or panic, the config change will block forever. But if you add a timeout on writing the channel, the module may miss the config change if it just blocks temporarily, such as busy handling other things.- There's no way to unsubscribe from
ConfigManagerafter callingWatchConfig(). If a module wants to quit,ConfigManagerwill still try to notify it.
For the 1st problem, one workaround is calling WatchConfig() after GetConfig().
For the 2nd problem, one workaround is to set the channel size to a big enough size and also set a timeout on writing the channel.
For the 3rd problem, one workaround is to add another function to unsubscribe.
If we deprecate the WatchConfig() way and always use GetConfig(), all problems will be solved.
- Vorherrschende Sprache
- Go
- Sterne
- 74
- Forks
- 40
- Ø Merge
- 13 Std. 16 Min.
- Gemergte PRs (30 T.)
- 15
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus pingcap/tiproxy
-
migration:bb7133-tiproxy
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
migration:bb7133-tiproxy
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Rust-dataplane] Migration backend handshake must preserve CONNECT_WITH_DB when current-db emptyOffenmigration:bb7133-tiproxy
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
Maintainer antworten meist innerhalb von 1 Tag
-
[Rust-dataplane] Migration must not force CONNECT_ATTRS on backend lacking it with empty attrsOffenmigration:bb7133-tiproxy
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
Maintainer antworten meist innerhalb von 1 Tag
-
migration:bb7133-tiproxy
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in pingcap/tiproxy
Ähnliche Issues
-
date_time, url_encode, html_escape, to_unix_time, contains_all and contains_any panic when called without argumentsEvtl. vergeben @antcybersec hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
projectdiscovery/dsl#372 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
JuliusBrussee/caveman#1449 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bot-found bug priority: P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
madenvel/KalinkaPlayer#498 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
clawsweeper:fix-shape-clear clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster P2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
openclaw/gogcli#1291 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag