Skip to content

Convert Python stack trace to Java stack trace  #10

Open
@drj11

Description

@drj11

If the Python code raises an Exception then this GATE plugin handles this by noting that it couldn't read JSON from the Python process and closing the pipeline.

In some sense this works, in that processing is halted, but it's not very clean and the plugin couldn't be more intelligent about catching the Exception (on the Python side) and reporting it via a particular JSON message.

Here's an example from a (accidentally misconfigured) rumourVeracity Python code:

Using Theano backend.
Traceback (most recent call last):
  File "/home/ac1xdrj/prj/models/rumourVeracity/veracity_gate.py", line 4, in <module>
    from innerAttentionModel import InnerAttentionModel
  File "/home/ac1xdrj/prj/models/rumourVeracity/innerAttentionModel.py", line 5, in <module>
    from keras import backend as K
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/__init__.py", line 3, in <module>
    from . import utils
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/utils/__init__.py", line 6, in <module>
    from . import conv_utils
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/utils/conv_utils.py", line 9, in <module>
    from .. import backend as K
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/backend/__init__.py", line 86, in <module>
    from .theano_backend import *
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/backend/theano_backend.py", line 7, in <module>
    import theano
ImportError: No module named theano
Unable to read JSON from python process, closing pipeline
com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
 at [Source: java.io.BufferedReader@69946c29; line: 1, column: 1]
	at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3036)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2978)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2128)
	at gate.python.PythonPR.execute(PythonPR.java:158)
	at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
	at gate.creole.SerialController.runComponent(SerialController.java:225)
	at gate.creole.SerialController.executeImpl(SerialController.java:157)
	at gate.creole.AbstractController.execute(AbstractController.java:78)
	at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
	at gate.gui.SerialControllerEditor$RunAction$1.run(SerialControllerEditor.java:1759)
	at java.lang.Thread.run(Thread.java:748)
gate.creole.ExecutionException: Unable to read JSON from python process - perhaps process printed to stdout? (use stderr instead)
	at gate.python.PythonPR.execute(PythonPR.java:165)
	at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
	at gate.creole.SerialController.runComponent(SerialController.java:225)
	at gate.creole.SerialController.executeImpl(SerialController.java:157)
	at gate.creole.AbstractController.execute(AbstractController.java:78)
	at gate.util.Benchmark.executeWithBenchmarking(Benchmark.java:291)
	at gate.gui.SerialControllerEditor$RunAction$1.run(SerialControllerEditor.java:1759)
	at java.lang.Thread.run(Thread.java:748)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input
 at [Source: java.io.BufferedReader@69946c29; line: 1, column: 1]
	at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
	at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3036)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2978)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2128)
	at gate.python.PythonPR.execute(PythonPR.java:158)
	... 7 more
Using Theano backend.
Traceback (most recent call last):
  File "/home/ac1xdrj/prj/models/rumourVeracity/veracity_gate.py", line 4, in <module>
    from innerAttentionModel import InnerAttentionModel
  File "/home/ac1xdrj/prj/models/rumourVeracity/innerAttentionModel.py", line 5, in <module>
    from keras import backend as K
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/__init__.py", line 3, in <module>
    from . import utils
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/utils/__init__.py", line 6, in <module>
    from . import conv_utils
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/utils/conv_utils.py", line 9, in <module>
    from .. import backend as K
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/backend/__init__.py", line 86, in <module>
    from .theano_backend import *
  File "/home/ac1xdrj/prj/models/rumourVeracity/venv/local/lib/python2.7/site-packages/keras/backend/theano_backend.py", line 7, in <module>
    import theano
ImportError: No module named theano

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions