Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • C cmsgemos
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 100
    • Issues 100
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 15
    • Merge requests 15
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • cmsgemonline
  • gem-daq
  • cmsgemos
  • Issues
  • #78
Closed
Open
Created May 11, 2020 by Laurent Petre@lpetreOwner

Make monitoring RPC methods resistant to single monitorable transaction errors

Summary

In their current state, the monitoring RPC methods either return the values from all the registers they are supposed to read, or from none of the registers.

Indeed, since the tempated RPC migration, utils::readReg can now throw an exception which is not caught into the monitoring RPC methods. As a consequence, the exception is forwarded to the client code, which catches the exception, but does not retrieve the actual monitorable values.

Different options can be envisioned, among them:

  1. Each register access is protected in a try-catch block.
  2. An alternate version of utils::readReg exist to make a read attempt.

In any case, a way to return the failed reads to the caller must designed. Return 0xdeaddead is not a long term solution since that value as valid as any other. A possibility would be not to filled the returned map with a key corresponding to the failed transaction. The client code will have to be adapted to be able to cope with such cases.

What is the expected correct behavior?

A failing register read (or write) should not fail the whole monitoring "block".

Assignee
Assign to
Time tracking