outposts: replace migration with string backup handler

This commit is contained in:
Jens Langhammer 2020-10-19 16:04:38 +02:00
parent 597188c7ee
commit 7203bd37a3
2 changed files with 5 additions and 32 deletions

View File

@ -1,31 +0,0 @@
from pickle import loads
from typing import Any # nosec
from redis import Redis
from lifecycle.migrate import BaseMigration
from passbook.lib.config import CONFIG
class Migration(BaseMigration):
def __init__(self, cur: Any, con: Any):
super().__init__(cur, con)
self.redis = Redis(
host=CONFIG.y("redis.host"),
port=6379,
db=CONFIG.y("redis.cache_db"),
password=CONFIG.y("redis.password"),
)
def needs_migration(self) -> bool:
keys = self.redis.keys(":1:outpost_*")
for key in keys:
value = loads(self.redis.get(key)) # nosec
if isinstance(value, str):
return True
return False
def run(self):
keys_to_delete = self.redis.keys(":1:outpost_*")
self.redis.delete(*keys_to_delete)

View File

@ -204,7 +204,11 @@ class OutpostState:
def for_channel(outpost: Outpost, channel: str) -> "OutpostState": def for_channel(outpost: Outpost, channel: str) -> "OutpostState":
"""Get state for a single channel""" """Get state for a single channel"""
key = f"{outpost.state_cache_prefix}_{channel}" key = f"{outpost.state_cache_prefix}_{channel}"
data = cache.get(key, {"uid": channel}) default_data = {"uid": channel}
data = cache.get(key, default_data)
if isinstance(data, str):
cache.delete(key)
data = default_data
state = from_dict(OutpostState, data) state = from_dict(OutpostState, data)
state.uid = channel state.uid = channel
# pylint: disable=protected-access # pylint: disable=protected-access