Pig
  1. Pig
  2. PIG-125

improve exception handling and expressivness around tuple field access

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.1.0
    • Component/s: impl
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      Stumbled over the case that i'm accessing fields in a tuple which type are not as i expected. The stack trace in one case looked as follow:

      Exception in thread "main" java.lang.RuntimeException: execution failed
      	at com.my.Executor.run(Executor.java:284)
      Caused by: java.io.IOException: Unable to store alias C
      	at org.apache.pig.impl.util.WrappedIOException.wrap(WrappedIOException.java:16)
      	at org.apache.pig.PigServer.store(PigServer.java:335)
      	at org.apache.pig.PigServer.store(PigServer.java:317)
      	at com.my.Executor.run(Executor.java:280)
      	... 2 more
      Caused by: org.apache.pig.backend.executionengine.ExecException
      	at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:137)
      	at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:32)
      	at org.apache.pig.PigServer.store(PigServer.java:332)
      	... 4 more
      Caused by: java.io.IOException: Incompatible type for request getAtomField().
      	at org.apache.pig.data.Tuple.getAtomField(Tuple.java:177)
      	at com.my.DatabaseStoreFunc.putNext(DatabaseStoreFunc.java:83)
      	at org.apache.pig.impl.io.PigFile.store(PigFile.java:64)
      	at org.apache.pig.backend.local.executionengine.POStore.getNext(POStore.java:105)
      	at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:130)
      	... 6 more
      

      The exception message and the stacktrace gave me a clue what kind of problem i was facing. But to know what exactly happened i needed to debug (or temporarily add some system-outs).
      Looking at the code (of Tuple class) i think the exception-information can be improved easily (add index and actual field type information) .
      Also it seems that there is some space for simplifying the exception handling.

      1. PIG-125.patch
        11 kB
        Johannes Zillmann

        Activity

        Johannes Zillmann created issue -
        Johannes Zillmann made changes -
        Field Original Value New Value
        Attachment PIG-125.patch [ 12376566 ]
        Johannes Zillmann made changes -
        Description Stumbled over the case that i'm accessing fields in a tuple which type are not as i expected. The stack trace in one case looked as follow:

        {noformat}
        Exception in thread "main" java.lang.RuntimeException: execution failed
        at com.my.Executor.run(Executor.java:284)
        Caused by: java.io.IOException: Unable to store alias C
        at org.apache.pig.impl.util.WrappedIOException.wrap(WrappedIOException.java:16)
        at org.apache.pig.PigServer.store(PigServer.java:335)
        at org.apache.pig.PigServer.store(PigServer.java:317)
        at com.carrieriq.m2m.platform.FlowExecutor.runMmp3(FlowExecutor.java:280)
        ... 2 more
        Caused by: org.apache.pig.backend.executionengine.ExecException
        at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:137)
        at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:32)
        at org.apache.pig.PigServer.store(PigServer.java:332)
        ... 4 more
        Caused by: java.io.IOException: Incompatible type for request getAtomField().
        at org.apache.pig.data.Tuple.getAtomField(Tuple.java:177)
        at com.carrieriq.m2m.platform.mmp3.DatabaseStoreFunc.putNext(DatabaseStoreFunc.java:83)
        at org.apache.pig.impl.io.PigFile.store(PigFile.java:64)
        at org.apache.pig.backend.local.executionengine.POStore.getNext(POStore.java:105)
        at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:130)
        ... 6 more
        {noformat}

        The exception message and the stacktrace gave me a clue what kind of problem i was facing. But to know what exactly happened i needed to debug (or temporarily add some system-outs).
        Looking at the code (of Tuple class) i think the exception-information can be improved easily (add index and actual field type information) .
        Also it seems that there is some space for simplifying the exception handling.
        Stumbled over the case that i'm accessing fields in a tuple which type are not as i expected. The stack trace in one case looked as follow:

        {noformat}
        Exception in thread "main" java.lang.RuntimeException: execution failed
        at com.my.Executor.run(Executor.java:284)
        Caused by: java.io.IOException: Unable to store alias C
        at org.apache.pig.impl.util.WrappedIOException.wrap(WrappedIOException.java:16)
        at org.apache.pig.PigServer.store(PigServer.java:335)
        at org.apache.pig.PigServer.store(PigServer.java:317)
        at com.my.Executor.run(Executor.java:280)
        ... 2 more
        Caused by: org.apache.pig.backend.executionengine.ExecException
        at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:137)
        at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:32)
        at org.apache.pig.PigServer.store(PigServer.java:332)
        ... 4 more
        Caused by: java.io.IOException: Incompatible type for request getAtomField().
        at org.apache.pig.data.Tuple.getAtomField(Tuple.java:177)
        at com.my.DatabaseStoreFunc.putNext(DatabaseStoreFunc.java:83)
        at org.apache.pig.impl.io.PigFile.store(PigFile.java:64)
        at org.apache.pig.backend.local.executionengine.POStore.getNext(POStore.java:105)
        at org.apache.pig.backend.local.executionengine.LocalExecutionEngine.execute(LocalExecutionEngine.java:130)
        ... 6 more
        {noformat}

        The exception message and the stacktrace gave me a clue what kind of problem i was facing. But to know what exactly happened i needed to debug (or temporarily add some system-outs).
        Looking at the code (of Tuple class) i think the exception-information can be improved easily (add index and actual field type information) .
        Also it seems that there is some space for simplifying the exception handling.
        Patch Info [Patch Available]
        Alan Gates made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Fix Version/s 0.1.0 [ 12312848 ]
        Owen O'Malley made changes -
        Workflow jira [ 12424521 ] no-reopen-closed, patch-avail [ 12425437 ]
        Alan Gates made changes -
        Assignee Johannes Zillmann [ oae ]
        Alan Gates made changes -
        Status Resolved [ 5 ] Closed [ 6 ]

          People

          • Assignee:
            Johannes Zillmann
            Reporter:
            Johannes Zillmann
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development