appkit_cache_entries migration ownership issue
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 28/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- postgresql, typescript
Línea de trabajo
The failing migrations run from PersistentStorage.runMigrations in src/cache/storage/persistent.ts (around line 324), called from PersistentStorage.initialize and CacheManager.create in src/cache/index.ts. Start by reading how the pg pool is created and which role runs the DDL. The issue leaves the option's name and shape open, so agree the design with maintainers before coding. Done when a migration role can be configured and the table-owner error no longer occurs.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
When starting an appkit locally, Appkit tries to run a migration script for the appkit_cache_entries table.
When the migration runs for the first time, it locks the owner as the current identity. If we have the app deployed in Databricks, it will use the App service principal.
The problem comes when another user tries to run the app with their own credentials. The migration will fail because Appkit will try the default identity to run the DDLs, which is not the owner of the table/schema.
Proposed Solution
I propose Appkit allow us to define a role to run migrations as an optional parameter.
Detailed error message
[appkit:cache:persistent] Migration step 'create index (key_hash)' failed: error: must be owner of table appkit_cache_entries
at C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\[email protected][email protected]\node_modules\pg-pool\index.js:45:11
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async PersistentStorage.runMigrations (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\storage\persistent.ts:324:9)
at async PersistentStorage.initialize (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\storage\persistent.ts:58:7)
at async CacheManager.create (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\index.ts:188:9)
at async AppKit._createApp (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\core\appkit.ts:214:5) {
length: 103,
severity: 'ERROR',
code: '42501',
detail: undefined,
hint: undefined,
position: undefined,
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'aclchk.c',
line: '2981',
routine: 'aclcheck_error'
}
[appkit:cache:persistent] Error in persistent storage initialization: InitializationError: Error in running migrations for persistent storage
at InitializationError.migrationFailed (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\errors\initialization.ts:47:12)
at PersistentStorage.runMigrations (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\storage\persistent.ts:327:35)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async PersistentStorage.initialize (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\storage\persistent.ts:58:7)
at async CacheManager.create (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\index.ts:188:9)
at async AppKit._createApp (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\core\appkit.ts:214:5) {
cause: error: must be owner of table appkit_cache_entries
at C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\[email protected][email protected]\node_modules\pg-pool\index.js:45:11
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async PersistentStorage.runMigrations (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\storage\persistent.ts:324:9)
at async PersistentStorage.initialize (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\storage\persistent.ts:58:7)
at async CacheManager.create (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\cache\index.ts:188:9)
at async AppKit._createApp (C:\Users\aborsato\dev\udp\supply-chain-apps\red_keychain\src\red_keychain\node_modules\.pnpm\@[email protected]_@_71adcd3664c0a60618d3aa5c60033ec6\node_modules\@databricks\appkit\src\core\appkit.ts:214:5) {
length: 103,
severity: 'ERROR',
code: '42501',
detail: undefined,
hint: undefined,
position: undefined,
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'aclchk.c',
line: '2981',
routine: 'aclcheck_error'
},
context: undefined,
_clientMessage: undefined,
code: 'INITIALIZATION_ERROR',
statusCode: 500,
isRetryable: true
}
- Lenguaje dominante
- TypeScript
- Estrellas
- 119
- Forks
- 36
- Merge medio
- 4 d 16 h
- PR fusionados (30 d)
- 37
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de databricks/appkit
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
databricks/appkit#729 ·
Los mantenedores suelen responder en 3 días
-
@databricks/lakebase: pool drops maxLifetimeSeconds and other pg options, so connections never recycle and Unity Catalog claims access fails after 4 hoursPosiblemente ocupada @billmcmillin la tomó hace 5 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
databricks/appkit#718 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
databricks/appkit#699 ·
Los mantenedores suelen responder en 3 días
-
Dificultad 3/5 Medio día Aptitud para principiantes 42/100
databricks/appkit#656 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
databricks/appkit#603 ·
Los mantenedores suelen responder en 3 días
Todos los issues de databricks/appkit
Issues similares
-
Add "append" and "prepend" slots for vue-vuetify extended renderersPosiblemente ocupada @simeyc la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
eclipsesource/jsonforms#2668 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
README の通知条件を実際の判定処理に合わせるPosiblemente ocupada @unhappychoice la tomó hoy. Abiertofactory:in-progress priority:medium
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
unhappychoice/oss-issue-opener#395 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug Website
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
OWASP/OWASP-Hunting#88 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día