I am testing Orthanc in a virtual environment and am seeing “Error during store” messages when sending images between two different Orthanc instances, even though the images appear to successfully transfer.
Setup:
Four virtual machines (2 Orthanc, 2 Postgres)
Each Orthanc on its own virtual ubuntu box (built with Vagrant)
Each Orthanc with an associated postgres server (also built with Vagrant)
Postgres stores data to an encrypted volume (I expect some overhead due to encryption.)
4G Ram dedicated to each virtual machine
Orthanc 1.0.0
PostGreSQL plugin: 2.0
PostGres 9.4
I get an “Error during store” message both when performing the transfer through the GUI (Send to remote) and when invoking the transfer using the rest API.
In all cases, the images appear to transfer successfully. I can (eventually) browse them on the receiving Orthanc. Yet the sending Orthanc complains that the transfer failed (Error during store).
The sending orthanc’s log files indicate that the storescu command executed “succesfully”. Only the GUI (or API) return error status messages.
I observe a delay between the time that the sending Orthanc reports a completed transfer (in the log) and the time that all the images are visible on the receiving Orthanc. It appears that images are queued and processed in order on the receiving machine.
Given the delay between when the sender thinks the transfer is complete and the images are visible on the receiver, I wondered if the storescu operation occurs somewhat asynchronously. The receiver might be releasing each storescu of the sender after successfully queueing the image (as opposed to fully processing the image). Then, the sender is hitting some sort of timeout waiting for the receiver to indicate that all images were received and processed successfully.
I could easily believe this is a problem of my using an underpowered virtual postgres server. Maybe it just can’t keep up.
However, I also wondered whether there was some timeout value governing that storescu that I could modify. Something to tell the server to give the receiver a chance to work through all the images?
I am testing Orthanc in a virtual environment and am seeing “Error during store” messages when sending images between two different Orthanc instances, even though the images appear to successfully transfer. […]
In all cases, the images appear to transfer successfully. I can (eventually) browse them on the receiving Orthanc. Yet the sending Orthanc complains that the transfer failed (Error during store).
According to your description, as the Orthanc servers do communicate well, this most probably reflects a timeout in the Web user interface.
Internally, Orthanc Explorer makes AJAX requests using jQuery to the REST API of the Orthanc core. If some AJAX call takes too long, the browser will assume the call has failed, and Orthanc Explorer reports the problem. But, even after this timeout, the transfer between the Orthanc instances does continue. Note that the actual timeout is browser-specific:
In order to convince yourself that the problem is in Orthanc Explorer, you could try and manually transfer the images by calling the REST API of Orthanc from the command-line (instead of using Orthanc Explorer):
Thanks for the explanation, Sebastien. I’ll test a REST API push in the next few days when I return to this project. My recollection is that I saw the same errors, but I may have confused them with a GUI push during testing.
As for resources, we have a decent server and I’ve built somewhat minimal Vagrant machines. I can boost their resources if necessary. Regarding Vagrant vs. Docker, we’re still sorting out the pros and cons. We have some non-performance related constraints that tend to favor a Vagrant build at the moment.