On Thu, Dec 29, 2016 at 11:02:25AM +0100, Sébastien Jodogne wrote:

> > may I ask for confirmation of the following behaviour:
> > 
> > If Orthanc is manually started for a DB upgrade
> > 
> >     (say, on Debian:)
> >     /usr/sbin/Orthanc --upgrade --trace /etc/orthanc/
> > 
> > BUT the database is already at the required version THEN
> > Orthanc will not run the upgrade and fall back to starting
> > up as if --upgrade was not specified on the command line.
> 
> No: If the "--upgrade" command-line option is provided, the Orthanc server
> will never start. If no upgrade is required, this is a void operation that
> returns immediately.

I would have thought so. However, why does this script:

#-------------------------------------------------
        #!/bin/bash

        # GPLv2 or later, Karsten Hilbert

        set -x

        LOGDIR=/var/log/orthanc
        LOGFILE=${LOGDIR}/upgrade.log
        ARGS="--upgrade --trace /etc/orthanc/"
        ORTHANC_BINARY=`which Orthanc`


        echo "Stopping Orthanc server..."
        echo "#-----------" &> ${LOGFILE}
        systemctl stop orthanc.service &>> ${LOGFILE}
        RESULT=$?
        echo "#-----------" &>> ${LOGFILE}
        systemctl status orthanc.service &>> ${LOGFILE}
        sleep 1s
        if [ ${RESULT} -ne 0 ] ; then
                echo "#-----------" &>> ${LOGFILE}
                systemctl status orthanc.service &>> ${LOGFILE}
                echo "Cannot stop Orthanc, please inspect the log: ${LOGFILE}"
                read -p "Press <ENTER> to inspect the log" TMP
                less ${LOGFILE}
                exit ${RESULT}
        fi


        echo "Attempting database upgrade..."
        echo "#-----------" &>> ${LOGFILE}
        echo "Running <${ORTHANC_BINARY} ${ARGS}>" >> ${LOGFILE}
        sudo -u orthanc ${ORTHANC_BINARY} ${ARGS} &>> ${LOGFILE}
        RESULT=$?
        if [ ${RESULT} -ne 0 ] ; then
                cat ${ORTHANC_LOG} &>> ${LOGFILE}
                echo "#-----------" &>> ${LOGFILE}
                systemctl status orthanc.service &>> ${LOGFILE}
                echo "Upgrade failed, please check the log: ${LOGFILE}"
                read -p "Press <ENTER> to inspect the log" TMP
                less ${LOGFILE}
                exit ${RESULT}
        fi


        echo "Restarting Orthanc server..."
        sleep 1s
        echo "#-----------" &>> ${LOGFILE}
        systemctl start orthanc.service &>> ${LOGFILE}
        RESULT=$?
        if [ ${RESULT} -ne 0 ] ; then
                echo "#-----------" &>> ${LOGFILE}
                systemctl status orthanc.service &>> ${LOGFILE}
                echo "Cannot restart Orthanc, please check the log: ${LOGFILE}"
                read -p "Press <ENTER> to inspect the log" TMP
                less ${LOGFILE}
                exit ${RESULT}
        fi


        echo ""
        echo "Seems successful..."
        echo "Log: ${LOGFILE}"
        echo ""
        systemctl status orthanc.service
#-------------------------------------------------

stop at "Attempting database upgrade" until I hit
CTRL-C and show this output:

#-------------------------------------------------
        Skript gestartet auf Do 29 Dez 2016 13:28:46 CET
        root@hermes:~/orthanc# ./orthanc-upgrade_db 
        + LOGDIR=/var/log/orthanc
        + LOGFILE=/var/log/orthanc/upgrade.log
        + ARGS='--upgrade --trace /etc/orthanc/'
        ++ which Orthanc
        + ORTHANC_BINARY=/usr/sbin/Orthanc
        + echo 'Stopping Orthanc server...'
        Stopping Orthanc server...
        + echo '#-----------'
        + systemctl stop orthanc.service
        + RESULT=0
        + echo '#-----------'
        + systemctl status orthanc.service
        + sleep 1s
        + '[' 0 -ne 0 ']'
        + echo 'Attempting database upgrade...'
        Attempting database upgrade...
        + echo '#-----------'
        + echo 'Running </usr/sbin/Orthanc --upgrade --trace /etc/orthanc/>'
        + sudo -u orthanc /usr/sbin/Orthanc --upgrade --trace /etc/orthanc/
        ^C+ RESULT=0
        + '[' 0 -ne 0 ']'
        + echo 'Restarting Orthanc server...'
        Restarting Orthanc server...
        + sleep 1s
        + echo '#-----------'
        + systemctl start orthanc.service
        + RESULT=0
        + '[' 0 -ne 0 ']'
        + echo ''

        + echo 'Seems successful...'
        Seems successful...
        + echo 'Log: /var/log/orthanc/upgrade.log'
        Log: /var/log/orthanc/upgrade.log
        + echo ''

        + systemctl status orthanc.service
        
● orthanc.service - LSB: Orthanc init script
           Loaded: loaded (/etc/init.d/orthanc; generated; vendor preset: 
enabled)
           Active: active (running) since Thu 2016-12-29 13:29:26 
CET; 19ms ago
             Docs: man:systemd-sysv-generator(8)
          Process: 29048 ExecStop=/etc/init.d/orthanc stop (code=exited, 
status=0/SUCCESS)
          Process: 29146 ExecStart=/etc/init.d/orthanc start (code=exited, 
status=0/SUCCESS)
            Tasks: 1 (limit: 4915)
           CGroup: /system.slice/orthanc.service
                   └─29155 /usr/sbin/Orthanc --logdir=/var/log/orthanc 
/etc/orthanc/
        
        Dez 29 13:29:26 hermes systemd[1]: Starting LSB: Orthanc init 
script...
        Dez 29 13:29:26 hermes systemd[1]: Started LSB: Orthanc init script.
        
root@hermes:~/orthanc# exit
        exit

        Skript beendet: Do 29 Dez 2016 13:29:36 CET
#-------------------------------------------------

producing the following log ?

#-------------------------------------------------
        #-----------
        #-----------
        ● orthanc.service - LSB: Orthanc init script
           Loaded: loaded (/etc/init.d/orthanc; generated; vendor preset: 
enabled)
           Active: inactive (dead) since Thu 2016-12-29 13:29:00 CET; 18ms ago
             Docs: man:systemd-sysv-generator(8)
          Process: 29048 ExecStop=/etc/init.d/orthanc stop (code=exited, 
status=0/SUCCESS)
          Process: 28944 ExecStart=/etc/init.d/orthanc start (code=exited, 
status=0/SUCCESS)

        Dez 29 13:27:55 hermes systemd[1]: Starting LSB: Orthanc init script...
        Dez 29 13:27:55 hermes systemd[1]: Started LSB: Orthanc init script.
        Dez 29 13:28:57 hermes systemd[1]: Stopping LSB: Orthanc init script...
        Dez 29 13:29:00 hermes systemd[1]: Stopped LSB: Orthanc init script.
        #-----------
        Running </usr/sbin/Orthanc --upgrade --trace /etc/orthanc/>
        W1229 13:29:01.755332 main.cpp:1238] Orthanc version: 1.2.0
        W1229 13:29:01.755559 main.cpp:1095] Performance warning: Non-release 
build, runtime debug assertions are turned on
        W1229 13:29:01.758150 OrthancInitialization.cpp:173] Scanning folder 
"/etc/orthanc/" for configuration files
        W1229 13:29:01.758291 OrthancInitialization.cpp:125] Reading the 
configuration from: "/etc/orthanc/orthanc.json"
        W1229 13:29:01.759062 OrthancInitialization.cpp:125] Reading the 
configuration from: "/etc/orthanc/webviewer.json"
        W1229 13:29:01.759239 OrthancInitialization.cpp:125] Reading the 
configuration from: "/etc/orthanc/worklists.json"
        W1229 13:29:01.759389 OrthancInitialization.cpp:125] Reading the 
configuration from: "/etc/orthanc/serve-folders.json"
        W1229 13:29:01.759585 OrthancInitialization.cpp:125] Reading the 
configuration from: "/etc/orthanc/postgresql.json"
        W1229 13:29:01.784588 FromDcmtkBridge.cpp:141] Loading the external 
DICOM dictionary "/usr/share/libdcmtk8/dicom.dic"
        W1229 13:29:01.806442 FromDcmtkBridge.cpp:141] Loading the external 
DICOM dictionary "/usr/share/libdcmtk8/private.dic"
        W1229 13:29:01.822995 OrthancInitialization.cpp:488] Registering JPEG 
Lossless codecs
        W1229 13:29:01.823055 OrthancInitialization.cpp:493] Registering JPEG 
codecs
        W1229 13:29:01.843845 main.cpp:632] Loading plugin(s) from: 
/usr/share/orthanc/plugins/
        I1229 13:29:01.843939 PluginsManager.cpp:287] Scanning folder 
/usr/share/orthanc/plugins/ for plugins
        I1229 13:29:01.844021 PluginsManager.cpp:310] Found a shared library: 
"/usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so"
        W1229 13:29:01.845404 PluginsManager.cpp:268] Registering plugin 
'postgresql-storage' (version 2.0)
        T1229 13:29:01.845466 OrthancPlugins.cpp:2849] Calling service 7 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so
        T1229 13:29:01.845524 OrthancPlugins.cpp:2849] Calling service 13 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so
        W1229 13:29:01.845834 PluginsManager.cpp:167] Using PostgreSQL storage 
area
        T1229 13:29:01.845860 OrthancPlugins.cpp:2849] Calling service 10 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so
        T1229 13:29:01.845887 OrthancPlugins.cpp:2849] Calling service 11 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so
        T1229 13:29:01.845915 OrthancPlugins.cpp:2849] Calling service 11 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so
        T1229 13:29:01.845942 OrthancPlugins.cpp:2849] Calling service 11 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so
        W1229 13:29:01.845976 PluginsManager.cpp:167] Locking of the PostgreSQL 
database is disabled
        HINWEIS:  Relation »storagearea« existiert bereits, wird übersprungen
        T1229 13:29:01.875464 OrthancPlugins.cpp:2849] Calling service 1002 
from plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLStorage.so
        I1229 13:29:01.875534 OrthancPlugins.cpp:2693] Plugin has registered a 
custom storage area
        I1229 13:29:01.875601 PluginsManager.cpp:310] Found a shared library: 
"/usr/share/orthanc/plugins/libServeFolders.so"
        W1229 13:29:01.876142 PluginsManager.cpp:268] Registering plugin 
'serve-folders' (version 1.2.0)
        T1229 13:29:01.876207 OrthancPlugins.cpp:2849] Calling service 7 from 
plugin /usr/share/orthanc/plugins/libServeFolders.so
        T1229 13:29:01.876240 OrthancPlugins.cpp:2849] Calling service 7 from 
plugin /usr/share/orthanc/plugins/libServeFolders.so
        T1229 13:29:01.876299 OrthancPlugins.cpp:2849] Calling service 1004 
from plugin /usr/share/orthanc/plugins/libServeFolders.so
        I1229 13:29:01.876327 OrthancPlugins.cpp:1010] Plugin has registered a 
REST callback witout mutual exclusion on: /app/plugin-serve-folders.html
        T1229 13:29:01.876504 OrthancPlugins.cpp:2849] Calling service 13 from 
plugin /usr/share/orthanc/plugins/libServeFolders.so
        W1229 13:29:01.876814 PluginsManager.cpp:167] ServeFolders: Empty 
configuration file: No additional folder will be served!
        I1229 13:29:01.876864 PluginsManager.cpp:310] Found a shared library: 
"/usr/share/orthanc/plugins/libOrthancWebViewer.so"
        W1229 13:29:01.915318 PluginsManager.cpp:268] Registering plugin 
'web-viewer' (version 2.2)
        W1229 13:29:01.915399 PluginsManager.cpp:167] Initializing the Web 
viewer
        T1229 13:29:01.915478 OrthancPlugins.cpp:2849] Calling service 7 from 
plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        T1229 13:29:01.915578 OrthancPlugins.cpp:2849] Calling service 13 from 
plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        W1229 13:29:01.915915 PluginsManager.cpp:167] Web viewer using 2 
threads for the decoding of the DICOM images
        W1229 13:29:01.915940 PluginsManager.cpp:167] Storing the cache of the 
Web viewer in folder: /tmp/OrthancWebViewerCache
        I1229 13:29:01.917350 PluginsManager.cpp:171] No change in the 
versions, no need to clear the cache of the Web viewer
        W1229 13:29:01.917565 PluginsManager.cpp:167] Web viewer using a cache 
of 100 MB
        W1229 13:29:01.917605 PluginsManager.cpp:167] Using GDCM instead of the 
DICOM decoder that is built in Orthanc
        T1229 13:29:01.917628 OrthancPlugins.cpp:2849] Calling service 1006 
from plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.917671 OrthancPlugins.cpp:1108] Plugin has registered a 
callback to decode DICOM images (1 decoder(s) now active)
        T1229 13:29:01.917711 OrthancPlugins.cpp:2849] Calling service 1000 
from plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.917740 OrthancPlugins.cpp:1010] Plugin has registered a 
REST callback with mutual exclusion on: /web-viewer/series/(.*)
        T1229 13:29:01.917811 OrthancPlugins.cpp:2849] Calling service 1000 
from plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.917844 OrthancPlugins.cpp:1010] Plugin has registered a 
REST callback with mutual exclusion on: /web-viewer/is-stable-series/(.*)
        T1229 13:29:01.917882 OrthancPlugins.cpp:2849] Calling service 1000 
from plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.917912 OrthancPlugins.cpp:1010] Plugin has registered a 
REST callback with mutual exclusion on: /web-viewer/instances/(.*)
        T1229 13:29:01.917954 OrthancPlugins.cpp:2849] Calling service 1000 
from plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.917984 OrthancPlugins.cpp:1010] Plugin has registered a 
REST callback with mutual exclusion on: /web-viewer/libs/(.*)
        T1229 13:29:01.918018 OrthancPlugins.cpp:2849] Calling service 1000 
from plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.918048 OrthancPlugins.cpp:1010] Plugin has registered a 
REST callback with mutual exclusion on: /web-viewer/app/(.*)
        T1229 13:29:01.918082 OrthancPlugins.cpp:2849] Calling service 1003 
from plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.918115 OrthancPlugins.cpp:1035] Plugin has registered an 
OnChange callback
        T1229 13:29:01.918137 OrthancPlugins.cpp:2849] Calling service 7 from 
plugin /usr/share/orthanc/plugins/libOrthancWebViewer.so
        I1229 13:29:01.918201 PluginsManager.cpp:310] Found a shared library: 
"/usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so"
        W1229 13:29:01.918928 PluginsManager.cpp:268] Registering plugin 
'postgresql-index' (version 2.0)
        T1229 13:29:01.918984 OrthancPlugins.cpp:2849] Calling service 7 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        T1229 13:29:01.919020 OrthancPlugins.cpp:2849] Calling service 13 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        W1229 13:29:01.919383 PluginsManager.cpp:167] Using PostgreSQL index
        T1229 13:29:01.919408 OrthancPlugins.cpp:2849] Calling service 10 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        T1229 13:29:01.919504 OrthancPlugins.cpp:2849] Calling service 11 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        T1229 13:29:01.919536 OrthancPlugins.cpp:2849] Calling service 11 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        T1229 13:29:01.919565 OrthancPlugins.cpp:2849] Calling service 11 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        W1229 13:29:01.919601 PluginsManager.cpp:167] Locking of the PostgreSQL 
database is disabled
        T1229 13:29:01.926855 OrthancPlugins.cpp:2849] Calling service 12 from 
plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        T1229 13:29:01.928808 OrthancPlugins.cpp:2849] Calling service 5002 
from plugin /usr/share/orthanc/plugins/libOrthancPostgreSQLIndex.so
        I1229 13:29:01.928877 OrthancPlugins.cpp:2766] Plugin has registered a 
custom database back-end
        I1229 13:29:01.928958 PluginsManager.cpp:310] Found a shared library: 
"/usr/share/orthanc/plugins/libModalityWorklists.so"
        W1229 13:29:01.929469 PluginsManager.cpp:268] Registering plugin 
'worklists' (version 1.2.0)
        W1229 13:29:01.929525 PluginsManager.cpp:167] Sample worklist plugin is 
initializing
        T1229 13:29:01.929545 OrthancPlugins.cpp:2849] Calling service 7 from 
plugin /usr/share/orthanc/plugins/libModalityWorklists.so
        T1229 13:29:01.929580 OrthancPlugins.cpp:2849] Calling service 13 from 
plugin /usr/share/orthanc/plugins/libModalityWorklists.so
        W1229 13:29:01.929914 PluginsManager.cpp:167] The database of worklists 
will be read from folder: /var/lib/orthanc/worklists
        T1229 13:29:01.929940 OrthancPlugins.cpp:2849] Calling service 1005 
from plugin /usr/share/orthanc/plugins/libModalityWorklists.so
        I1229 13:29:01.929970 OrthancPlugins.cpp:1054] Plugin has registered a 
callback to handle modality worklists
        W1229 13:29:01.930023 main.cpp:1047] Using a custom database from 
plugins
        W1229 13:29:01.930044 main.cpp:1058] Using a custom storage area from 
plugins
        W1229 13:29:01.930379 HttpClient.cpp:685] HTTPS will use the CA 
certificates from this file: /etc/orthanc/
        I1229 13:29:01.930427 HttpClient.cpp:151] Setting the default timeout 
for HTTP client connections: 10 seconds
        I1229 13:29:01.930457 HttpClient.cpp:135] Setting the default proxy for 
HTTP client connections: 
        I1229 13:29:01.930479 DicomUserConnection.cpp:1209] Default timeout for 
DICOM connections if Orthanc acts as SCU (client): 10 seconds (0 = no timeout)
        I1229 13:29:01.932059 ServerIndex.cpp:1887] Starting the monitor for 
stable resources (stable age = 60)
        W1229 13:29:01.932758 LuaContext.cpp:103] Lua says: Lua toolbox 
installed
        W1229 13:29:01.932878 ServerContext.cpp:181] Disk compression is 
disabled
        I1229 13:29:01.932918 ServerContext.cpp:495] Storing MD5 for 
attachments: yes
        W1229 13:29:01.932951 ServerIndex.cpp:1402] No limit on the number of 
stored patients
        W1229 13:29:01.933044 ServerScheduler.cpp:134] The server scheduler has 
started
        W1229 13:29:01.933425 ServerIndex.cpp:1419] No limit on the size of the 
storage area
        I1229 13:29:01.934272 DicomServer.cpp:125] Setting timeout for DICOM 
connections if Orthanc acts as SCP (server): 30 seconds (0 = no timeout)
        W1229 13:29:01.934736 main.cpp:822] DICOM server listening with AET 
ORTHANC on port: 4242
        I1229 13:29:01.934813 MongooseServer.cpp:1001] HTTP keep alive is 
disabled
        I1229 13:29:01.934832 DicomServer.cpp:63] DICOM server started
        W1229 13:29:01.934882 MongooseServer.cpp:1027] HTTP compression is 
enabled
        W1229 13:29:01.937574 main.cpp:757] HTTP server listening on port: 8042
        W1229 13:29:01.937666 main.cpp:644] Orthanc has started
        W1229 13:29:21.853433 main.cpp:702] Orthanc is stopping
        W1229 13:29:21.964780 main.cpp:762]     HTTP server has stopped
        I1229 13:29:22.955748 DicomServer.cpp:84] DICOM server stopping
        W1229 13:29:22.956919 main.cpp:838]     DICOM server has stopped
        I1229 13:29:23.935010 ServerIndex.cpp:1931] Closing the monitor thread 
for stable resources
        W1229 13:29:23.935518 PluginsManager.cpp:218] Unregistering plugin 
'postgresql-index' (version 2.0)
        W1229 13:29:23.935608 PluginsManager.cpp:167] PostgreSQL index is 
finalizing
        W1229 13:29:23.935792 PluginsManager.cpp:218] Unregistering plugin 
'postgresql-storage' (version 2.0)
        W1229 13:29:23.935870 PluginsManager.cpp:167] Storage plugin is 
finalizing
        W1229 13:29:23.939691 PluginsManager.cpp:218] Unregistering plugin 
'serve-folders' (version 1.2.0)
        W1229 13:29:23.939836 PluginsManager.cpp:218] Unregistering plugin 
'web-viewer' (version 2.2)
        W1229 13:29:23.939882 PluginsManager.cpp:167] Finalizing the Web viewer
        W1229 13:29:25.423567 PluginsManager.cpp:218] Unregistering plugin 
'worklists' (version 1.2.0)
        W1229 13:29:25.423671 PluginsManager.cpp:167] Sample worklist plugin is 
finalizing
        W1229 13:29:25.424356 main.cpp:1297] Orthanc has stopped
        #-----------

Anything I am doing wrong here ?

Thanks,
Karsten
-- 
GPG key ID E4071346 @ eu.pool.sks-keyservers.net
E167 67FD A291 2BEA 73BD  4537 78B9 A9F9 E407 1346

Reply via email to