appkit_cache_entries migration ownership issue
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 28/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- postgresql, typescript
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
}
- Lingua principale
- TypeScript
- Stelle
- 119
- Fork
- 36
- Merge medio
- 4g 16h
- PR unite (30g)
- 37
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di databricks/appkit
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
databricks/appkit#729 ·
I maintainer di solito rispondono entro 3 giorni
-
@databricks/lakebase: pool drops maxLifetimeSeconds and other pg options, so connections never recycle and Unity Catalog claims access fails after 4 hoursForse già presa @billmcmillin l’ha presa 5 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
databricks/appkit#718 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
databricks/appkit#699 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 3/5 Mezza giornata Idoneità per principianti 42/100
databricks/appkit#656 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
databricks/appkit#603 ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di databricks/appkit
Issue simili
-
Add "append" and "prepend" slots for vue-vuetify extended renderersForse già presa @simeyc l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
eclipsesource/jsonforms#2668 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
README の通知条件を実際の判定処理に合わせるForse già presa @unhappychoice l’ha presa oggi. Apertafactory:in-progress priority:medium
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
unhappychoice/oss-issue-opener#395 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug Website
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
OWASP/OWASP-Hunting#88 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno