indeedeng / indeedeng/iwf-python-sdk
publish_to_internal_channel is not threadsafe
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 6
- Forks
- 3
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
https://github.com/indeedeng/iwf-python-sdk/blob/a13c309d58bb553a3ee27c85899f7f25c500d877/iwf/communication.py#L51
Here's part of the publish_to_internal_channel func :
``` python
def publish_to_internal_channel(self, channel_name: str, value: Any = None):
...
vals = self._to_publish_internal_channel.get(channel_name)
if vals is None:
vals = []
vals.append(self._object_encoder.encode(value))
self._to_publish_internal_channel[channel_name] = vals
```
When multiple threads hitting this function, it could have a race condition where
Thread A gets vals = [1,2,3]
Thread B gets vals = [1,2,3]
Thread A updates it to be [1,2,3,4]
Thread B updates it to be [1,2,3,5]
Here we lost 4 permanently
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in iwf/communication.py bei publish_to_internal_channel und prüfe, wie _to_publish_internal_channel gelesen und aktualisiert wird. Füge Abdeckung für nebenläufige Veröffentlichungen hinzu und verifiziere anschließend, dass keine Werte verloren gehen, wenn mehrere Threads auf demselben Kanal veröffentlichen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 55/100