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

Adapt exception handling in TriggerFanOut #142

Closed
2 tasks
killenb opened this issue Apr 6, 2020 · 3 comments
Closed
2 tasks

Adapt exception handling in TriggerFanOut #142

killenb opened this issue Apr 6, 2020 · 3 comments

Comments

@killenb
Copy link
Member

killenb commented Apr 6, 2020

Child of #123

# # # Tickets need rework. See comments # # #*

The TriggerFanout uses a transfer group and had to do exception handling on its own because the transfer group is replacing the transfer, which was that part that was decorated.

With the new scheme this is not necessary. The decorators are on preRead() and postRead(), and these are called by the transfer group. In addition the transfer is not re-tried by the exception handling any more, which would not work with a transfer group. In the new scheme

  • the first transfer completes with DataValitity::faulty
  • the following read blocks in preRead(), before the transfers are started

Hence, no special handling is needed in the TriggerFanOut

Task:

Notice: This ticket will break the tests in the master until #138 is implemented (which ChimeraTK/DeviceAccess#117 does as well)

@killenb
Copy link
Member Author

killenb commented Apr 20, 2020

Actually, this implementation might not be so bad. It does not harm at least, and might be an easier (but not so clean) solution to a transfer group which does this. It will be needed because the exception handling decorator cannot guarantee that only values with valid version number are going through in transfer groups. It either has to be handled here or in a special ExceptionHandlingTransferGroup.

@killenb
Copy link
Member Author

killenb commented Apr 24, 2020

The only solution I see at the moment is:

  • The ExceptionHandlingDecorator needs to know if its in a transfer group (currently only the outermost decorator knows)
  • In TransferGroups not recovery is tried but the exception goes through
  • An ExceptionHandlingTransferGroup catches the exception and re-tries the whole read(), incl. pre- and postRead().
  • The TriggerFanOut uses the ExceptionHandlingTransferGroup and does not special exception handling itself.

@mhier mhier removed the postponed label May 27, 2020
@killenb
Copy link
Member Author

killenb commented Jul 29, 2020

The exception handling has been adapted so the TriggerFanOut does not need to know about decorators if the TransferGroup. The TransferGroup is just working correctly with ExceptionHandlingDecorators.

All exception handling has been removed from the TriggerFanOut.

Case closed.

@killenb killenb closed this as completed Jul 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants