question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Capture A-ABORT PDU

See original GitHub issue

I’m attempting to handle various problem situations with C-MOVE (as an SCU).

If I make a C-MOVE request to a local Orthanc server where I have deliberately used a move destination that is not configured in Orthanc, instead of returning a friendly 0xA801 response we get an A-ABORT PDU instead.

Currently, all I can do is wait for the association to time-out; I’d like to act on the ABORT instead.

PYNETDICOM logging:

[2020-01-16 22:58:57,148: WARNING/ForkPoolWorker-3] D: ========================== OUTGOING DIMSE MESSAGE ==========================
[2020-01-16 22:58:57,144: DEBUG/ForkPoolWorker-3] ========================== OUTGOING DIMSE MESSAGE ==========================
[2020-01-16 22:58:57,148: WARNING/ForkPoolWorker-3] D: Message Type                  : C-MOVE RQ
[2020-01-16 22:58:57,148: DEBUG/ForkPoolWorker-3] Message Type                  : C-MOVE RQ
[2020-01-16 22:58:57,149: WARNING/ForkPoolWorker-3] D: Message ID                    : 1
[2020-01-16 22:58:57,149: DEBUG/ForkPoolWorker-3] Message ID                    : 1
[2020-01-16 22:58:57,149: WARNING/ForkPoolWorker-3] D: Affected SOP Class UID        : Study Root Query/Retrieve Information Model - MOVE
[2020-01-16 22:58:57,149: DEBUG/ForkPoolWorker-3] Affected SOP Class UID        : Study Root Query/Retrieve Information Model - MOVE
[2020-01-16 22:58:57,150: WARNING/ForkPoolWorker-3] D: Move Destination              : PYNETDICOM
[2020-01-16 22:58:57,150: DEBUG/ForkPoolWorker-3] Move Destination              : PYNETDICOM      
[2020-01-16 22:58:57,150: WARNING/ForkPoolWorker-3] D: Identifier                    : Present
[2020-01-16 22:58:57,150: DEBUG/ForkPoolWorker-3] Identifier                    : Present
[2020-01-16 22:58:57,151: WARNING/ForkPoolWorker-3] D: Priority                      : Low
[2020-01-16 22:58:57,150: DEBUG/ForkPoolWorker-3] Priority                      : Low
[2020-01-16 22:58:57,151: WARNING/ForkPoolWorker-3] D: ============================ END DIMSE MESSAGE =============================
[2020-01-16 22:58:57,151: DEBUG/ForkPoolWorker-3] ============================ END DIMSE MESSAGE =============================
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: Abort Parameters:
[2020-01-16 22:58:57,213: DEBUG/ForkPoolWorker-3] Abort Parameters:
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: ============================ BEGIN A-ABORT PDU =============================
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] ============================ BEGIN A-ABORT PDU =============================
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: Abort Source: DUL service-user
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] Abort Source: DUL service-user
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: Abort Reason: No reason given
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] Abort Reason: No reason given
[2020-01-16 22:58:57,214: WARNING/ForkPoolWorker-3] D: ============================= END A-ABORT PDU ==============================
[2020-01-16 22:58:57,214: DEBUG/ForkPoolWorker-3] ============================= END A-ABORT PDU ==============================
[2020-01-16 22:59:27,154: WARNING/ForkPoolWorker-3] E: Connection closed or timed-out
[2020-01-16 22:59:27,154: ERROR/ForkPoolWorker-3] Connection closed or timed-out
[2020-01-16 22:59:27,155: WARNING/ForkPoolWorker-3] I: Aborting Association
[2020-01-16 22:59:27,155: INFO/ForkPoolWorker-3] Aborting Association
[2020-01-16 22:59:27,160: WARNING/ForkPoolWorker-3] I: Association Aborted
[2020-01-16 22:59:27,159: INFO/ForkPoolWorker-3] Association Aborted

Extract of logging from development version of OpenREM:

[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1255] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Requesting move association
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1258] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Move association requested
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1262] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Preparing to start move request
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1267] Query_id 1f99f27d-fed5-480f-864d-67aec08f73cf: Requesting move of 3 studies
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1270] Mv 00924055-9afc-41b3-94cd-976ff1f0348b Association with ORTHANC is established.
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1274] Mv: study_no 1
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1278] Mv: study no 1 series no 1
[16/Jan/2020 22:58:57] INFO [remapp.netdicom.qrscu:1293] Requesting move: modality MG, study 1 (of 3) series 1 (of 1). Series contains 1 objects
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1296] _move_req launched
[16/Jan/2020 22:58:57] DEBUG [remapp.netdicom.qrscu:1304] Series-level move - d is: (0008, 0052) Query/Retrieve Level                CS: 'SERIES'
(0020, 000d) Study Instance UID                  UI: 1.3.6.1.4.1.5962.99.1.693088767.1633245212.1473866904063.3.0
(0020, 000e) Series Instance UID                 UI: 1.3.6.1.4.1.5962.99.1.693088767.1633245212.1473866904063.4.0
[16/Jan/2020 22:59:27] INFO [remapp.netdicom.qrscu:1200] Move of study 1, series 1: Connection timed out, was aborted without reason given or received an invalid response. Check remote server logs Sub-ops completed: 0, failed: 0, warning: 0.

Logging from Orthanc:

W0116 22:58:57.152389 OrthancInitialization.cpp:845] Modality "PYNETDICOM" is not listed in the "DicomModalities" configuration option
W0116 22:58:57.152414 CommandDispatcher.cpp:812] Rejected Move request from remote DICOM modality with AET "PYNETDICOM" and hostname "127.0.0.1"

How can I act on the A-ABORT PDU?

Thanks

Ed

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:5 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
scaramallioncommented, Jan 20, 2020

Usually assoc.is_aborted will be what you look for, but while in DIMSE message exchange (i.e. a assoc.send_* method has been called) that won’t get updated until messaging is finished so acse.is_aborted() is your best bet when that’s the case.

0reactions
edmcdonaghcommented, Jan 20, 2020

Thanks for the explanation, much appreciated.

Read more comments on GitHub >

github_iconTop Results From Across the Web

9.3.8 A-ABORT PDU Structure
An A-ABORT PDU shall be made of a sequence of mandatory fields. ... field has the value (2) "DICOM UL service-provider", it shall...
Read more >
Abort Method - Medical Connections Ltd
An A-ABORT request is sent, and the association is then terminated. The full meanings of the parameters are defined in DICOM part 8,...
Read more >
ZRPDU CREATE–Create exclusion table and start PDU - IBM
Use this command to create the pool directory update (PDU) exclusion table and to start PDU processing. PDU processing returns released and lost...
Read more >
8 Network Communication Support for Message Exchange
A-ABORT PDU Structure ... Association Abort Related Actions; 9-10. ... The Presentation Context Definition Result List parameter shall take the form of a ......
Read more >
DICOM PS3.8 2016b - Network Communication Support for ...
A-ABORT PDU Structure . ... H. Index of Item and PDU Types (Informative) . ... Definition Result List parameter shall take the form...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found