-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[TT-15141] Toggling default policy from inactive to active does not activate JWT in some cases - revert session save #7449
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
PR Code Suggestions ✨Explore these optional code suggestions:
|
API Changes no api changes detected |
🔍 Code Analysis ResultsThis pull request addresses a bug where activating a default policy would not correctly enable JWT authentication in certain scenarios. The root cause was a premature saving of the user session state. Files Changed Analysis
Architecture & Impact AssessmentWhat this PR accomplishesThis PR fixes a bug that caused inconsistent session states, specifically affecting JWT activation when a policy was changed. It corrects the session persistence flow by ensuring the session is saved only after all modifications for a given request have been applied. Key technical changes introducedThe core change is the removal of Previously, the policy service would immediately mark the session as modified after applying policy data. This created a race condition: the session could be saved before other middleware (like the JWT middleware) had a chance to add its own data to the session. By removing this call, the responsibility for marking the session as modified is moved up the call stack to the middleware orchestrator. This ensures that the session is only flagged for saving after the entire middleware chain has processed it, resulting in a complete and correct state being persisted. Affected system components
VisualizationThe following diagrams illustrate the change in the request flow. Old Flow (Buggy): sequenceDiagram
participant Middleware
participant SessionManager
participant PolicyService
participant JWT_Middleware
participant SessionStore
Note over Middleware: Old Flow (with bug)
Middleware->>SessionManager: Get/Create Session
SessionManager-->>Middleware: session
Middleware->>PolicyService: ApplyPolicies(session)
PolicyService->>PolicyService: Applies policy data
PolicyService->>Middleware: session.Touch() called inside
Note right of PolicyService: Session is now marked as modified
Middleware->>SessionManager: SaveSessionIfModified(session)
SessionManager->>SessionStore: SAVE session (prematurely)
Middleware->>JWT_Middleware: ProcessRequest(session)
JWT_Middleware->>JWT_Middleware: Adds JWT data to session
Note right of JWT_Middleware: Too late! Session is already saved without JWT data.
New Flow (Corrected): sequenceDiagram
participant Middleware
participant SessionManager
participant PolicyService
participant JWT_Middleware
participant SessionStore
Note over Middleware: New Flow (with fix)
Middleware->>SessionManager: Get/Create Session
SessionManager-->>Middleware: session
Middleware->>PolicyService: ApplyPolicies(session)
PolicyService->>PolicyService: Applies policy data
PolicyService-->>Middleware: returns
Note right of PolicyService: session.Touch() is NOT called
Middleware->>JWT_Middleware: ProcessRequest(session)
JWT_Middleware->>JWT_Middleware: Adds JWT data to session
Middleware->>Middleware: session.Touch() called by orchestrator
Note right of Middleware: Session marked as modified *after* all changes
Middleware->>SessionManager: SaveSessionIfModified(session)
SessionManager->>SessionStore: SAVE session (with all data)
Scope Discovery & Context ExpansionThe change is located in the core policy application logic ( This means the impact of this change extends to all authentication mechanisms that rely on policies. By centralizing the "dirty" flag ( Metadata
Powered by Visor from Probelabs Last updated: 2025-10-14T09:14:48.010Z | Triggered by: opened | Commit: e655429 |
🔍 Code Analysis Results✅ Security Check PassedNo security issues found – changes LGTM. ✅ Performance Check PassedNo performance issues found – changes LGTM. ✅ Quality Check PassedNo quality issues found – changes LGTM. ✅ Style Check PassedNo style issues found – changes LGTM. ✅ Dependency Check PassedNo dependency issues found – changes LGTM. ✅ Connectivity Check PassedNo connectivity issues found – changes LGTM. Powered by Visor from Probelabs Last updated: 2025-10-14T09:14:49.059Z | Triggered by: opened | Commit: e655429 |
|
/release to release-5.8 |
/release to release-5.10 |
Working on it! Note that it can take a few minutes. |
1 similar comment
Working on it! Note that it can take a few minutes. |
…ctivate JWT in some cases - revert session save (#7449) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15141" title="TT-15141" target="_blank">TT-15141</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Toggling default policy from inactive to active does not activate JWT in some cases</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>Ready for Testing</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_long_tail%20ORDER%20BY%20created%20DESC" title="2025_long_tail">2025_long_tail</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_r5_candidate%20ORDER%20BY%20created%20DESC" title="2025_r5_candidate">2025_r5_candidate</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Complexity-Medium%20ORDER%20BY%20created%20DESC" title="AI-Complexity-Medium">AI-Complexity-Medium</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Priority-High%20ORDER%20BY%20created%20DESC" title="AI-Priority-High">AI-Priority-High</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20codilime_refined%20ORDER%20BY%20created%20DESC" title="codilime_refined">codilime_refined</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20customer_bug%20ORDER%20BY%20created%20DESC" title="customer_bug">customer_bug</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description This PR reverts session save change. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Remove unnecessary session Touch call - Prevent unintended session save side effects - Avoid performance impact from extra writes ___ ### Diagram Walkthrough ```mermaid flowchart LR ApplyPolicy["Apply policy to session"] -- "previously called" --> TouchSession["session.Touch()"] ApplyPolicy -- "now" --> ReturnOnly["return without touching session"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>apply.go</strong><dd><code>Stop touching session after applying policies</code> </dd></summary> <hr> internal/policy/apply.go <ul><li>Remove <code>session.Touch()</code> at end of <code>Apply</code>.<br> <li> Preserve error when no valid policies applied.<br> <li> Keep access rights update logic unchanged.</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7449/files#diff-59b92e9d31f142f1d99b746eb3ff7db4e26bf6c3044c9b87b58034a947ee04d1">+0/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ (cherry picked from commit 817e09f)
@MaciekMis Created merge PRs |
…ctivate JWT in some cases - revert session save (#7449) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15141" title="TT-15141" target="_blank">TT-15141</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Toggling default policy from inactive to active does not activate JWT in some cases</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>Ready for Testing</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_long_tail%20ORDER%20BY%20created%20DESC" title="2025_long_tail">2025_long_tail</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_r5_candidate%20ORDER%20BY%20created%20DESC" title="2025_r5_candidate">2025_r5_candidate</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Complexity-Medium%20ORDER%20BY%20created%20DESC" title="AI-Complexity-Medium">AI-Complexity-Medium</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Priority-High%20ORDER%20BY%20created%20DESC" title="AI-Priority-High">AI-Priority-High</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20codilime_refined%20ORDER%20BY%20created%20DESC" title="codilime_refined">codilime_refined</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20customer_bug%20ORDER%20BY%20created%20DESC" title="customer_bug">customer_bug</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description This PR reverts session save change. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Remove unnecessary session Touch call - Prevent unintended session save side effects - Avoid performance impact from extra writes ___ ### Diagram Walkthrough ```mermaid flowchart LR ApplyPolicy["Apply policy to session"] -- "previously called" --> TouchSession["session.Touch()"] ApplyPolicy -- "now" --> ReturnOnly["return without touching session"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>apply.go</strong><dd><code>Stop touching session after applying policies</code> </dd></summary> <hr> internal/policy/apply.go <ul><li>Remove <code>session.Touch()</code> at end of <code>Apply</code>.<br> <li> Preserve error when no valid policies applied.<br> <li> Keep access rights update logic unchanged.</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7449/files#diff-59b92e9d31f142f1d99b746eb3ff7db4e26bf6c3044c9b87b58034a947ee04d1">+0/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ (cherry picked from commit 817e09f)
@MaciekMis Seems like there is conflict and it require manual merge. |
…ive to active does not activate JWT in some cases - revert session save (#7449) [TT-15141] Toggling default policy from inactive to active does not activate JWT in some cases - revert session save (#7449) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15141" title="TT-15141" target="_blank">TT-15141</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Toggling default policy from inactive to active does not activate JWT in some cases</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>Ready for Testing</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_long_tail%20ORDER%20BY%20created%20DESC" title="2025_long_tail">2025_long_tail</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_r5_candidate%20ORDER%20BY%20created%20DESC" title="2025_r5_candidate">2025_r5_candidate</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Complexity-Medium%20ORDER%20BY%20created%20DESC" title="AI-Complexity-Medium">AI-Complexity-Medium</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Priority-High%20ORDER%20BY%20created%20DESC" title="AI-Priority-High">AI-Priority-High</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20codilime_refined%20ORDER%20BY%20created%20DESC" title="codilime_refined">codilime_refined</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20customer_bug%20ORDER%20BY%20created%20DESC" title="customer_bug">customer_bug</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description This PR reverts session save change. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Remove unnecessary session Touch call - Prevent unintended session save side effects - Avoid performance impact from extra writes ___ ### Diagram Walkthrough ```mermaid flowchart LR ApplyPolicy["Apply policy to session"] -- "previously called" --> TouchSession["session.Touch()"] ApplyPolicy -- "now" --> ReturnOnly["return without touching session"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>apply.go</strong><dd><code>Stop touching session after applying policies</code> </dd></summary> <hr> internal/policy/apply.go <ul><li>Remove <code>session.Touch()</code> at end of <code>Apply</code>.<br> <li> Preserve error when no valid policies applied.<br> <li> Keep access rights update logic unchanged.</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7449/files#diff-59b92e9d31f142f1d99b746eb3ff7db4e26bf6c3044c9b87b58034a947ee04d1">+0/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___
…tive to active does not activate JWT in some cases - revert session save (#7449) (#7451) ### **User description** [TT-15141] Toggling default policy from inactive to active does not activate JWT in some cases - revert session save (#7449) ### **User description** <details open> <summary><a href="https://tyktech.atlassian.net/browse/TT-15141" title="TT-15141" target="_blank">TT-15141</a></summary> <br /> <table> <tr> <th>Summary</th> <td>Toggling default policy from inactive to active does not activate JWT in some cases</td> </tr> <tr> <th>Type</th> <td> <img alt="Bug" src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium" /> Bug </td> </tr> <tr> <th>Status</th> <td>Ready for Testing</td> </tr> <tr> <th>Points</th> <td>N/A</td> </tr> <tr> <th>Labels</th> <td><a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_long_tail%20ORDER%20BY%20created%20DESC" title="2025_long_tail">2025_long_tail</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%202025_r5_candidate%20ORDER%20BY%20created%20DESC" title="2025_r5_candidate">2025_r5_candidate</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Complexity-Medium%20ORDER%20BY%20created%20DESC" title="AI-Complexity-Medium">AI-Complexity-Medium</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20AI-Priority-High%20ORDER%20BY%20created%20DESC" title="AI-Priority-High">AI-Priority-High</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20codilime_refined%20ORDER%20BY%20created%20DESC" title="codilime_refined">codilime_refined</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20customer_bug%20ORDER%20BY%20created%20DESC" title="customer_bug">customer_bug</a>, <a href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20jira_escalated%20ORDER%20BY%20created%20DESC" title="jira_escalated">jira_escalated</a></td> </tr> </table> </details> <!-- do not remove this marker as it will break jira-lint's functionality. added_by_jira_lint --> --- <!-- Provide a general summary of your changes in the Title above --> ## Description This PR reverts session save change. ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested <!-- Please describe in detail how you tested your changes --> <!-- Include details of your testing environment, and the tests --> <!-- you ran to see how your change affects other areas of the code, etc. --> <!-- This information is helpful for reviewers and QA. --> ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Remove unnecessary session Touch call - Prevent unintended session save side effects - Avoid performance impact from extra writes ___ ### Diagram Walkthrough ```mermaid flowchart LR ApplyPolicy["Apply policy to session"] -- "previously called" --> TouchSession["session.Touch()"] ApplyPolicy -- "now" --> ReturnOnly["return without touching session"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>apply.go</strong><dd><code>Stop touching session after applying policies</code> </dd></summary> <hr> internal/policy/apply.go <ul><li>Remove <code>session.Touch()</code> at end of <code>Apply</code>.<br> <li> Preserve error when no valid policies applied.<br> <li> Keep access rights update logic unchanged.</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7449/files#diff-59b92e9d31f142f1d99b746eb3ff7db4e26bf6c3044c9b87b58034a947ee04d1">+0/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ [TT-15141]: https://tyktech.atlassian.net/browse/TT-15141?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ ___ ### **PR Type** Bug fix ___ ### **Description** - Revert session Touch on policy apply - Prevent unintended session save side effects - Preserve error when no policies applied ___ ### Diagram Walkthrough ```mermaid flowchart LR apply["Apply policies to session"] -- "previously" --> touch["session.Touch()"] apply -- "now" --> return["return without touching session"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>apply.go</strong><dd><code>Stop touching session in policy Apply</code> </dd></summary> <hr> internal/policy/apply.go <ul><li>Remove <code>session.Touch()</code> at end of <code>Apply</code>.<br> <li> Keep error return when no valid policies.</ul> </details> </td> <td><a href="https://github.com/TykTechnologies/tyk/pull/7451/files#diff-59b92e9d31f142f1d99b746eb3ff7db4e26bf6c3044c9b87b58034a947ee04d1">+0/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ Co-authored-by: Maciej Miś <maciej.mis@codilime.com>
User description
TT-15141
Description
This PR reverts session save change.
Related Issue
Motivation and Context
How This Has Been Tested
Screenshots (if appropriate)
Types of changes
Checklist
PR Type
Bug fix, Enhancement
Description
Remove unnecessary session Touch call
Prevent unintended session save side effects
Avoid performance impact from extra writes
Diagram Walkthrough
File Walkthrough
apply.go
Stop touching session after applying policies
internal/policy/apply.go
session.Touch()
at end ofApply
.