Package: orthanc-postgresql Version: 2.2-1 Severity: normal File: orthanc-postgres Tags: upstream
Recent version of the plugin fails to import database schema after uncaught exception (likely related to pg_trgm extension). Steps to reproduce: 1. create empty db as specified with /usr/share/doc/orthanc-postgresql/README.Debian (btw, step (3) is twice on the list:) as the result, fresh user 'orthanc' is the owner of the database 'orthanc_db' 2. restart the Orhtanc to receive: W0820 23:32:28.907349 main.cpp:1296] Orthanc version: 1.4.1 W0820 23:32:28.908768 OrthancInitialization.cpp:168] Scanning folder "/etc/orthanc/" for configuration files W0820 23:32:28.908809 OrthancInitialization.cpp:120] Reading the configuration from: "/etc/orthanc/orthanc.json" W0820 23:32:28.909047 OrthancInitialization.cpp:120] Reading the configuration from: "/etc/orthanc/postgresql.json" W0820 23:32:28.909100 OrthancInitialization.cpp:120] Reading the configuration from: "/etc/orthanc/worklists.json" W0820 23:32:28.909131 OrthancInitialization.cpp:120] Reading the configuration from: "/etc/orthanc/serve-folders.json" W0820 23:32:28.909294 Toolbox.cpp:1367] Falling back to system-wide default locale W0820 23:32:28.925459 FromDcmtkBridge.cpp:144] Loading the external DICOM dictionary "/usr/share/libdcmtk12/dicom.dic" W0820 23:32:28.934722 FromDcmtkBridge.cpp:144] Loading the external DICOM dictionary "/usr/share/libdcmtk12/private.dic" W0820 23:32:28.948061 main.cpp:655] Loading plugin(s) from: /usr/share/orthanc/plugins/ W0820 23:32:28.948297 PluginsManager.cpp:269] Registering plugin 'worklists' (version 1.4.1) W0820 23:32:28.948310 PluginsManager.cpp:168] Sample worklist plugin is initializing W0820 23:32:28.948427 PluginsManager.cpp:168] Worklist server is disabled by the configuration file W0820 23:32:28.948588 PluginsManager.cpp:269] Registering plugin 'serve-folders' (version 1.4.1) W0820 23:32:28.948770 PluginsManager.cpp:168] ServeFolders: Empty configuration file: No additional folder will be served! W0820 23:32:28.949510 PluginsManager.cpp:269] Registering plugin 'postgresql-index' (version 2.2) W0820 23:32:28.950038 PluginsManager.cpp:269] Registering plugin 'postgresql-storage' (version 2.2) W0820 23:32:28.955020 main.cpp:1088] Using a custom database from plugins W0820 23:32:28.955051 main.cpp:1099] Using a custom storage area from plugins W0820 23:32:28.996831 PluginsManager.cpp:168] Trying to enable trigram matching on the PostgreSQL database to speed up wildcard searches. This may take several minutes E0820 23:32:28.998932 PluginsManager.cpp:164] PostgreSQL error: ERROR: permission denied to create extension "pg_trgm" HINT: Must be superuser to create this extension. W0820 23:32:28.998999 PluginsManager.cpp:168] Performance warning: Your PostgreSQL server does not support trigram matching W0820 23:32:28.999009 PluginsManager.cpp:168] -> Consider installing the "pg_trgm" extension on the PostgreSQL server, e.g. on Debian: sudo apt install postgresql-contrib E0820 23:32:28.999210 PluginsManager.cpp:164] PostgreSQL error: ERROR: relation "globalproperties" does not exist LINE 1: SELECT value FROM GlobalProperties WHERE property=$1 ^ W0820 23:32:28.999284 PluginsManager.cpp:219] Unregistering plugin 'postgresql-index' (version 2.2) W0820 23:32:28.999298 PluginsManager.cpp:168] PostgreSQL index is finalizing W0820 23:32:28.999413 PluginsManager.cpp:219] Unregistering plugin 'postgresql-storage' (version 2.2) W0820 23:32:28.999427 PluginsManager.cpp:168] PostgreSQL storage area is finalizing W0820 23:32:28.999535 PluginsManager.cpp:219] Unregistering plugin 'serve-folders' (version 1.4.1) W0820 23:32:28.999582 PluginsManager.cpp:219] Unregistering plugin 'worklists' (version 1.4.1) W0820 23:32:28.999594 PluginsManager.cpp:168] Sample worklist plugin is finalizing E0820 23:32:28.999623 main.cpp:1322] Uncaught exception, stopping now: [Error with the database engine] (code 11) W0820 23:32:28.999671 main.cpp:1355] Orthanc has stopped 3. - once the orthanc gets superuser powers, the problem goes away, - once you import db schema by hand (and set the main properties), problem goes away 4. speculation: as the Orthanc::EmbeddedResources::GetFileResource (query, Orthanc::EmbeddedResources::POSTGRESQL_PREPARE_INDEX); db->Execute(query); and enabling the extension are both executed within same transaction (PostgreSQLIndex.cpp), perhaps the error in the second statment terminates the transaction prematurely (i.e. failing to enable extension == failing to import schema). -- System Information: Debian Release: buster/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (10, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 4.17.9-finwe (SMP w/4 CPU cores; PREEMPT) Locale: LANG=pl_PL.UTF-8, LC_CTYPE=pl_PL.UTF-8 (charmap=UTF-8), LANGUAGE=pl_PL.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages orthanc-postgresql depends on: ii libboost-filesystem1.62.0 1.62.0+dfsg-8 ii libboost-regex1.62.0 1.62.0+dfsg-8 ii libboost-system1.62.0 1.62.0+dfsg-8 ii libboost-thread1.62.0 1.62.0+dfsg-8 ii libc6 2.27-5 ii libgcc1 1:8.2.0-4 ii libjsoncpp1 1.7.4-3 ii libpq5 10.5-1 ii libstdc++6 8.2.0-4 ii libuuid1 2.32.1-0.1 ii orthanc 1.4.1+dfsg-1 ii zlib1g 1:1.2.11.dfsg-1 orthanc-postgresql recommends no packages. Versions of packages orthanc-postgresql suggests: ii postgresql 10+192 -- Configuration Files: /etc/orthanc/postgresql.json changed: { /** * Configuration to use PostgreSQL instead of the default SQLite * back-end of Orthanc. You will have to install the * "orthanc-postgresql" package to take advantage of this feature. * Have a look at "/usr/share/doc/orthanc-postgresql/README.Debian" * for a tutorial. **/ "PostgreSQL" : { // Enable the use of PostgreSQL to store the Orthanc index? "EnableIndex" : true, // Enable the use of PostgreSQL to store the DICOM files? "EnableStorage" : true, // Option 1: Specify explicit authentication parameters //"Host" : "localhost", //"Port" : 5432, //"Database" : "orthanc_db", //"Username" : "orthanc", //"Password" : "edited", // Option 2: Authenticate using PostgreSQL connection URI //"ConnectionUri" : "postgresql://orthanc_user:my_password@localhost:5432/orthanc_db", "ConnectionUri" : "postgresql:///orthanc_db?user=orthanc", // Optional: Disable the locking of the PostgreSQL database "Lock" : false } } -- no debconf information