{
  "schema_version": 2,
  "id": "integrate/redis-data-integration/release-notes/rdi-1-8-0",
  "title": "Redis Data Integration release notes 1.8.0 (May 2025)",
  "url": "https://redis.io/docs/latest/integrate/redis-data-integration/release-notes/rdi-1-8-0/",
  "summary": "Enhanced RDI operator for better pipeline orchestration, resiliency, observability and flexibility; External collector support; Labels and annotations to RDI data plane pods; Custom Debezium image; Calculated TTL for target database.",
  "tags": [
    "docs",
    "operate",
    "rs"
  ],
  "last_updated": "2026-09-18T16:47:10+01:00",
  "page_type": "content",
  "content_hash": "feb9384df7e84ec666cabdc58cf2650147849d999547c98641be7d2fd69a6387",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "> [!NOTE]\n> This minor release replaces the 1.6.7 release.\n\nRDI’s mission is to help Redis customers sync Redis Enterprise with live data from their slow disk-based databases to:\n\n- Meet the required speed and scale of read queries and provide an excellent and predictable user experience.\n- Save resources and time when building pipelines and coding data transformations.\n- Reduce the total cost of ownership by saving money on expensive database read replicas.\n\nRDI keeps the Redis cache up to date with changes in the primary database, using a [_Change Data Capture (CDC)_](https://en.wikipedia.org/wiki/Change_data_capture) mechanism.\nIt also lets you _transform_ the data from relational tables into convenient and fast data structures that match your app's requirements. You specify the transformations using a configuration system, so no coding is required."
    },
    {
      "id": "headlines",
      "title": "Headlines",
      "role": "content",
      "text": "- Enhanced RDI operator for better pipeline orchestration, resiliency, observability, and flexibility. It \n  will also enable many new features in the near future.\n- You can now use an external collector that is not managed by RDI but writes into RDI streams\n  (Debezium compatible).\n- You can now add labels and annotations to RDI data plane pods, for example to control service\n  mesh features.\n- RDI now uses a custom image of Debezium (based on `3.0.8.Final`) to address known vulnerabilities.\n- Added support for calculated TTL for target database keys via `expire` expressions."
    },
    {
      "id": "detailed-changes",
      "title": "Detailed changes",
      "role": "content",
      "text": ""
    },
    {
      "id": "helm-chart-changes",
      "title": "Helm chart changes",
      "role": "content",
      "text": "- All collector and processor values that were previously under `collector`, `collectorSourceMetricsExporter`, and `processor` have been moved to `operator.dataPlane.collector` and `operator.dataPlane.processor`.\n- `global.collectorApiEnabled` has been moved to `operator.dataPlane.collectorApi.enabled`, and is now a boolean value (`true` or `false`), not `\"0\"` or `\"1\"`.\n- `api.authEnabled` is also now a boolean value, not `\"0\"` or `\"1\"`.\n- The following values have been deprecated: `rdiMetricsExporter.service.protocol`, `rdiMetricsExporter.service.port`, `rdiMetricsExporter.serviceMonitor.path`, `api.service.name`\n- You can now add custom labels and annotations to all RDI components.\n- You can now disable the creation of the RDI system secrets."
    },
    {
      "id": "operator-improvements",
      "title": "Operator Improvements",
      "role": "content",
      "text": "The RDI operator has been significantly enhanced in the following areas:\n\n- **Resilience**: The operator now always maintains the desired pipeline state. Manual changes or random disruptions are reverted automatically.\n- **Automatic recovery**: When a configuration issue is resolved, the entire pipeline starts automatically, eliminating the need for manual redeployment.\n- **Consistency**: A pipeline that has been stopped with `stop` will remain stopped after `deploy` or `reset`, until explicitly started again.\n- **Enhanced configuration**: You can now configure data plane components in ways that were previously not supported, such as adding labels and annotations.\n- **External collector support**: No collector resources are created for sources of type `external`.\n- **Enhanced troubleshooting**: You can now gain extra insight into the pipeline state by examining the `Pipeline` and `PipelineRelease` custom K8s resources."
    },
    {
      "id": "other-features-improvements-and-enhancements",
      "title": "Other Features, Improvements and Enhancements",
      "role": "content",
      "text": "- Added `expire` expression for target output in transformation jobs.\n- Addressed security vulnerabilities: TLS certificate hostname verification is now ON by default.\n- Improved Helm default values while preserving `values.yaml` formatting.\n- Enhanced Helm values and templates for better configuration.\n- Added a script to create or update secrets when using Helm (`rdi-secret.sh` in the Helm zip file).\n- Improved validation schema and ensured backward compatibility.\n- Fixed compatibility issues with newer versions of `requests` and `urllib3`.\n- Improved error messages for JSON schema validation.\n- Improved PostgreSQL documentation for mTLS.\n- Added timestamps to the `status` command.\n- Fixed issues with `primary_key` and `unique_constraint` attributes in Oracle metadata.\n- Added `capture.mode` to MongoDB scaffolding.\n- Improved Helm TLS setup for RDI database connections.\n- Enhanced error handling and validation for transformation jobs.\n- Improved documentation for supported platforms and configurations."
    },
    {
      "id": "fixes",
      "title": "Fixes",
      "role": "content",
      "text": "- Fixed HTTP 500 error when querying columns with tables parameter.\n- Improved Helm TLS setup for RDI database connections.\n- Fixed keystore overwrite when using mTLS on both source and RDI DBs in the collector."
    },
    {
      "id": "limitations",
      "title": "Limitations",
      "role": "limits",
      "text": "RDI can write data to a Redis Active-Active database. However, it doesn't support writing data to two or more Active-Active replicas. Writing data from RDI to several Active-Active replicas could easily harm data integrity as RDI is not synchronous with the source database commits."
    },
    {
      "id": "known-issues",
      "title": "Known Issues",
      "role": "content",
      "text": ""
    },
    {
      "id": "high-availability-upgrade-issue",
      "title": "High Availability upgrade issue",
      "role": "content",
      "text": "When upgrading from RDI < 1.8.0 to RDI >= 1.8.0 in an HA setup, both RDI instances may incorrectly consider themselves active after the upgrade. This occurs because the upgrade process doesn't update the `rdi:ha:lock` value from the legacy `cluster-1` identifier, causing both clusters to assume they are the active cluster.\n\n**Symptoms:**\n\n- The upgraded passive node will start collector and processor components\n- Collector may enter a crash loop as it fails to connect to the source\n- Both clusters will restart in a loop\n\n**Workaround:**\n\nAfter upgrading, manually set a unique cluster ID for one of the installations by editing the configmap:\n\n[code example]\n\nThen add the following line to distinguish between the clusters:\n\n[code example]"
    }
  ],
  "examples": [
    {
      "id": "high-availability-upgrade-issue-ex0",
      "language": "bash",
      "code": "kubectl edit cm -n rdi rdi-sys-config",
      "section_id": "high-availability-upgrade-issue"
    },
    {
      "id": "high-availability-upgrade-issue-ex1",
      "language": "bash",
      "code": "RDI_CLUSTER_ID: cluster-2",
      "section_id": "high-availability-upgrade-issue"
    }
  ]
}
