Description
🚀 Feature Request:
Component: state.oracledatabase
Driver: go-ora
(used internally)
✨ Request
We’d like to request support for full Oracle Net connect descriptors in the connectionString
field of the state.oracledatabase
component. This includes descriptors like:
(DESCRIPTION =
(CONNECT_TIMEOUT=90)(RETRY_COUNT=20)(RETRY_DELAY=3)(TRANSPORT_CONNECT_TIMEOUT=3)(FAILOVER=ON)
(ADDRESS_LIST =
(LOAD_BALANCE = ON)
(ADDRESS = (PROTOCOL = TCP)(HOST=db1.example.com)(PORT=1521))
(ADDRESS = (PROTOCOL = TCP)(HOST=db2.example.com)(PORT=1521))
)
(CONNECT_DATA =
(SERVICE_NAME=MY_SERVICE)
)
)
Another example of the same descriptor:
(DESCRIPTION=(CONNECT_TIMEOUT=30)(RETRY_COUNT=20)(RETRY_DELAY=3)(FAILOVER=ON)(LOAD_BALANCE=OFF)(ADDRESS_LIST=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=db1.customer.net)(PORT=1521)))(ADDRESS_LIST=(LOAD_BALANCE=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=db2.customer.net)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xyz_1234_ac_dbaas)))
and
oracle://xxx:yyyy@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.1.22)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCLCDB)))
✅ Why This Matters
The ability to use Oracle's connect descriptors enables:
- Client-side load balancing between multiple Oracle database nodes
- Automatic failover if one node becomes unavailable
- Advanced timeout and retry configurations to ensure resilience
- Better reliability for enterprise users who operate Oracle RAC or multi-node environments
- Simplified HA (high availability) setups without external proxies
🔍 Current Behavior
As of Dapr v1.15:
- Connection strings using descriptor syntax (e.g.,
@(...)
) are not supported - Attempts to use them result in
invalid URL escape
ormissing port in address
errors - Dapr currently expects the connection string to follow the simplified
oracle://user:pass@host:port/service
format
🧱 Driver Support
The go-ora driver used by this component does support complex descriptors, including:
LOAD_BALANCE
FAILOVER
CONNECT_TIMEOUT
,RETRY_DELAY
,RETRY_COUNT
, etc.
This makes the implementation more feasible on the component side, likely requiring adjustments to parsing logic rather than upstream changes.
🛠 Suggested Solution
Allow raw connect descriptors as a separate metadata field (e.g., connectDescriptor
) or ensure the existing connectionString
value is passed as-is to go-ora
without URL parsing that breaks descriptor formats.
📣 Who Needs This
This is especially important for:
- Customers operating in mission-critical, multi-node Oracle environments
- Use cases where latency, high availability, and retry behavior are tightly controlled
- Real-time processing workloads that rely on state reads/writes during sequential workflows
Metadata
Metadata
Assignees
Labels
Type
Projects
Status