fix: add app_id to Redis cache keys for trigger nodes to ensure uniqueness (#28243)
Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
This commit is contained in:
@@ -210,7 +210,7 @@ class TriggerService:
|
|||||||
for node_info in nodes_in_graph:
|
for node_info in nodes_in_graph:
|
||||||
node_id = node_info["node_id"]
|
node_id = node_info["node_id"]
|
||||||
# firstly check if the node exists in cache
|
# firstly check if the node exists in cache
|
||||||
if not redis_client.get(f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{node_id}"):
|
if not redis_client.get(f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{app.id}:{node_id}"):
|
||||||
not_found_in_cache.append(node_info)
|
not_found_in_cache.append(node_info)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ class TriggerService:
|
|||||||
subscription_id=node_info["subscription_id"],
|
subscription_id=node_info["subscription_id"],
|
||||||
)
|
)
|
||||||
redis_client.set(
|
redis_client.set(
|
||||||
f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{node_info['node_id']}",
|
f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{app.id}:{node_info['node_id']}",
|
||||||
cache.model_dump_json(),
|
cache.model_dump_json(),
|
||||||
ex=60 * 60,
|
ex=60 * 60,
|
||||||
)
|
)
|
||||||
@@ -285,7 +285,7 @@ class TriggerService:
|
|||||||
subscription_id=node_info["subscription_id"],
|
subscription_id=node_info["subscription_id"],
|
||||||
)
|
)
|
||||||
redis_client.set(
|
redis_client.set(
|
||||||
f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{node_id}",
|
f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{app.id}:{node_id}",
|
||||||
cache.model_dump_json(),
|
cache.model_dump_json(),
|
||||||
ex=60 * 60,
|
ex=60 * 60,
|
||||||
)
|
)
|
||||||
@@ -295,7 +295,7 @@ class TriggerService:
|
|||||||
for node_id in nodes_id_in_db:
|
for node_id in nodes_id_in_db:
|
||||||
if node_id not in nodes_id_in_graph:
|
if node_id not in nodes_id_in_graph:
|
||||||
session.delete(nodes_id_in_db[node_id])
|
session.delete(nodes_id_in_db[node_id])
|
||||||
redis_client.delete(f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{node_id}")
|
redis_client.delete(f"{cls.__PLUGIN_TRIGGER_NODE_CACHE_KEY__}:{app.id}:{node_id}")
|
||||||
session.commit()
|
session.commit()
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("Failed to sync plugin trigger relationships for app %s", app.id)
|
logger.exception("Failed to sync plugin trigger relationships for app %s", app.id)
|
||||||
|
|||||||
@@ -833,7 +833,7 @@ class WebhookService:
|
|||||||
not_found_in_cache: list[str] = []
|
not_found_in_cache: list[str] = []
|
||||||
for node_id in nodes_id_in_graph:
|
for node_id in nodes_id_in_graph:
|
||||||
# firstly check if the node exists in cache
|
# firstly check if the node exists in cache
|
||||||
if not redis_client.get(f"{cls.__WEBHOOK_NODE_CACHE_KEY__}:{node_id}"):
|
if not redis_client.get(f"{cls.__WEBHOOK_NODE_CACHE_KEY__}:{app.id}:{node_id}"):
|
||||||
not_found_in_cache.append(node_id)
|
not_found_in_cache.append(node_id)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -866,14 +866,16 @@ class WebhookService:
|
|||||||
session.add(webhook_record)
|
session.add(webhook_record)
|
||||||
session.flush()
|
session.flush()
|
||||||
cache = Cache(record_id=webhook_record.id, node_id=node_id, webhook_id=webhook_record.webhook_id)
|
cache = Cache(record_id=webhook_record.id, node_id=node_id, webhook_id=webhook_record.webhook_id)
|
||||||
redis_client.set(f"{cls.__WEBHOOK_NODE_CACHE_KEY__}:{node_id}", cache.model_dump_json(), ex=60 * 60)
|
redis_client.set(
|
||||||
|
f"{cls.__WEBHOOK_NODE_CACHE_KEY__}:{app.id}:{node_id}", cache.model_dump_json(), ex=60 * 60
|
||||||
|
)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
# delete the nodes not found in the graph
|
# delete the nodes not found in the graph
|
||||||
for node_id in nodes_id_in_db:
|
for node_id in nodes_id_in_db:
|
||||||
if node_id not in nodes_id_in_graph:
|
if node_id not in nodes_id_in_graph:
|
||||||
session.delete(nodes_id_in_db[node_id])
|
session.delete(nodes_id_in_db[node_id])
|
||||||
redis_client.delete(f"{cls.__WEBHOOK_NODE_CACHE_KEY__}:{node_id}")
|
redis_client.delete(f"{cls.__WEBHOOK_NODE_CACHE_KEY__}:{app.id}:{node_id}")
|
||||||
session.commit()
|
session.commit()
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("Failed to sync webhook relationships for app %s", app.id)
|
logger.exception("Failed to sync webhook relationships for app %s", app.id)
|
||||||
|
|||||||
Reference in New Issue
Block a user