Skip to content

fix: fallback version in air-gapped environments#341

Open
yangbooom wants to merge 1 commit intodatazip-inc:masterfrom
yangbooom:fix/air-gapped-version-fallback
Open

fix: fallback version in air-gapped environments#341
yangbooom wants to merge 1 commit intodatazip-inc:masterfrom
yangbooom:fix/air-gapped-version-fallback

Conversation

@yangbooom
Copy link
Copy Markdown

Problem

Source and destination creation is completely blocked in air-gapped / private-network deployments because the version dropdown stays empty when Docker Hub / GitHub is unreachable.

Root cause: GetSourceVersions and GetDestinationVersions return hard errors when GetDriverImageTags fails, and the frontend's validateSource() rejects empty versions with "No versions available".

Fixes #340

Changes

Server (server/internal/services/etl/)

  • source.goGetSourceVersions: return DefaultSpecVersion as fallback instead of error
  • destination.goGetDestinationVersions: same fallback behavior
  • Both log a warning so operators can see it in logs

Frontend (ui/src/modules/)

  • CreateSource.tsx — catch block uses initialVersion || "v0.2.0" fallback instead of resetVersionState()
  • CreateDestination.tsx — same fallback

Behavior

Environment Before After
Internet available ✅ Fetches versions from Docker Hub ✅ Same (no change)
Air-gapped ❌ Empty dropdown, Next blocked ✅ Falls back to default version
BFF updated, frontend not ❌ 500 error ✅ Frontend fallback kicks in
Frontend updated, BFF not ❌ Empty dropdown ✅ Server fallback kicks in

Double-layer defense: even if only one side is updated, the fix works.

Testing

  • Verified version fetch failure path returns fallback version
  • Verified validateSource() accepts fallback version and proceeds to next step
  • No changes to existing happy-path behavior

When the BFF server cannot reach Docker Hub / GitHub to fetch connector
versions, source and destination creation was completely blocked because
the version dropdown stayed empty and validation rejected empty versions.

Server changes:
- GetSourceVersions: return DefaultSpecVersion on fetch failure instead of error
- GetDestinationVersions: same fallback behavior
- Log warning instead of failing hard

Frontend changes:
- CreateSource.tsx: use 'latest' fallback on version fetch error
- CreateDestination.tsx: same fallback behavior

Fixes datazip-inc#340
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Mar 20, 2026

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Source/Destination creation blocked in air-gapped environments: version fetch failure prevents proceeding

2 participants