Uploaded image for project: 'Data Management'
  1. Data Management
  2. DM-36991

MTAirCompressor CSC doesn't reconnect

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Done
    • Resolution: Done
    • Fix Version/s: None
    • Component/s: ts_main_telescope
    • Labels:
      None

      Description

      MTAirCompressorCSC went to fault, most likely during/after summit power failure, with message recorded in log:

      CRITICAL base_csc:712 Fault! errorCode=1, errorReport="Error in telemetry loop: 'ExceptionResponse' object has no attribute 'registers'"

        Attachments

          Activity

          Hide
          pkubanek Petr Kubanek added a comment -

          This might point to some issues with pymodbus. The only way this message can be produced (the only use of \<registers\>) is from this line in aircompressor_model.py:

              def get_registers(self, address, count, unit, error_status):
                  status = self.read_holding_registers(address, count, unit=unit)
                  if status.isError():
                      raise ModbusError(status, error_status)
                  return status.registers
          

          except obviously ExceptionResponse.isError() shall be true (governed by function code, which is + with 0x80 in pymodbus code).

          I was looking into possibility function_code (which governs isError()) is wrongly assigned, but cannot find reason for it.

          Show
          pkubanek Petr Kubanek added a comment - This might point to some issues with pymodbus. The only way this message can be produced (the only use of \<registers\>) is from this line in aircompressor_model.py: def get_registers(self, address, count, unit, error_status): status = self.read_holding_registers(address, count, unit=unit) if status.isError(): raise ModbusError(status, error_status) return status.registers except obviously ExceptionResponse.isError() shall be true (governed by function code, which is + with 0x80 in pymodbus code). I was looking into possibility function_code (which governs isError()) is wrongly assigned, but cannot find reason for it.
          Hide
          pkubanek Petr Kubanek added a comment -

          Run more tests. The code now can throw TimeoutError, which wasn't handled correctly. I will run more tests today with compressors.

          Show
          pkubanek Petr Kubanek added a comment - Run more tests. The code now can throw TimeoutError, which wasn't handled correctly. I will run more tests today with compressors.
          Hide
          ecoughlin Eric Coughlin added a comment -

          Reviewed in GitHub.

          Show
          ecoughlin Eric Coughlin added a comment - Reviewed in GitHub.

            People

            Assignee:
            pkubanek Petr Kubanek
            Reporter:
            pkubanek Petr Kubanek
            Reviewers:
            Eric Coughlin
            Watchers:
            Brian Stalder, Eric Coughlin, Petr Kubanek
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved:

                Jenkins

                No builds found.