Connectors/processors of an Import-provisioned pipeline stay tagged ProvisionTypeConfig
- Dominant language
- Go
- Stars
- 610
- Forks
- 63
- Avg merge
- 12h 28m
- Merged PRs (30d)
- 57
Description
Follow-up from #1274 / PR #2510 (review nit N1).
After #2510, a pipeline created via the programmatic `Service.Import` is correctly tagged `ProvisionTypeAPI`, so it survives restart reconciliation. But its **connectors and processors** are still hardcoded to `connector.ProvisionTypeConfig` / `processor.ProvisionTypeConfig` (`pkg/provisioning/import_actions.go` `createConnectorAction.Do` / `createProcessorAction.Do`).
This does **not** affect #1274 (there is no connector/processor reconciliation sweep — `deleteOldPipelines` only sweeps pipelines, and deleting a pipeline cascade-deletes its connectors), so it's not data loss. But it creates an inconsistency: the orchestrator guards mutation on connector/processor `ProvisionedBy` (`pkg/orchestrator/connectors.go`, `processors.go`), returning `ErrImmutableProvisionedByConfig` ("please change the corresponding config file instead"). So an embedder that provisioned a pipeline via `Import` (API, mutable) **cannot update or delete that pipeline's connectors/processors via the orchestrator API** — they're treated as config-file-owned even though there is no config file.
**Fix:** thread the pipeline's provision type through `createConnectorAction` / `createProcessorAction` the same way #2510 did for the pipeline, so an API-provisioned pipeline's connectors/processors are also `ProvisionTypeAPI`.
Deferred from #2510 to keep that fix minimal and focused on the restart-deletion bug.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Contributor guide
Research direction
Start in pkg/provisioning/import_actions.go at createConnectorAction.Do and createProcessorAction.Do, and compare their provision-type handling with the pipeline change from #2510. Trace the orchestrator guards in pkg/orchestrator/connectors.go and processors.go; done means API-imported connectors and processors are tagged ProvisionTypeAPI and can be mutated or deleted through the orchestrator API.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- api, data-engineering
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100