<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmocom-bb/+/24021">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_toolkit/data_if.py: enrich encoding/decoding error messages<br><br>The keyword 'exc_info' of the logging API allows us to see a lot more<br>detailed information about the exception being caught, for example:<br><br>'''<br>  [ERROR] data_if.py:68 Failed to parse a TRXD Tx message from r=127.0.0.1:5802<br>  Traceback (most recent call last):<br>    File "/home/fixeria/trx_toolkit/codec.py", line 329, in _from_bytes<br>      offset += f.from_bytes(vals, data[offset:])<br>    File "/home/fixeria/trx_toolkit/codec.py", line 94, in from_bytes<br>      self._from_bytes(vals, data[:length])<br>    File "/home/fixeria/trx_toolkit/codec.py", line 239, in _from_bytes<br>      f.dec_val(vals, blob)<br>    File "/home/fixeria/trx_toolkit/codec.py", line 287, in dec_val<br>      raise DecodeError('Unexpected value %d, expected %d'<br>  codec.DecodeError: Unexpected value 6, expected 2<br><br>  The above exception was the direct cause of the following exception:<br><br>  Traceback (most recent call last):<br>    File "/home/fixeria/trx_toolkit/data_if.py", line 66, in recv_tx_msg<br>      msg.from_bytes(data)<br>    File "/home/fixeria/trx_toolkit/data_msg.py", line 201, in from_bytes<br>      self.codec._from_bytes(self.c, msg)<br>    File "/home/fixeria/trx_toolkit/codec.py", line 332, in _from_bytes<br>      raise DecodeError(self, f, offset) from e<br>  codec.DecodeError: (<trxd_proto.PDUv2Tx object at 0x7facbd079220>,<br>                      <trxd_proto.Header object at 0x7facbd076b50>, 0)<br>'''<br><br>From this example it can be seen that the 'codec.DecodeError' exception<br>has occured while parsing the 'Header' part of the 'PDUv2Tx' at offset<br>0, and caused by an unexpected TRXD PDU version value.<br><br>Change-Id: Iec80890e52f7aa24c145356b5f2e1f66a47fbd4c<br>Related: OS#4006, SYS#4895<br>---<br>M src/target/trx_toolkit/data_if.py<br>1 file changed, 9 insertions(+), 9 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/21/24021/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/target/trx_toolkit/data_if.py b/src/target/trx_toolkit/data_if.py</span><br><span>index f754c6c..5e8fe6e 100644</span><br><span>--- a/src/target/trx_toolkit/data_if.py</span><br><span>+++ b/src/target/trx_toolkit/data_if.py</span><br><span>@@ -64,9 +64,9 @@</span><br><span>           try:</span><br><span>                         msg = TxMsg(self._hdr_ver)</span><br><span>                   msg.from_bytes(data)</span><br><span style="color: hsl(0, 100%, 40%);">-            except:</span><br><span style="color: hsl(0, 100%, 40%);">-                 log.error("Failed to parse a TRXD Tx message "</span><br><span style="color: hsl(0, 100%, 40%);">-                                "from R:%s:%u" % (self.remote_addr, self.remote_port))</span><br><span style="color: hsl(120, 100%, 40%);">+              except Exception as e:</span><br><span style="color: hsl(120, 100%, 40%);">+                        log.error("Failed to parse a TRXD Tx message from r=%s:%u",</span><br><span style="color: hsl(120, 100%, 40%);">+                           self.remote_addr, self.remote_port, exc_info=e)</span><br><span>                    return None</span><br><span> </span><br><span>              return msg</span><br><span>@@ -79,9 +79,9 @@</span><br><span>               try:</span><br><span>                         msg = RxMsg(self._hdr_ver)</span><br><span>                   msg.from_bytes(data)</span><br><span style="color: hsl(0, 100%, 40%);">-            except:</span><br><span style="color: hsl(0, 100%, 40%);">-                 log.error("Failed to parse a TRXD Rx message "</span><br><span style="color: hsl(0, 100%, 40%);">-                                "from R:%s:%u" % (self.remote_addr, self.remote_port))</span><br><span style="color: hsl(120, 100%, 40%);">+              except Exception as e:</span><br><span style="color: hsl(120, 100%, 40%);">+                        log.error("Failed to parse a TRXD Rx message from r=%s:%u",</span><br><span style="color: hsl(120, 100%, 40%);">+                           self.remote_addr, self.remote_port, exc_info=e)</span><br><span>                    return None</span><br><span> </span><br><span>              return msg</span><br><span>@@ -89,9 +89,9 @@</span><br><span>       def send_msg(self, msg: RxMsg) -> None:</span><br><span>           try:</span><br><span>                         payload = msg.to_bytes()</span><br><span style="color: hsl(0, 100%, 40%);">-                except ValueError as e:</span><br><span style="color: hsl(0, 100%, 40%);">-                 log.error("Failed to encode a TRXD message ('%s') "</span><br><span style="color: hsl(0, 100%, 40%);">-                           "due to error: %s" % (msg.desc_hdr(), e))</span><br><span style="color: hsl(120, 100%, 40%);">+           except Exception as e:</span><br><span style="color: hsl(120, 100%, 40%);">+                        log.error("Failed to encode a TRXD message ('%s')",</span><br><span style="color: hsl(120, 100%, 40%);">+                           msg.desc_hdr(), exc_info=e)</span><br><span>                        # TODO: we may want to send a NOPE.ind here</span><br><span>                  return</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmocom-bb/+/24021">change 24021</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmocom-bb/+/24021"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Iec80890e52f7aa24c145356b5f2e1f66a47fbd4c </div>
<div style="display:none"> Gerrit-Change-Number: 24021 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>