Skip to content

Conversation

@17hz
Copy link
Contributor

@17hz 17hz commented Nov 15, 2025

Summary

This PR fixes a Redis cache key uniqueness issue in trigger node services. The previous implementation used only node_id as the cache key, which could cause conflicts when different applications have nodes with the same node_id.

Problem

When multiple apps have trigger nodes with the same node_id, they would share the same Redis cache entry, leading to incorrect cached data being retrieved.

Before:

Cache key format: {CACHE_KEY}:{node_id}

After:

Cache key format: {CACHE_KEY}:{app_id}:{node_id}

Changes

  • api/services/trigger/trigger_service.py: Updated all Redis operations (GET/SET/DELETE) for plugin trigger node cache to include app_id
  • api/services/trigger/webhook_service.py: Applied the same fix for webhook trigger node cache

Impact

  • Ensures cache isolation between different applications
  • Prevents data corruption caused by cache key collisions
  • Maintains backward compatibility for the lock key pattern

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods

🤖 Generated with Claude Code

…eness

The previous implementation used only node_id as the Redis cache key,
which could cause conflicts when different apps have nodes with the
same node_id. This fix adds app_id to the cache key pattern to ensure
uniqueness across different applications.

Changes:
- trigger_service.py: Updated cache key from {key}:{node_id} to {key}:{app_id}:{node_id}
- webhook_service.py: Applied the same fix for webhook trigger nodes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@dosubot dosubot bot added the size:S This PR changes 10-29 lines, ignoring generated files. label Nov 15, 2025
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @17hz, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves a critical issue where Redis cache keys for trigger nodes could collide between different applications due to relying solely on node_id. By integrating app_id into the cache key structure, the changes ensure proper cache isolation, preventing data corruption and enhancing the overall stability and reliability of trigger node services across multiple applications. This modification impacts both plugin and webhook trigger node caching mechanisms.

Highlights

  • Cache Key Uniqueness Fix: Addresses a problem where Redis cache keys for trigger nodes were not unique across different applications, leading to potential data conflicts and incorrect cached data retrieval.
  • Application ID Integration: The app_id has been incorporated into the Redis cache key format for both plugin and webhook trigger nodes, ensuring that each application has its own distinct cache entries.
  • Enhanced Cache Isolation: This change guarantees proper cache isolation between different applications, preventing data corruption and improving the reliability and stability of trigger node services.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly addresses a cache key collision issue by incorporating app_id into the Redis cache keys for trigger nodes, ensuring uniqueness across different applications. The changes in trigger_service.py and webhook_service.py are consistent and effectively resolve the problem. My main feedback is to consider refactoring the cache key generation logic into helper methods in both services to reduce code duplication and improve maintainability. This would make the code cleaner and less prone to errors in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant