github open-metadata/OpenMetadata 2.0.4-release

pre-release5 hours ago

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, and StdDev metrics instead of dropping them.
  • Datalake: MF4 file reads failed after a canmatrix update #34419: Pins canmatrix below 1.3 so asammdf imports 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 Dbt and QueryLog pseudo-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% or 0-row sample saved nothing while still showing a success toast, and a stored 0 would 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_string across 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 requestCompressionEnabled setting 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 stored description or displayName it doesn't send, and tableConstraints are preserved when the bot sends none.

Don't miss a new OpenMetadata release

NewReleases is sending notifications on new releases.