jobs plugin: named/multiple jobs crash-loop at startup (manifest hardcodes `DATABRICKS_JOB_ID`)
Les mainteneurs répondent en général sous 3 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 72/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- node.js, typescript
- Domaine
- tooling
Piste de recherche
Commencez par plugins/jobs/manifest.json et comparez sa ressource requise avec JobsPlugin.getResourceRequirements() dans plugins/jobs/plugin.ts:132. Lisez ResourceRegistry.collectResources dans registry/resource-registry.ts, puis reproduisez les jobs nommés et le job par défaut avec createApp ; c’est terminé lorsque les jobs nommés démarrent sans DATABRICKS_JOB_ID et que le job par défaut fonctionne toujours. Examinez également la synchronisation du plugin appkit, qui ne lit actuellement que le manifeste statique.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
When the jobs plugin is configured with a named job, the app fails to start: it reports DATABRICKS_JOB_ID as a missing required resource, even though only named jobs (e.g. DATABRICKS_JOB_ETL) were configured. A single unnamed job bound to DATABRICKS_JOB_ID starts as expected.
Version
@databricks/appkit v0.63.0 (git 62451912) · Databricks Apps (also reproduces locally via createApp).
Reproduction
import { createApp, jobs } from '@databricks/appkit';
createApp({ plugins: [jobs({ jobs: { etl: {} } })] });
// env: DATABRICKS_JOB_ETL=<id> (DATABRICKS_JOB_ID unset)
Expected: the app boots with an etl job accessor.
Actual: startup fails with a missing-required-resources error naming DATABRICKS_JOB_ID.
Root cause
The jobs plugin declares its job resource twice, and the two disagree:
- Static:
plugins/jobs/manifest.jsonhardcodesDATABRICKS_JOB_IDas required (resourceKey: "job"). - Dynamic:
JobsPlugin.getResourceRequirements()(plugins/jobs/plugin.ts:132) emitsDATABRICKS_JOB_<NAME>per job (job-<name>; thedefaultkey →DATABRICKS_JOB_ID).
ResourceRegistry.collectResources (registry/resource-registry.ts) registers both — the static required loop near line 106 and the dynamic loop near line 118. The mismatched keys (job vs job-<name>) never merge, so a named-jobs app is left with an unsatisfiable static DATABRICKS_JOB_ID requirement. The single-default case works only because its dynamic env is also DATABRICKS_JOB_ID.
serving and files share this static-plus-dynamic pattern but escape the crash by reusing the static env var; jobs can't, since named jobs derive DATABRICKS_JOB_<NAME>.
Separately, appkit plugin sync resolves only the static manifest.json (getResourceRequirements is unused in the CLI), so appkit.plugins.json is blind to named jobs too.
Suggested fix (via Claude)
Drop the hardcoded required job from plugins/jobs/manifest.json (resources.required: []) and let getResourceRequirements() be the single source of truth — it already maps default → DATABRICKS_JOB_ID, so the single-default case keeps working and named jobs stop demanding a phantom DATABRICKS_JOB_ID.
- Langage dominant
- TypeScript
- Étoiles
- 119
- Forks
- 36
- Merge moyen
- 4 j 16 h
- PR mergées (30 j)
- 37
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de databricks/appkit
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
databricks/appkit#729 ·
Les mainteneurs répondent en général sous 3 jours
-
@databricks/lakebase: pool drops maxLifetimeSeconds and other pg options, so connections never recycle and Unity Catalog claims access fails after 4 hoursPeut-être pris @billmcmillin l’a pris il y a 5 jours. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 20/100
databricks/appkit#718 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
databricks/appkit#699 ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 3/5 Une demi-journée Accessibilité débutants 42/100
databricks/appkit#656 · 1 commentaire ·
Les mainteneurs répondent en général sous 3 jours
-
Difficulté 4/5 3-5 jours Accessibilité débutants 28/100
databricks/appkit#648 · 2 commentaires ·
Les mainteneurs répondent en général sous 3 jours
Toutes les issues de databricks/appkit
Issues similaires
-
Add "append" and "prepend" slots for vue-vuetify extended renderersPeut-être pris @simeyc l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
eclipsesource/jsonforms#2668 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
README の通知条件を実際の判定処理に合わせるPeut-être pris @unhappychoice l’a pris aujourd’hui. Ouvertefactory:in-progress priority:medium
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
unhappychoice/oss-issue-opener#395 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug Website
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
OWASP/OWASP-Hunting#88 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour