Changelog
OpenMetadata 2.0.4 is a maintenance release focused on connector reliability across AWS Glue, Snowflake, SQL Server, and Datalake, correctness fixes in search scoping and Explore counts, data quality and profiler fixes, and a safer bot bulk-import path.
🔌 Connectors & Ingestion
- AWS Glue: table parameters weren't captured #34269: Glue table parameters are now ingested as custom properties.
- SQL Server: table synonyms weren't ingested #33415: SQL Server synonyms are now ingested as table aliases and allowed through the entity patch.
- Snowflake: the overflow retry skipped subclassed sum, mean, and standard-deviation metrics #34396: The overflow-retry fallback now keeps subclassed
Sum,Mean, andStdDevmetrics instead of dropping them. - Datalake: MF4 file reads failed after a
canmatrixupdate #34419: Pinscanmatrixbelow 1.3 soasammdfimports again and MF4 reads work. - Ingestion could break under SQLAlchemy 2.1 #34259: Caps SQLAlchemy below 2.1 to keep ingestion working.
📊 Data Quality
- A test case's status followed the last result written or deleted, not the newest one #34285: A late older result, or deleting the newest result, could overwrite the status and even auto-resolve a newer failure's incident. Status now always reflects the newest result.
- The Test Definition "Supported Services" picker listed the
DbtandQueryLogpseudo-types #34624: These have no connection schema, so a test definition restricted to one silently vanished from the Add Test Case picker. Both are now filtered out. - Setting a 0% profile sample silently discarded the Profiler Settings config #34625: A
0%or0-row sample saved nothing while still showing a success toast, and a stored0would force a full-table scan. A non-zero sample is now required.
🔀 Lineage
- Upstream data quality failures were missed once an instance had more than 100 test cases #34286: The upstream-failure check kept only the 100 busiest test cases before filtering, dropping failing upstream tables. It now uses one exact, batched lookup on the test case index.
🔍 Search & Discovery
- Searches ran against the whole cluster instead of the tenant's alias #33893: Search requests now scope to the cluster alias, so a search role confined to its own
<clusterAlias>*prefix is no longer denied with a 403. - Plain-text natural-language query (NLQ) and aggregate searches were slow and over-broad #34393: The NLQ keyword fallback and aggregate text now go through the search builder with a field list, instead of an unscoped
query_stringacross every index field. - Explore tab counts didn't match the result rows #34398: Counts could include fuzzy-only matches absent from the rows. They now use the same authorized, configured matching as each tab, and each tab renders as soon as its own request finishes.
- Data Marketplace list search was off-centre and keyword-only #34252: The Data Marketplace list search is now centred and supports natural-language search.
📈 Data Insights
- Data Insights summary cards and asset charts counted test case results #33415: Summary cards no longer count test case results, and the data asset charts are re-scoped in SQL.
🛡️ Data Governance & Quality
- Approving a tier change left an asset with two mutually exclusive tiers #34288: A tier approval now replaces the existing tier through the normal entity patch, increments the version, and records the tag change.
🎛️ UI
- Personas had no default landing page #34312: Adds persona General Preferences with a configurable default landing page.
- What's New showed a raw version, and opening an asset from an Assets tab card lost the breadcrumb #34685: What's New now shows a human-readable version and release date, and the full breadcrumb is kept when opening an asset from an Assets tab card.
📣 Alerts & Events
- Testing an alert with only unconfigured destinations returned a 400 error #34626: Clicking Test Destinations when every external destination is unconfigured now skips the request instead of sending an empty destination list.
⚙️ Platform & Operations
- Data Retention deleted charts that no dashboard used #34105: Data Retention no longer removes charts that aren't referenced by any dashboard.
- Elasticsearch request compression wasn't configurable #34635: Adds a
requestCompressionEnabledsetting on the Elasticsearch configuration. - Bot bulk imports blanked fields the source didn't send #34671: With
overrideMetadata=true, a bot bulk PUT no longer blanks a storeddescriptionordisplayNameit doesn't send, andtableConstraintsare preserved when the bot sends none.