Skip to content

500 error when creating a destination with Azure Managed Redis (port 10000) #461

@leggetter

Description

@leggetter

The cause of this problem is that the Redis client Outpost uses does not support Redis clusters. #465 is a PR that adds support and should be completed to complete this work.

Description

When running Outpost on Azure and using Azure Managed Redis (connecting over non-TLS port 10000), attempts to create a destination via the API or Portal result in a 500 Internal Server Error. The same setup works without errors when using Azure Cache for Redis (port 6379). This suggests a possible version or protocol difference between the two Redis offerings that could be triggering the issue.

Steps to Reproduce

  1. Deploy Outpost API container on Azure (using Container Apps, per provided deployment scripts with modifications for existing Azure services).
  2. Configure Outpost to use:
    • Azure Managed Redis on port 10000
    • Any Postgres DB
    • Azure Service Bus for topics/subscriptions
  3. Create a tenant successfully via the API.
  4. Attempt to create a destination via the Portal or directly with the API:
curl --request POST   --url http://localhost:3333/api/v1/:tenant_id/destinations   --header 'Content-Type: application/json'   --data '{
    "type": "webhook",
    "topics": ["user.created"],
    "config": {
      "url": "{URL}"
    },
    "credentials": {}
  }'

(Add auth to the above command)

Expected Result

Destination is created successfully.

Actual Result

500 Internal Server Error returned. Logs show:

error: EXECABORT Transaction discarded because of previous errors.
error_type: proto.RedisError
error_trace: github.com/hookdeck/outpost/internal/services/api.NewErrInternalServer
    /home/runner/work/outpost/outpost/internal/services/api/errorhandler_middleware.go:101
github.com/hookdeck/outpost/internal/services/api.(*DestinationHandlers).handleUpsertDestinationError
    /home/runner/work/outpost/outpost/internal/services/api/destination_handlers.go:307

Additional Observations

  • Works fine with Azure Cache for Redis (6379).
  • Fails with Azure Managed Redis (10000).
  • Tenant creation works in both cases, but destination creation fails only on Managed Redis.
  • API container can start and connect to Redis, Postgres, and Service Bus without issue.
  • This was tested using Outpost v0.4.0

Hypotheses

  • Difference in Redis server version or configuration between Azure Cache and Azure Managed Redis (possibly RESP3 vs RESP2 or ACL/auth differences).
  • TLS or protocol handling on port 10000 might differ from 6379.
  • Data handling in credentials or encryption routines could be failing only on this Redis version.

Next Steps

  • Reproduce locally connecting to an Azure Managed Redis instance.
  • Compare Redis INFO output and configuration between Azure Cache and Azure Managed Redis.
  • Test explicit TLS vs non-TLS connections on both offerings.
  • Investigate whether Redis transactions behave differently on Managed Redis.

Metadata

Metadata

Labels

bugSomething isn't working

Type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions