Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

When DIMSE timeout is hit while DIMSE request is still in progress, multiple threads can be blocked trying to abort association #1114

Closed
mdoris opened this issue Jan 25, 2022 · 1 comment
Assignees
Labels
Milestone

Comments

@mdoris
Copy link
Contributor

mdoris commented Jan 25, 2022

When configured to have the max operations > 1, a Timeout object is created for each DIMSE request. If a DIMSE timeout occurs while data is being written to the Association, each Timeout will fire and attempt to write an AABort to the Association. However, since the CStore is still ongoing, this results in max operations of blocked threads all waiting on the PDUEncoders monitor.

To Reproduce
Do a C-Move against Dcm4chee to c-move a study to a different system
Have the c-store (as a part of the c-move) for a specific instance be so slow that you hit DIMSE timeouts
When the DIMSE timeout is hit you will see the thread trying to abort the association be blocked

Expected behavior
A single thread should be attempting to perform the Timeout actions and write the AAbort. Threads duplicating the timeout action should exit

mdoris added a commit that referenced this issue Jan 26, 2022
…e AAbort. An association once aborted should not accept new calls to write()

(cherry picked from commit e43f391)
mdoris added a commit that referenced this issue Jan 26, 2022
(cherry picked from commit c58266a)
@gunterze gunterze self-assigned this Jan 26, 2022
@gunterze gunterze added the bug label Jan 26, 2022
@gunterze gunterze added this to the 5.26.0 milestone Jan 26, 2022
mdoris added a commit that referenced this issue Feb 9, 2022
…e AAbort. An association once aborted should not accept new calls to write()

(cherry picked from commit e43f391)
(cherry picked from commit 9546ffa)
mdoris added a commit that referenced this issue Feb 9, 2022
(cherry picked from commit c58266a)
(cherry picked from commit 64d12fd)
mdoris added a commit that referenced this issue Feb 10, 2022
* Fix #1114 IEI-176737 Only 1 timeout per association needs to write the AAbort. An association once aborted should not accept new calls to write()

(cherry picked from commit e43f391)
(cherry picked from commit 9546ffa)
(cherry picked from commit c58266a)
(cherry picked from commit 64d12fd)
@gunterze
Copy link
Member

Duplicates #1129

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants