I still have not been able to reproduce the issue locally, but we were able to run a very controlled test on the system where we are seeing the issue.
Starting Configuration
- We do not explicitly set the
DicomScuTimeout so it should be the default value.
- All other global configuration is shown above.
- I confirmed that the number of logical cores is
8
- Prior to this test we dropped the database and deleted the storage volume
- Also running with
"StoreJobs": false to ease in resetting Orthanc.
Modality Config
{
"bbb4a53c-53c2-486a-9670-084fca988cde" : {
"AET" : "STENTOR_QRP",
"AllowEcho" : true,
"AllowEventReport" : true,
"AllowFind" : true,
"AllowFindWorklist" : true,
"AllowGet" : true,
"AllowMove" : true,
"AllowNAction" : true,
"AllowStore" : true,
"AllowTranscoding" : true,
"Host" : "10.18.50.204",
"LocalAet" : "",
"Manufacturer" : "Generic",
"Port" : 107,
"RetrieveMethod" : "SystemDefault",
"Timeout" : 10,
"UseDicomTls" : false
}
}
C-ECHO and C-FIND initially work as expected
C-ECHO
I1017 18:02:18.837356 HTTP-1 DicomAssociation.cpp:272] (dicom) Opening a DICOM SCU connection without DICOM TLS from AET "HFHS_ABCDEF3D" to AET "STENTOR_QRP" on host 10.18.50.204:107 (manufacturer: Generic, timeout: 10s)
T1017 18:02:18.837426 HTTP-1 DicomAssociation.cpp:370] (dicom) Request Parameters:
====================== BEGIN A-ASSOCIATE-RQ =====================
Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
Our Implementation Version Name: OFFIS_DCMTK_369
Their Implementation Class UID:
Their Implementation Version Name:
Application Context Name: 1.2.840.10008.3.1.1.1
Calling Application Name: HFHS_ABCDEF3D
Called Application Name: STENTOR_QRP
Responding Application Name:
Our Max PDU Receive Size: 16384
Their Max PDU Receive Size: 0
Presentation Contexts:
Context ID: 1 (Proposed)
Abstract Syntax: =VerificationSOPClass
Proposed SCP/SCU Role: Default
Proposed Transfer Syntax(es):
=LittleEndianExplicit
=LittleEndianImplicit
=BigEndianExplicit
Requested Extended Negotiation: none
Accepted Extended Negotiation: none
Requested User Identity Negotiation: none
User Identity Negotiation Response: none
======================= END A-ASSOCIATE-RQ ======================
D: setting network send timeout to 60 seconds
D: setting network receive timeout to 60 seconds
D: DULFSM: disabling Nagle algorithm as defined at compilation time (DISABLE_NAGLE_ALGORITHM)
D: Constructing Associate RQ PDU
D: PDU Type: Associate Accept, PDU Length: 179 + 6 bytes PDU header
D: 02 00 00 00 00 b3 00 01 00 00 53 54 45 4e 54 4f
D: 52 5f 51 52 50 20 20 20 20 20 48 46 48 53 5f 49
D: 4e 54 55 49 54 33 44 20 20 20 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 10 00 00 15 31 2e
D: 32 2e 38 34 30 2e 31 30 30 30 38 2e 33 2e 31 2e
D: 31 2e 31 21 00 00 1b 01 00 00 00 40 00 00 13 31
D: 2e 32 2e 38 34 30 2e 31 30 30 30 38 2e 31 2e 32
D: 2e 31 50 00 00 33 51 00 00 04 00 00 fa ea 52 00
D: 00 18 31 2e 33 2e 34 36 2e 36 37 30 35 38 39 2e
D: 34 32 2e 31 2e 34 2e 34 2e 35 55 00 00 0b 50 48
D: 49 53 55 44 4d 33 31 30 30
D: Parsing an A-ASSOCIATE PDU
T1017 18:02:18.840789 HTTP-1 DicomAssociation.cpp:380] (dicom) Connection Parameters: Transport connection: TCP/IP, unencrypted.
T1017 18:02:18.840821 HTTP-1 DicomAssociation.cpp:382] (dicom) Association Parameters Negotiated:
====================== BEGIN A-ASSOCIATE-AC =====================
Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
Our Implementation Version Name: OFFIS_DCMTK_369
Their Implementation Class UID: 1.3.46.670589.42.1.4.4.5
Their Implementation Version Name: PHISUDM3100
Application Context Name: 1.2.840.10008.3.1.1.1
Calling Application Name: HFHS_ABCDEF3D
Called Application Name: STENTOR_QRP
Responding Application Name: STENTOR_QRP
Our Max PDU Receive Size: 16384
Their Max PDU Receive Size: 64234
Presentation Contexts:
Context ID: 1 (Accepted)
Abstract Syntax: =VerificationSOPClass
Proposed SCP/SCU Role: Default
Accepted SCP/SCU Role: Default
Accepted Transfer Syntax: =LittleEndianExplicit
Requested Extended Negotiation: none
Accepted Extended Negotiation: none
Requested User Identity Negotiation: none
User Identity Negotiation Response: none
======================= END A-ASSOCIATE-AC ======================
T1017 18:02:18.840834 HTTP-1 DicomAssociation.cpp:397] (dicom) DicomAssociation::Open, adding SOPClassUID 1.2.840.10008.1.1 - TS 1.2.840.10008.1.2.1 - PC ID 1
I1017 18:02:18.842130 HTTP-1 DicomAssociation.cpp:112] (dicom) Closing DICOM association
C-FIND
FYI, the C-FIND was issued with a Timeout: 30 in the message body to /modality/id/query
I1017 18:14:09.909006 HTTP-29 HttpServer.cpp:1263] (http) POST /modalities/bbb4a53c-53c2-486a-9670-084fca988cde/query
I1017 18:14:09.909497 HTTP-29 DicomAssociation.cpp:272] (dicom) Opening a DICOM SCU connection without DICOM TLS from AET "HFHS_ABCDEF3D" to AET "STENTOR_QRP" on host 10.18.50.204:107 (manufacturer: Generic, timeout: 30s)
T1017 18:14:09.909586 HTTP-29 DicomAssociation.cpp:370] (dicom) Request Parameters:
====================== BEGIN A-ASSOCIATE-RQ =====================
Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
Our Implementation Version Name: OFFIS_DCMTK_369
Their Implementation Class UID:
Their Implementation Version Name:
Application Context Name: 1.2.840.10008.3.1.1.1
Calling Application Name: HFHS_ABCDEF3D
Called Application Name: STENTOR_QRP
Responding Application Name:
Our Max PDU Receive Size: 16384
Their Max PDU Receive Size: 0
Presentation Contexts:
Context ID: 1 (Proposed)
Abstract Syntax: =FINDPatientRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Proposed Transfer Syntax(es):
=LittleEndianExplicit
=LittleEndianImplicit
=BigEndianExplicit
Context ID: 3 (Proposed)
Abstract Syntax: =FINDStudyRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Proposed Transfer Syntax(es):
=LittleEndianExplicit
=LittleEndianImplicit
=BigEndianExplicit
Context ID: 5 (Proposed)
Abstract Syntax: =FINDModalityWorklistInformationModel
Proposed SCP/SCU Role: Default
Proposed Transfer Syntax(es):
=LittleEndianExplicit
=LittleEndianImplicit
=BigEndianExplicit
Requested Extended Negotiation: none
Accepted Extended Negotiation: none
Requested User Identity Negotiation: none
User Identity Negotiation Response: none
======================= END A-ASSOCIATE-RQ ======================
D: setting network send timeout to 60 seconds
D: setting network receive timeout to 60 seconds
D: DULFSM: disabling Nagle algorithm as defined at compilation time (DISABLE_NAGLE_ALGORITHM)
D: Constructing Associate RQ PDU
D: PDU Type: Associate Accept, PDU Length: 222 + 6 bytes PDU header
D: 02 00 00 00 00 de 00 01 00 00 53 54 45 4e 54 4f
D: 52 5f 51 52 50 20 20 20 20 20 48 46 48 53 5f 49
D: 4e 54 55 49 54 33 44 20 20 20 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 10 00 00 15 31 2e
D: 32 2e 38 34 30 2e 31 30 30 30 38 2e 33 2e 31 2e
D: 31 2e 31 21 00 00 1b 01 00 00 00 40 00 00 13 31
D: 2e 32 2e 38 34 30 2e 31 30 30 30 38 2e 31 2e 32
D: 2e 31 21 00 00 1b 03 00 00 00 40 00 00 13 31 2e
D: 32 2e 38 34 30 2e 31 30 30 30 38 2e 31 2e 32 2e
D: 31 21 00 00 08 05 00 03 00 40 00 00 00 50 00 00
D: 33 51 00 00 04 00 00 fa ea 52 00 00 18 31 2e 33
D: 2e 34 36 2e 36 37 30 35 38 39 2e 34 32 2e 31 2e
D: 34 2e 34 2e 35 55 00 00 0b 50 48 49 53 55 44 4d
D: 33 31 30 30
D: Parsing an A-ASSOCIATE PDU
T1017 18:14:09.914895 HTTP-29 DicomAssociation.cpp:380] (dicom) Connection Parameters: Transport connection: TCP/IP, unencrypted.
T1017 18:14:09.914926 HTTP-29 DicomAssociation.cpp:382] (dicom) Association Parameters Negotiated:
====================== BEGIN A-ASSOCIATE-AC =====================
Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
Our Implementation Version Name: OFFIS_DCMTK_369
Their Implementation Class UID: 1.3.46.670589.42.1.4.4.5
Their Implementation Version Name: PHISUDM3100
Application Context Name: 1.2.840.10008.3.1.1.1
Calling Application Name: HFHS_ABCDEF3D
Called Application Name: STENTOR_QRP
Responding Application Name: STENTOR_QRP
Our Max PDU Receive Size: 16384
Their Max PDU Receive Size: 64234
Presentation Contexts:
Context ID: 1 (Accepted)
Abstract Syntax: =FINDPatientRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Accepted SCP/SCU Role: Default
Accepted Transfer Syntax: =LittleEndianExplicit
Context ID: 3 (Accepted)
Abstract Syntax: =FINDStudyRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Accepted SCP/SCU Role: Default
Accepted Transfer Syntax: =LittleEndianExplicit
Context ID: 5 (Abstract Syntax Not Supported)
Abstract Syntax: =FINDModalityWorklistInformationModel
Proposed SCP/SCU Role: Default
Accepted SCP/SCU Role: Default
Requested Extended Negotiation: none
Accepted Extended Negotiation: none
Requested User Identity Negotiation: none
User Identity Negotiation Response: none
======================= END A-ASSOCIATE-AC ======================
T1017 18:14:09.914939 HTTP-29 DicomAssociation.cpp:397] (dicom) DicomAssociation::Open, adding SOPClassUID 1.2.840.10008.5.1.4.1.2.1.1 - TS 1.2.840.10008.1.2.1 - PC ID 1
T1017 18:14:09.914953 HTTP-29 DicomAssociation.cpp:397] (dicom) DicomAssociation::Open, adding SOPClassUID 1.2.840.10008.5.1.4.1.2.2.1 - TS 1.2.840.10008.1.2.1 - PC ID 3
T1017 18:14:09.914986 HTTP-29 DicomControlUserConnection.cpp:337] (dicom) Sending Find Request:
===================== OUTGOING DIMSE MESSAGE ====================
Message Type : C-FIND RQ
Presentation Context ID : 3
Message ID : 1
Affected SOP Class UID : FINDStudyRootQueryRetrieveInformationModel
Data Set : present
Priority : medium
======================= END DIMSE MESSAGE =======================
14:14:09.000 orthanc |
# Dicom-Data-Set
# Used TransferSyntax: Little Endian Explicit
(0008,0005) CS [ISO_IR 100] # 10, 1 SpecificCharacterSet
(0008,0050) SH [ANON7305565] # 12, 1 AccessionNumber
(0008,0052) CS [STUDY] # 6, 1 QueryRetrieveLevel
(0010,0020) LO (no value available) # 0, 0 PatientID
(0020,000d) UI (no value available) # 0, 0 StudyInstanceUID
14:14:09.000 orthanc |
I1017 18:14:16.872034 HTTP-29 DicomAssociation.cpp:112] (dicom) Closing DICOM association
T1017 18:14:16.871764 HTTP-29 DicomControlUserConnection.cpp:78] (dicom) Received Find Response 32668:
===================== INCOMING DIMSE MESSAGE ====================
Message Type : C-FIND RSP
Message ID Being Responded To : 1
Affected SOP Class UID : FINDStudyRootQueryRetrieveInformationModel
Data Set : present
DIMSE Status : 0xff00: Pending: Matches are continuing
======================= END DIMSE MESSAGE =======================
T1017 18:14:16.871824 HTTP-29 DicomControlUserConnection.cpp:86] (dicom) Response Identifiers 32668:
14:14:16.000 orthanc |
# Dicom-Data-Set
# Used TransferSyntax: Little Endian Explicit
(0008,0005) CS [ISO_IR 100] # 10, 1 SpecificCharacterSet
(0008,0020) DA [20250324] # 8, 1 StudyDate
(0008,0030) TM [142334] # 6, 1 StudyTime
(0008,0050) SH [ANON7305565] # 12, 1 AccessionNumber
(0008,0052) CS [STUDY] # 6, 1 QueryRetrieveLevel
(0008,0054) AE [STENTOR_QRP] # 12, 1 RetrieveAETitle
(0008,0056) CS [ONLINE] # 6, 1 InstanceAvailability
(0008,0061) CS [MR] # 2, 1 ModalitiesInStudy
(0008,0090) PN [REFERRING] # 10, 1 ReferringPhysicianName
(0010,0010) PN [ABCDEF3D^HFHS^^^] # 16, 1 PatientName
(0010,0020) LO [ABCDEF5809587] # 14, 1 PatientID
(0010,0030) DA [19670327] # 8, 1 PatientBirthDate
(0010,0040) CS [O] # 2, 1 PatientSex
(0020,000d) UI [2.16.840.1.114151.3.1.20566.9479912.4452.1759939163.7] # 54, 1 StudyInstanceUID
14:14:16.000 orthanc |
T1017 18:14:16.872014 HTTP-29 DicomControlUserConnection.cpp:361] (dicom) Received Final Find Response:
===================== INCOMING DIMSE MESSAGE ====================
Message Type : C-FIND RSP
Message ID Being Responded To : 1
Affected SOP Class UID : FINDStudyRootQueryRetrieveInformationModel
Data Set : none
DIMSE Status : 0x0000: Success: Matching is complete
======================= END DIMSE MESSAGE =======================
C-MOVE Stalls and never times out
Using the queries/$id/answers/0/retrieve endpoint, the API request never returns.
W1017 18:16:01.368331 HTTP-33 OrthancRestModalities.cpp:974] Driving C-Move SCU on remote modality STENTOR_QRP to target modality HFHS_ABCDEF3D
I1017 18:16:01.368520 HTTP-33 JobsRegistry.cpp:805] New DicomMoveScu job submitted with priority 0: cb622ef3-8543-4b63-bc9a-870a1ef1d572
I1017 18:16:01.368561 JOBS-WORKER-4 JobsEngine.cpp:138] (jobs) Executing DicomMoveScu job with priority 0 in worker thread 4: cb622ef3-8543-4b63-bc9a-870a1ef1d572
I1017 18:16:01.368612 JOBS-WORKER-4 DicomAssociation.cpp:272] (dicom) Opening a DICOM SCU connection without DICOM TLS from AET "HFHS_ABCDEF3D" to AET "STENTOR_QRP" on host 10.18.50.204:107 (manufacturer: Generic, timeout: 30s)
T1017 18:16:01.368679 JOBS-WORKER-4 DicomAssociation.cpp:370] (dicom) Request Parameters:
====================== BEGIN A-ASSOCIATE-RQ =====================
Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
Our Implementation Version Name: OFFIS_DCMTK_369
Their Implementation Class UID:
Their Implementation Version Name:
Application Context Name: 1.2.840.10008.3.1.1.1
Calling Application Name: HFHS_ABCDEF3D
Called Application Name: STENTOR_QRP
Responding Application Name:
Our Max PDU Receive Size: 16384
Their Max PDU Receive Size: 0
Presentation Contexts:
Context ID: 1 (Proposed)
Abstract Syntax: =MOVEPatientRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Proposed Transfer Syntax(es):
=LittleEndianExplicit
=LittleEndianImplicit
=BigEndianExplicit
Context ID: 3 (Proposed)
Abstract Syntax: =MOVEStudyRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Proposed Transfer Syntax(es):
=LittleEndianExplicit
=LittleEndianImplicit
=BigEndianExplicit
Requested Extended Negotiation: none
Accepted Extended Negotiation: none
Requested User Identity Negotiation: none
User Identity Negotiation Response: none
======================= END A-ASSOCIATE-RQ ======================
D: setting network send timeout to 60 seconds
D: setting network receive timeout to 60 seconds
D: DULFSM: disabling Nagle algorithm as defined at compilation time (DISABLE_NAGLE_ALGORITHM)
D: Constructing Associate RQ PDU
D: PDU Type: Associate Accept, PDU Length: 210 + 6 bytes PDU header
D: 02 00 00 00 00 d2 00 01 00 00 53 54 45 4e 54 4f
D: 52 5f 51 52 50 20 20 20 20 20 48 46 48 53 5f 49
D: 4e 54 55 49 54 33 44 20 20 20 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 10 00 00 15 31 2e
D: 32 2e 38 34 30 2e 31 30 30 30 38 2e 33 2e 31 2e
D: 31 2e 31 21 00 00 1b 01 00 00 00 40 00 00 13 31
D: 2e 32 2e 38 34 30 2e 31 30 30 30 38 2e 31 2e 32
D: 2e 31 21 00 00 1b 03 00 00 00 40 00 00 13 31 2e
D: 32 2e 38 34 30 2e 31 30 30 30 38 2e 31 2e 32 2e
D: 31 50 00 00 33 51 00 00 04 00 00 fa ea 52 00 00
D: 18 31 2e 33 2e 34 36 2e 36 37 30 35 38 39 2e 34
D: 32 2e 31 2e 34 2e 34 2e 35 55 00 00 0b 50 48 49
D: 53 55 44 4d 33 31 30 30
D: Parsing an A-ASSOCIATE PDU
T1017 18:16:01.371955 JOBS-WORKER-4 DicomAssociation.cpp:380] (dicom) Connection Parameters: Transport connection: TCP/IP, unencrypted.
T1017 18:16:01.371980 JOBS-WORKER-4 DicomAssociation.cpp:382] (dicom) Association Parameters Negotiated:
====================== BEGIN A-ASSOCIATE-AC =====================
Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
Our Implementation Version Name: OFFIS_DCMTK_369
Their Implementation Class UID: 1.3.46.670589.42.1.4.4.5
Their Implementation Version Name: PHISUDM3100
Application Context Name: 1.2.840.10008.3.1.1.1
Calling Application Name: HFHS_ABCDEF3D
Called Application Name: STENTOR_QRP
Responding Application Name: STENTOR_QRP
Our Max PDU Receive Size: 16384
Their Max PDU Receive Size: 64234
Presentation Contexts:
Context ID: 1 (Accepted)
Abstract Syntax: =MOVEPatientRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Accepted SCP/SCU Role: Default
Accepted Transfer Syntax: =LittleEndianExplicit
Context ID: 3 (Accepted)
Abstract Syntax: =MOVEStudyRootQueryRetrieveInformationModel
Proposed SCP/SCU Role: Default
Accepted SCP/SCU Role: Default
Accepted Transfer Syntax: =LittleEndianExplicit
Requested Extended Negotiation: none
Accepted Extended Negotiation: none
Requested User Identity Negotiation: none
User Identity Negotiation Response: none
======================= END A-ASSOCIATE-AC ======================
T1017 18:16:01.371990 JOBS-WORKER-4 DicomAssociation.cpp:397] (dicom) DicomAssociation::Open, adding SOPClassUID 1.2.840.10008.5.1.4.1.2.1.2 - TS 1.2.840.10008.1.2.1 - PC ID 1
T1017 18:16:01.372003 JOBS-WORKER-4 DicomAssociation.cpp:397] (dicom) DicomAssociation::Open, adding SOPClassUID 1.2.840.10008.5.1.4.1.2.2.2 - TS 1.2.840.10008.1.2.1 - PC ID 3
T1017 18:16:01.372050 JOBS-WORKER-4 DicomControlUserConnection.cpp:444] (dicom) Sending Move Request:
===================== OUTGOING DIMSE MESSAGE ====================
Message Type : C-MOVE RQ
Presentation Context ID : 3
Message ID : 1
Affected SOP Class UID : MOVEStudyRootQueryRetrieveInformationModel
Data Set : present
Priority : medium
Move Destination : HFHS_ABCDEF3D
======================= END DIMSE MESSAGE =======================
After this, we don’t see any more DICOM logs. The association seems to stay open and no C-MOVE responses are logged.
Same Request with DCMTK:
We tried the same request with movescu. Here we saw repeated C-MOVE-RSP messages. In fact they went on indefinitely, never progressing on sub-operations and always with a status of Pending.
$ movescu -d -S -aet HFHS_ABCDEF3D -aec STENTOR_QRP 10.18.50.204 107 -k QueryRetrieveLevel=STUDY -k StudyInstanceUID=2.16.840.1.114151.3.1.20566.9479912.4452.1759939163.7
D: DcmDataDictionary: Loading file: /home/ubuntu/dcmtk-3.6.9-linux-x86_64-static/share/dcmtk-3.6.9/dicom.dic
D: $dcmtk: movescu v3.6.9 2024-12-11 $
D:
D: Request Parameters:
D: ====================== BEGIN A-ASSOCIATE-RQ =====================
D: Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
D: Our Implementation Version Name: OFFIS_DCMTK_369
D: Their Implementation Class UID:
D: Their Implementation Version Name:
D: Application Context Name: 1.2.840.10008.3.1.1.1
D: Calling Application Name: HFHS_ABCDEF3D
D: Called Application Name: STENTOR_QRP
D: Responding Application Name:
D: Our Max PDU Receive Size: 16384
D: Their Max PDU Receive Size: 0
D: Presentation Contexts:
D: Context ID: 1 (Proposed)
D: Abstract Syntax: =FINDStudyRootQueryRetrieveInformationModel
D: Proposed SCP/SCU Role: Default
D: Proposed Transfer Syntax(es):
D: =LittleEndianExplicit
D: =BigEndianExplicit
D: =LittleEndianImplicit
D: Context ID: 3 (Proposed)
D: Abstract Syntax: =MOVEStudyRootQueryRetrieveInformationModel
D: Proposed SCP/SCU Role: Default
D: Proposed Transfer Syntax(es):
D: =LittleEndianExplicit
D: =BigEndianExplicit
D: =LittleEndianImplicit
D: Requested Extended Negotiation: none
D: Accepted Extended Negotiation: none
D: Requested User Identity Negotiation: none
D: User Identity Negotiation Response: none
D: ======================= END A-ASSOCIATE-RQ ======================
I: Requesting Association
D: setting network send timeout to 60 seconds
D: setting network receive timeout to 60 seconds
D: Constructing Associate RQ PDU
D: PDU Type: Associate Accept, PDU Length: 210 + 6 bytes PDU header
D: 02 00 00 00 00 d2 00 01 00 00 53 54 45 4e 54 4f
D: 52 5f 51 52 50 20 20 20 20 20 48 46 48 53 5f 49
D: 4e 54 55 49 54 33 44 20 20 20 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
D: 00 00 00 00 00 00 00 00 00 00 10 00 00 15 31 2e
D: 32 2e 38 34 30 2e 31 30 30 30 38 2e 33 2e 31 2e
D: 31 2e 31 21 00 00 1b 01 00 00 00 40 00 00 13 31
D: 2e 32 2e 38 34 30 2e 31 30 30 30 38 2e 31 2e 32
D: 2e 31 21 00 00 1b 03 00 00 00 40 00 00 13 31 2e
D: 32 2e 38 34 30 2e 31 30 30 30 38 2e 31 2e 32 2e
D: 31 50 00 00 33 51 00 00 04 00 00 fa ea 52 00 00
D: 18 31 2e 33 2e 34 36 2e 36 37 30 35 38 39 2e 34
D: 32 2e 31 2e 34 2e 34 2e 35 55 00 00 0b 50 48 49
D: 53 55 44 4d 33 31 30 30
D: Parsing an A-ASSOCIATE PDU
D: Association Parameters Negotiated:
D: ====================== BEGIN A-ASSOCIATE-AC =====================
D: Our Implementation Class UID: 1.2.276.0.7230010.3.0.3.6.9
D: Our Implementation Version Name: OFFIS_DCMTK_369
D: Their Implementation Class UID: 1.3.46.670589.42.1.4.4.5
D: Their Implementation Version Name: PHISUDM3100
D: Application Context Name: 1.2.840.10008.3.1.1.1
D: Calling Application Name: HFHS_ABCDEF3D
D: Called Application Name: STENTOR_QRP
D: Responding Application Name: STENTOR_QRP
D: Our Max PDU Receive Size: 16384
D: Their Max PDU Receive Size: 64234
D: Presentation Contexts:
D: Context ID: 1 (Accepted)
D: Abstract Syntax: =FINDStudyRootQueryRetrieveInformationModel
D: Proposed SCP/SCU Role: Default
D: Accepted SCP/SCU Role: Default
D: Accepted Transfer Syntax: =LittleEndianExplicit
D: Context ID: 3 (Accepted)
D: Abstract Syntax: =MOVEStudyRootQueryRetrieveInformationModel
D: Proposed SCP/SCU Role: Default
D: Accepted SCP/SCU Role: Default
D: Accepted Transfer Syntax: =LittleEndianExplicit
D: Requested Extended Negotiation: none
D: Accepted Extended Negotiation: none
D: Requested User Identity Negotiation: none
D: User Identity Negotiation Response: none
D: ======================= END A-ASSOCIATE-AC ======================
I: Association Accepted (Max Send PDV: 64222)
I: Sending Move Request
D: ===================== OUTGOING DIMSE MESSAGE ====================
D: Message Type : C-MOVE RQ
D: Presentation Context ID : 3
D: Message ID : 1
D: Affected SOP Class UID : MOVEStudyRootQueryRetrieveInformationModel
D: Data Set : present
D: Priority : medium
D: Move Destination : HFHS_ABCDEF3D
D: ======================= END DIMSE MESSAGE =======================
I: Request Identifiers:
I:
I: # Dicom-Data-Set
I: # Used TransferSyntax: Little Endian Explicit
I: (0008,0052) CS [STUDY] # 6, 1 QueryRetrieveLevel
I: (0020,000d) UI [2.16.840.1.114151.3.1.20566.9479912.4452.1759939163.7] # 54, 1 StudyInstanceUID
I:
D: DcmDataset::read() TransferSyntax="Little Endian Implicit"
I: Received Move Response 1
D: ===================== INCOMING DIMSE MESSAGE ====================
D: Message Type : C-MOVE RSP
D: Message ID Being Responded To : 1
D: Affected SOP Class UID : MOVEStudyRootQueryRetrieveInformationModel
D: Remaining Suboperations : 1453
D: Completed Suboperations : 0
D: Failed Suboperations : 0
D: Warning Suboperations : 0
D: Data Set : none
D: DIMSE Status : 0xff00: Pending: Sub-operations are continuing
D: ======================= END DIMSE MESSAGE =======================
D: DcmDataset::read() TransferSyntax="Little Endian Implicit"
I: Received Move Response 2
D: ===================== INCOMING DIMSE MESSAGE ====================
D: Message Type : C-MOVE RSP
D: Message ID Being Responded To : 1
D: Affected SOP Class UID : MOVEStudyRootQueryRetrieveInformationModel
D: Remaining Suboperations : 1453
D: Completed Suboperations : 0
D: Failed Suboperations : 0
D: Warning Suboperations : 0
D: Data Set : none
D: DIMSE Status : 0xff00: Pending: Sub-operations are continuing
D: ======================= END DIMSE MESSAGE =======================
D: DcmDataset::read() TransferSyntax="Little Endian Implicit"
I: Received Move Response 3
D: ===================== INCOMING DIMSE MESSAGE ====================
D: Message Type : C-MOVE RSP
D: Message ID Being Responded To : 1
D: Affected SOP Class UID : MOVEStudyRootQueryRetrieveInformationModel
D: Remaining Suboperations : 1453
D: Completed Suboperations : 0
D: Failed Suboperations : 0
D: Warning Suboperations : 0
D: Data Set : none
D: DIMSE Status : 0xff00: Pending: Sub-operations are continuing
D: ======================= END DIMSE MESSAGE =======================
D: DcmDataset::read() TransferSyntax="Little Endian Implicit"
I: Received Move Response 4
D: ===================== INCOMING DIMSE MESSAGE ====================
D: Message Type : C-MOVE RSP
D: Message ID Being Responded To : 1
D: Affected SOP Class UID : MOVEStudyRootQueryRetrieveInformationModel
D: Remaining Suboperations : 1453
D: Completed Suboperations : 0
D: Failed Suboperations : 0
D: Warning Suboperations : 0
D: Data Set : none
D: DIMSE Status : 0xff00: Pending: Sub-operations are continuing
D: ======================= END DIMSE MESSAGE =======================
...
We know that this likely indicates a misconfiguration at the networking level or on the remote modality. However, this seems to put Orthanc into a broken/frozen state.
Jobs Engine Frozen?
After this, Orthanc seems to stop responding in many operations:
- jobs cannot be cancelled or paused - the API request succeeds, but the job is not cancelled
- trying to use
/tools/reset hangs up after DICOM server stops
W1017 18:37:53.047286 MAIN main.cpp:1004] Reset request received, restarting Orthanc
W1017 18:37:53.047310 MAIN main.cpp:1008] Orthanc is stopping
W1017 18:37:53.146148 MAIN main.cpp:1246] HTTP server has stopped
W1017 18:37:53.345523 MAIN main.cpp:1362] DICOM server has stopped
Normally the next log is that the jobs engine has stopped, so I suspect it is hanging up because there are running jobs.
W1017 18:37:53.638636 MAIN JobsEngine.cpp:317] The jobs engine has stopped
- Running a query on the modality shows that the C-FIND operation succeeds, however the API request never responds
Please let me know if I can provide any other information that would be helpful. I wanted to be thorough in the logs above, but not overwhelm you with everything.
I am still working on a minimal working example, but I have been unable to replicate the behavior of the PACS (sending C-MOVE-RSPs but no C-STORE) so for now I’m not able to do this. If you have any suggestions on how I might replicate that with a script or other tool, please let me know. Thank you again for your help.