summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2013-06-10 15:56:16 +0000
committerelie <elie>2013-06-10 15:56:16 +0000
commitec8b127d86fd1300dfb13aa54522015b33f8cf7b (patch)
treebb276d216c01beffab19b2a0582e8bbbac862a8f
parent394d8d9c247e5a1bd1eee61e8b049281038f6f63 (diff)
downloadpysnmp-git-ec8b127d86fd1300dfb13aa54522015b33f8cf7b.tar.gz
do not re-raise exceptions with original traceback as it breaks
py3k compatibility instead log the original traceback into debug routine
-rw-r--r--pysnmp/smi/instrum.py5
-rw-r--r--pysnmp/smi/mibs/SNMPv2-SMI.py9
2 files changed, 8 insertions, 6 deletions
diff --git a/pysnmp/smi/instrum.py b/pysnmp/smi/instrum.py
index a7605d41..0c636619 100644
--- a/pysnmp/smi/instrum.py
+++ b/pysnmp/smi/instrum.py
@@ -1,5 +1,6 @@
# MIB modules management
import sys
+import traceback
from pysnmp.smi import error
from pysnmp import debug
@@ -218,7 +219,7 @@ class MibInstrumController(AbstractMibInstrumController):
if origExc is None: # Take the first exception
origExc, origTraceback = sys.exc_info()[1:3]
status = 'err'
- debug.logger & debug.flagIns and debug.logger('flipFlopFsm: fun %s failed %s for %s=%r' % (f, origExc, name, val))
+ debug.logger & debug.flagIns and debug.logger('flipFlopFsm: fun %s failed %s for %s=%r with traceback: %s' % (f, origExc, name, val, traceback.format_exc(origTraceback)))
break
else:
debug.logger & debug.flagIns and debug.logger('flipFlopFsm: fun %s suceeded for %s=%r' % (f, name, val))
@@ -227,7 +228,7 @@ class MibInstrumController(AbstractMibInstrumController):
idx = idx + 1
if origExc:
if sys.version_info[0] <= 2:
- raise origExc, None, origTraceback
+ raise origExc
else:
try:
raise origExc.with_traceback(origTraceback)
diff --git a/pysnmp/smi/mibs/SNMPv2-SMI.py b/pysnmp/smi/mibs/SNMPv2-SMI.py
index f7c0a743..7b7f15cd 100644
--- a/pysnmp/smi/mibs/SNMPv2-SMI.py
+++ b/pysnmp/smi/mibs/SNMPv2-SMI.py
@@ -1,4 +1,5 @@
import sys
+import traceback
from pysnmp.smi.indices import OidOrderedDict
from pysnmp.smi import exval, error
from pysnmp.proto import rfc1902
@@ -532,10 +533,10 @@ class MibScalarInstance(MibTree):
else:
return self.syntax.clone(value)
except PyAsn1Error:
- why = sys.exc_info()[1]
- debug.logger & debug.flagIns and debug.logger('setValue: %s=%r failed: %s' % (self.name, value, why))
- if isinstance(why, error.TableRowManagement):
- raise why
+ exc_t, exc_v, exc_tb = sys.exc_info()
+ debug.logger & debug.flagIns and debug.logger('setValue: %s=%r failed %s with traceback %s' % (self.name, value, exc_v, traceback.format_exc(exc_tb)))
+ if isinstance(exc_v, error.TableRowManagement):
+ raise exc_v
else:
raise error.WrongValueError(idx=idx, name=name, msg=why)