Skip to content

[TT-16865]: Gateway reads node id and nonce on 409#8137

Merged
kofoworola merged 10 commits into
masterfrom
fix/register-loop
May 8, 2026
Merged

[TT-16865]: Gateway reads node id and nonce on 409#8137
kofoworola merged 10 commits into
masterfrom
fix/register-loop

Conversation

@kofoworola

@kofoworola kofoworola commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Description

TT-16865

Related Issue

Motivation and Context

How This Has Been Tested

Screenshots (if appropriate)

Types of changes

  • 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

  • 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

@probelabs

probelabs Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

This pull request resolves a critical bug where the Tyk Gateway could enter an infinite registration loop with the Dashboard. The issue arose when a Gateway tried to register using a session ID already known to the Dashboard, which correctly responds with a 409 Conflict. The previous implementation treated any 409 response as a successful registration without reading the response body. This left the NodeID and Nonce uninitialized, causing subsequent authenticated requests to fail with 403 Forbidden, which in turn triggered another registration attempt, creating the loop.

The fix refactors the registration logic to correctly handle the 409 Conflict response. The Gateway now decodes the response body to differentiate between a successful duplicate-session registration (indicated by "Status":"OK") and a transient error like lock contention. In the case of a successful 409, the Gateway correctly extracts the NodeID and Nonce from the response, synchronizing its state and breaking the loop. For other errors, it now retries after a 5-second delay within a more robust iterative loop structure.

Files Changed Analysis

  • gateway/dashboard_register.go: Contains the core logic changes. The Register function is refactored from a recursive approach to an iterative for loop. It introduces attemptRegistration and parseRegistrationResponse to properly handle 200 OK and 409 Conflict responses, ensuring NodeID and Nonce are extracted in both scenarios. The NodeResponseOK struct is renamed to NodeResponse and its Message field type is changed to any for more flexible response parsing.
  • gateway/dashboard_register_test.go: Substantially updated with comprehensive unit tests for the new registration logic. It now covers successful registration (200), duplicate session registration (409 with status OK), and various retryable error conditions.
  • gateway/dashboard_recovery_test.go: A new file added to test various error handling utility functions related to dashboard communication.
  • gateway/dashboard_recovery.go: The attemptDashboardRecovery function is updated to use the main gateway context (gw.ctx), making the registration attempt a blocking operation that is only cancelled on gateway shutdown.
  • gateway/api_definition_test.go, gateway/policy_test.go, gateway/server_test.go: These test files have minor updates to use the renamed NodeResponse struct.

Architecture & Impact Assessment

  • What this PR accomplishes: It resolves a critical stability issue that could prevent a Gateway from becoming operational by getting it stuck in a registration loop. This significantly improves the reliability of the Gateway-Dashboard connection.
  • Key technical changes introduced:
    1. Refactoring the registration mechanism from recursion to a blocking for loop for more robust retry handling.
    2. Decoding the response body on a 409 Conflict to differentiate between a successful duplicate-session registration and a transient error requiring a retry.
    3. Correctly extracting and setting the NodeID and Nonce from the 409 response body, ensuring state synchronization.
  • Affected system components: The change primarily impacts the Tyk Gateway's startup and recovery lifecycle, specifically its registration handshake with the Tyk Dashboard.

Registration Flow for 409 Conflict

sequenceDiagram
    participant Gateway
    participant Dashboard

    Gateway->>Dashboard: GET /register/node

    alt Old Behavior (Bug)
        Dashboard-->>Gateway: 409 Conflict (Body with NodeID/Nonce)
        Gateway->>Gateway: Assume success, IGNORE body
        Note right of Gateway: NodeID & Nonce are not set.<br/>Subsequent API calls fail with 403.<br/>Loop continues.
    end

    alt New Behavior (Fix)
        Dashboard-->>Gateway: 409 Conflict (Body with Status: "OK")
        Gateway->>Gateway: Parse body, update NodeID & Nonce
        Note right of Gateway: Gateway state is synchronized.

        Dashboard-->>Gateway: 409 Conflict (Body with Status: "Error")
        Gateway->>Gateway: Log warning, wait 5s, and retry
        Note right of Gateway: Handles transient errors gracefully.
    end
Loading

Scope Discovery & Context Expansion

  • The change is surgically targeted at the Gateway's Dashboard registration module, but its impact is critical for the Gateway's overall function. A failed registration prevents the Gateway from fetching API definitions and policies, rendering it non-operational.
  • The NodeID and Nonce are fundamental for authenticating all subsequent communications with the Dashboard. By ensuring they are set correctly even in a duplicate-session scenario, this fix prevents a cascade of downstream failures related to configuration reloads, policy updates, and analytics reporting.
  • The context passed to the Register function is now the main gateway context (gw.ctx), which is cancelled only on gateway shutdown. This makes registration a mandatory, blocking step in the startup and recovery process, emphasizing its criticality.
Metadata
  • Review Effort: 3 / 5
  • Primary Label: bug

Powered by Visor from Probelabs

Last updated: 2026-05-08T04:50:20.135Z | Triggered by: pr_updated | Commit: e26cefa

💡 TIP: You can chat with Visor using /visor ask <your question>

@probelabs

probelabs Bot commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Security Issues (3)

Severity Location Issue
🟡 Warning gateway/dashboard_register.go:226
The registration retry mechanism uses a fixed 5-second delay. This can lead to a 'thundering herd' problem if many gateways attempt to register simultaneously after a dashboard restart, potentially overwhelming the dashboard service. A fixed delay also doesn't adapt to the duration of an outage.
💡 SuggestionImplement an exponential backoff with jitter for the retry delay. This will spread out the retry attempts from multiple gateways and prevent them from overwhelming the dashboard, improving the overall resilience of the system.
🟡 Warning gateway/dashboard_register.go:296
The function `newRequest` panics if `http.NewRequest` fails, for instance, due to a malformed URL constructed from configuration. While a misconfiguration is an error, panicking can abruptly terminate the gateway. This could be considered a minor denial-of-service vector if configuration can be influenced by a low-privileged user.
💡 SuggestionModify `newRequest` and `newRequestWithContext` to return an error instead of panicking. This allows the calling functions to handle the configuration error more gracefully, for example by logging the error and shutting down cleanly.
🟡 Warning gateway/dashboard_register.go:303
The function `newRequestWithContext` panics if `http.NewRequestWithContext` fails, for instance, due to a malformed URL constructed from configuration. While a misconfiguration is an error, panicking can abruptly terminate the gateway. This could be considered a minor denial-of-service vector if configuration can be influenced by a low-privileged user.
💡 SuggestionModify `newRequest` and `newRequestWithContext` to return an error instead of panicking. This allows the calling functions to handle the configuration error more gracefully, for example by logging the error and shutting down cleanly.

✅ Architecture Check Passed

No architecture issues found – changes LGTM.

Performance Issues (2)

Severity Location Issue
🟡 Warning gateway/dashboard_register.go:221-230
The registration retry mechanism uses a fixed 5-second delay (`time.After(5 * time.Second)`). In scenarios where multiple gateways are starting or recovering simultaneously, this fixed delay can lead to synchronized retry attempts, potentially causing a 'thundering herd' problem that overloads the Dashboard service. While this is an improvement over the previous recursive implementation, a more robust strategy would be to use exponential backoff with jitter.
💡 SuggestionImplement an exponential backoff strategy with jitter for the retry delay. This will spread out the retry attempts from multiple gateways over time, reducing the peak load on the Dashboard service during mass startup or recovery events. A library could be used for this, or a simple implementation could be added.
🟡 Warning gateway/dashboard_register.go:194
A new HTTP client is created for each registration attempt via `h.Gw.initialiseClient()`. While the underlying transport is reused, creating a new client object in a loop is inefficient and can lead to unnecessary memory allocations. The HTTP client is safe for concurrent use and should be initialized once and reused across requests.
💡 SuggestionInitialize the HTTP client once when the `HTTPDashboardHandler` is created and store it as a field on the struct. Reuse this single client instance for all registration attempts within the `attemptRegistration` function. This avoids repeated object creation and allocation in the retry loop.

✅ Quality Check Passed

No quality issues found – changes LGTM.


Powered by Visor from Probelabs

Last updated: 2026-05-08T04:50:02.822Z | Triggered by: pr_updated | Commit: e26cefa

💡 TIP: You can chat with Visor using /visor ask <your question>

@kofoworola

Copy link
Copy Markdown
Contributor Author

/visor jitter + backoff retry will be added in another ticket

@probelabs

probelabs Bot commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

Powered by Visor from Probelabs

Last updated: 2026-04-27T09:46:20.548Z | Triggered by: kofoworola | Commit: 76213a3

💡 TIP: You can chat with Visor using /visor ask <your question>

@kofoworola
kofoworola enabled auto-merge (squash) May 7, 2026 13:02
@kofoworola
kofoworola force-pushed the fix/register-loop branch from f60bc0d to d275fdb Compare May 7, 2026 23:47
@kofoworola
kofoworola force-pushed the fix/register-loop branch from d275fdb to e26cefa Compare May 8, 2026 04:48
@github-actions

github-actions Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

🚨 Jira Linter Failed

Commit: e26cefa
Failed at: 2026-05-08 04:49:01 UTC

The Jira linter failed to validate your PR. Please check the error details below:

🔍 Click to view error details
failed to validate branch and PR title rules: branch name 'fix/register-loop' must contain a valid Jira ticket ID (e.g., ABC-123)

Next Steps

  • Ensure your branch name contains a valid Jira ticket ID (e.g., ABC-123)
  • Verify your PR title matches the branch's Jira ticket ID
  • Check that the Jira ticket exists and is accessible

This comment will be automatically deleted once the linter passes.

@sonarqubecloud

sonarqubecloud Bot commented May 8, 2026

Copy link
Copy Markdown

Quality Gate Passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
80.9% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarQube Cloud

@kofoworola
kofoworola deleted the fix/register-loop branch May 8, 2026 09:16
@kofoworola

Copy link
Copy Markdown
Contributor Author

/release to release-5.3

@probelabs

probelabs Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

⚠️ Cherry-pick encountered conflicts. A draft PR was created: #8185

kofoworola added a commit that referenced this pull request May 8, 2026
<!-- Provide a general summary of your changes in the Title above -->

[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

<!-- 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. -->

<!-- Why is this change required? What problem does it solve? -->

<!-- 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. -->

<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] 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)

<!-- 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

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

(cherry picked from commit c3228bd)
@kofoworola

Copy link
Copy Markdown
Contributor Author

/release to release-5.8

@probelabs

probelabs Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

✅ Cherry-pick successful. A PR was created: #8186

@kofoworola

Copy link
Copy Markdown
Contributor Author

/release to release-5.13

@probelabs

probelabs Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

✅ Cherry-pick successful. A PR was created: #8187

kofoworola added a commit that referenced this pull request May 8, 2026
…n 409 (#8137) (#8186)

[TT-16865]: Gateway reads node id and nonce on 409 (#8137)

<!-- Provide a general summary of your changes in the Title above -->

## Description
[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

## 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: -->

- [ ] 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


[TT-16865]:

https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
<!---TykTechnologies/jira-linter starts here-->

### Ticket Details

<details>
<summary>
<a href="https://tyktech.atlassian.net/browse/TT-16865" title="TT-16865"
target="_blank">TT-16865</a>
</summary>

|         |    |
|---------|----|
| Status  | Merge |
| Summary | [Critical] Gateway incorrectly handles 409 Conflict during
registration causing Nonce empty |

Generated at: 2026-05-08 12:10:28

</details>

<!---TykTechnologies/jira-linter ends here-->

Co-authored-by: Kofo Okesola <[email protected]>
kofoworola added a commit that referenced this pull request May 8, 2026
…n 409 (#8137) (#8185)

Cherry-pick of `c3228bdbe5ee907a6dd4e348bbc531d4df7cf281` from `master`
to `release-5.3` requires manual resolution.

  **Conflicts detected:** 6
   - gateway/dashboard_register.go
 - gateway/server_test.go
  
  Tips:
- Check out this branch locally and run: `git cherry-pick -x
c3228bd`
- Resolve conflicts (including submodules if any), then push back to
this branch.
  
Original commit:
c3228bd

---------

Co-authored-by: Tyk Bot <[email protected]>
Co-authored-by: Kofo Okesola <[email protected]>
@kofoworola

Copy link
Copy Markdown
Contributor Author

/release to release-5.8.14

@probelabs

probelabs Bot commented May 8, 2026

Copy link
Copy Markdown
Contributor

✅ Cherry-pick successful. A PR was created: #8188

kofoworola added a commit that referenced this pull request May 8, 2026
…on 409 (#8137) (#8187)

[TT-16865]: Gateway reads node id and nonce on 409 (#8137)

<!-- Provide a general summary of your changes in the Title above -->

## Description
[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

## 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: -->

- [ ] 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


[TT-16865]:

https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
<!---TykTechnologies/jira-linter starts here-->

### Ticket Details

<details>
<summary>
<a href="https://tyktech.atlassian.net/browse/TT-16865" title="TT-16865"
target="_blank">TT-16865</a>
</summary>

|         |    |
|---------|----|
| Status  | Merge |
| Summary | [Critical] Gateway incorrectly handles 409 Conflict during
registration causing Nonce empty |

Generated at: 2026-05-08 12:12:40

</details>

<!---TykTechnologies/jira-linter ends here-->

Co-authored-by: Kofo Okesola <[email protected]>
kofoworola added a commit that referenced this pull request May 8, 2026
…e on 409 (#8137) (#8188)

[TT-16865]: Gateway reads node id and nonce on 409 (#8137)

<!-- Provide a general summary of your changes in the Title above -->

## Description
[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

## 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: -->

- [ ] 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


[TT-16865]:

https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

Co-authored-by: Kofo Okesola <[email protected]>
@kofoworola

Copy link
Copy Markdown
Contributor Author

/release to release-5.3.13

@probelabs

probelabs Bot commented May 12, 2026

Copy link
Copy Markdown
Contributor

⚠️ Cherry-pick encountered conflicts. A draft PR was created: #8204

kofoworola added a commit that referenced this pull request May 12, 2026
<!-- Provide a general summary of your changes in the Title above -->

[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

<!-- 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. -->

<!-- Why is this change required? What problem does it solve? -->

<!-- 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. -->

<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] 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)

<!-- 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

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

(cherry picked from commit c3228bd)
kofoworola added a commit that referenced this pull request May 12, 2026
<!-- Provide a general summary of your changes in the Title above -->

[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

<!-- 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. -->

<!-- Why is this change required? What problem does it solve? -->

<!-- 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. -->

<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] 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)

<!-- 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

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

(cherry picked from commit c3228bd)
kofoworola added a commit that referenced this pull request May 12, 2026
<!-- Provide a general summary of your changes in the Title above -->

[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

<!-- 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. -->

<!-- Why is this change required? What problem does it solve? -->

<!-- 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. -->

<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] 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)

<!-- 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

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

(cherry picked from commit c3228bd)
kofoworola added a commit that referenced this pull request May 13, 2026
<!-- Provide a general summary of your changes in the Title above -->

[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

<!-- 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. -->

<!-- Why is this change required? What problem does it solve? -->

<!-- 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. -->

<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->

- [ ] 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)

<!-- 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

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

(cherry picked from commit c3228bd)
buger pushed a commit that referenced this pull request May 13, 2026
…e on 409 (#8137) (#8204)

Cherry-pick of `c3228bdbe5ee907a6dd4e348bbc531d4df7cf281` from `master`
to `release-5.3.13` requires manual resolution.

  **Conflicts detected:** 6
   - gateway/dashboard_register.go
 - gateway/server_test.go
  
  Tips:
- Check out this branch locally and run: `git cherry-pick -x
c3228bd`
- Resolve conflicts (including submodules if any), then push back to
this branch.
  
Original commit:
c3228bd

Co-authored-by: Kofo Okesola <[email protected]>
@kofoworola

Copy link
Copy Markdown
Contributor Author

/release to release-5.13.0

@probelabs

probelabs Bot commented May 14, 2026

Copy link
Copy Markdown
Contributor

✅ Cherry-pick successful. A PR was created: #8219

kofoworola added a commit that referenced this pull request May 14, 2026
<!-- Provide a general summary of your changes in the Title above -->

## Description
[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

## 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: -->

- [ ] 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

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

(cherry picked from commit c3228bd)
kofoworola added a commit that referenced this pull request May 15, 2026
<!-- Provide a general summary of your changes in the Title above -->

## Description
[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

## 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: -->

- [ ] 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

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

(cherry picked from commit c3228bd)
lghiur pushed a commit that referenced this pull request May 15, 2026
…e on 409 (#8137) (#8219)

[TT-16865]: Gateway reads node id and nonce on 409 (#8137)

<!-- Provide a general summary of your changes in the Title above -->

## Description
[TT-16865](https://tyktech.atlassian.net/browse/TT-16865)
<!-- Describe your changes in detail -->

## 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: -->

- [ ] 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


[TT-16865]:

https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[TT-16865]:
https://tyktech.atlassian.net/browse/TT-16865?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ



<!---TykTechnologies/jira-linter starts here-->

### Ticket Details

<details>
<summary>
<a href="https://tyktech.atlassian.net/browse/TT-16865" title="TT-16865"
target="_blank">TT-16865</a>
</summary>

|         |    |
|---------|----|
| Status  | Merge |
| Summary | [Critical] Gateway incorrectly handles 409 Conflict during
registration causing Nonce empty |

Generated at: 2026-05-15 11:40:18

</details>

<!---TykTechnologies/jira-linter ends here-->

Co-authored-by: Kofo Okesola <[email protected]>
Co-authored-by: Florencia Caballero <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants