catalog_list_operations_consistency_validator: retry on CommandNotSupportedOnLegacyTimeseriesBucketsNamespace

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 9.0.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Catalog and Routing
    • Fully Compatible
    • ALL
    • CAR Team 2026-05-11
    • 200
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      The catalog list-operations consistency validator can fail with CommandNotSupportedOnLegacyTimeseriesBucketsNamespace (error 491) — see BF-43011.

      The validator already tries to filter legacy buckets via skipLegacyBucketsForListIndexes, but there is a race during an FCV upgrade that crosses the timeseries-viewless boundary: listCollections runs while FCV is still kUpgrading, so the flag is not yet considered enabled and the legacy system.buckets. namespace is returned. Before the validator issues listIndexes on it, FCV transitions to fully upgraded — featureFlagBlockDirectSystemBucketsAccess is now active — but the per-collection viewless conversion has not yet completed for this namespace. listIndexes on system.buckets. is then rejected with error 491. Eventually the conversion completes and the collection becomes viewless, which is why the failure is transient.

      Fix

      Treat CommandNotSupportedOnLegacyTimeseriesBucketsNamespace as a transient error in the listIndexes retry loop, alongside ObjectIsBusy and InterruptedDueToReplStateChange. On retry, either the viewless conversion completes and listCollections no longer returns the buckets namespace, or skipLegacyBucketsForListIndexes filters it out.

      Workaround until legacy buckets namespaces are gone — tracked by SERVER-106164.

            Assignee:
            Tommaso Tocci
            Reporter:
            Tommaso Tocci
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: