Fix ingress session cleanup (#4719)

This commit is contained in:
Mike Degatano 2023-11-21 11:56:01 -05:00 committed by GitHub
parent 043111b91c
commit c74f87ca12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View File

@ -88,7 +88,7 @@ class Ingress(FileConfiguration, CoreSysAttributes):
now = utcnow() now = utcnow()
sessions = {} sessions = {}
sessions_data: dict[str, IngressSessionData] = {} sessions_data: dict[str, dict[str, str | None]] = {}
for session, valid in self.sessions.items(): for session, valid in self.sessions.items():
# check if timestamp valid, to avoid crash on malformed timestamp # check if timestamp valid, to avoid crash on malformed timestamp
try: try:
@ -102,7 +102,8 @@ class Ingress(FileConfiguration, CoreSysAttributes):
# Is valid # Is valid
sessions[session] = valid sessions[session] = valid
sessions_data[session] = self.sessions_data.get(session) if session_data := self.sessions_data.get(session):
sessions_data[session] = session_data
# Write back # Write back
self.sessions.clear() self.sessions.clear()

View File

@ -88,3 +88,14 @@ async def test_ingress_save_data(coresys: CoreSys, tmp_supervisor_data: Path):
}, },
"ports": {}, "ports": {},
} }
async def test_ingress_reload_ignore_none_data(coresys: CoreSys):
"""Test reloading ingress does not add None for session data and create errors."""
session = coresys.ingress.create_session()
assert session in coresys.ingress.sessions
assert session not in coresys.ingress.sessions_data
await coresys.ingress.reload()
assert session in coresys.ingress.sessions
assert session not in coresys.ingress.sessions_data