The Flyte 2 executor doesn't register the connector-service (webapi) plugin, so it can't run connector tasks. The Python SDK already ships the connector interfaces (AsyncConnector and friends), but nothing on the executor side runs them: the plugin that delegates to a connector deployment is never registered.
I ran into this building a connector for Armada. The task type resolves to connector-service, but the executor has no plugin by that name, so the task never routes.
Registering the plugin isn't quite enough on its own. The webapi machinery also pulls a ResourceManager and a SecretManager from the plugin setup context, and the executor provides neither, so the allocation-token path nil-derefs.
I opened #7565 with the change. It registers connector-service in the executor and supplies a no-op ResourceManager and registrar so the allocation path doesn't panic. With it, a connector works end to end: https://github.com/dejanzele/armada-flyte runs plain @env.task functions as Armada jobs through it (fan-out, gang scheduling, a small ML pipeline).
A couple of questions for reviewers:
- Is registering connector-service in the executor the intended path for v2, or is connector execution meant to be wired up somewhere else?
- Is a no-op ResourceManager and SecretManager acceptable in the executor, or should it provide real implementations?
This isn't Armada-specific. Any connector backend (Databricks, Ray, etc.) needs the same plugin registered to run on v2.
The Flyte 2 executor doesn't register the connector-service (webapi) plugin, so it can't run connector tasks. The Python SDK already ships the connector interfaces (
AsyncConnectorand friends), but nothing on the executor side runs them: the plugin that delegates to a connector deployment is never registered.I ran into this building a connector for Armada. The task type resolves to
connector-service, but the executor has no plugin by that name, so the task never routes.Registering the plugin isn't quite enough on its own. The webapi machinery also pulls a ResourceManager and a SecretManager from the plugin setup context, and the executor provides neither, so the allocation-token path nil-derefs.
I opened #7565 with the change. It registers connector-service in the executor and supplies a no-op ResourceManager and registrar so the allocation path doesn't panic. With it, a connector works end to end: https://github.com/dejanzele/armada-flyte runs plain
@env.taskfunctions as Armada jobs through it (fan-out, gang scheduling, a small ML pipeline).A couple of questions for reviewers:
This isn't Armada-specific. Any connector backend (Databricks, Ray, etc.) needs the same plugin registered to run on v2.