Repository: incubator-drill
Updated Branches:
  refs/heads/master 6dca24af0 -> 451dd608a


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/451dd608/protocol/src/main/java/org/apache/drill/exec/proto/beans/DrillPBError.java
----------------------------------------------------------------------
diff --git 
a/protocol/src/main/java/org/apache/drill/exec/proto/beans/DrillPBError.java 
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/DrillPBError.java
index 303f9b6..ac9cef5 100644
--- a/protocol/src/main/java/org/apache/drill/exec/proto/beans/DrillPBError.java
+++ b/protocol/src/main/java/org/apache/drill/exec/proto/beans/DrillPBError.java
@@ -53,6 +53,7 @@ public final class DrillPBError implements Externalizable, 
Message<DrillPBError>
     private DrillbitEndpoint endpoint;
     private int errorType;
     private String message;
+    private ExceptionWrapper exception;
     private List<ParsingError> parsingError;
 
     public DrillPBError()
@@ -114,6 +115,19 @@ public final class DrillPBError implements Externalizable, 
Message<DrillPBError>
         return this;
     }
 
+    // exception
+
+    public ExceptionWrapper getException()
+    {
+        return exception;
+    }
+
+    public DrillPBError setException(ExceptionWrapper exception)
+    {
+        this.exception = exception;
+        return this;
+    }
+
     // parsingError
 
     public List<ParsingError> getParsingErrorList()
@@ -195,6 +209,10 @@ public final class DrillPBError implements Externalizable, 
Message<DrillPBError>
                     message.message = input.readString();
                     break;
                 case 5:
+                    message.exception = input.mergeObject(message.exception, 
ExceptionWrapper.getSchema());
+                    break;
+
+                case 6:
                     if(message.parsingError == null)
                         message.parsingError = new ArrayList<ParsingError>();
                     message.parsingError.add(input.mergeObject(null, 
ParsingError.getSchema()));
@@ -222,12 +240,16 @@ public final class DrillPBError implements 
Externalizable, Message<DrillPBError>
         if(message.message != null)
             output.writeString(4, message.message, false);
 
+        if(message.exception != null)
+             output.writeObject(5, message.exception, 
ExceptionWrapper.getSchema(), false);
+
+
         if(message.parsingError != null)
         {
             for(ParsingError parsingError : message.parsingError)
             {
                 if(parsingError != null)
-                    output.writeObject(5, parsingError, 
ParsingError.getSchema(), true);
+                    output.writeObject(6, parsingError, 
ParsingError.getSchema(), true);
             }
         }
 
@@ -241,7 +263,8 @@ public final class DrillPBError implements Externalizable, 
Message<DrillPBError>
             case 2: return "endpoint";
             case 3: return "errorType";
             case 4: return "message";
-            case 5: return "parsingError";
+            case 5: return "exception";
+            case 6: return "parsingError";
             default: return null;
         }
     }
@@ -259,7 +282,8 @@ public final class DrillPBError implements Externalizable, 
Message<DrillPBError>
         __fieldMap.put("endpoint", 2);
         __fieldMap.put("errorType", 3);
         __fieldMap.put("message", 4);
-        __fieldMap.put("parsingError", 5);
+        __fieldMap.put("exception", 5);
+        __fieldMap.put("parsingError", 6);
     }
     
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/451dd608/protocol/src/main/java/org/apache/drill/exec/proto/beans/ExceptionWrapper.java
----------------------------------------------------------------------
diff --git 
a/protocol/src/main/java/org/apache/drill/exec/proto/beans/ExceptionWrapper.java
 
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ExceptionWrapper.java
new file mode 100644
index 0000000..c6e8b35
--- /dev/null
+++ 
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/ExceptionWrapper.java
@@ -0,0 +1,243 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Generated by http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+
+public final class ExceptionWrapper implements Externalizable, 
Message<ExceptionWrapper>, Schema<ExceptionWrapper>
+{
+
+    public static Schema<ExceptionWrapper> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static ExceptionWrapper getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final ExceptionWrapper DEFAULT_INSTANCE = new ExceptionWrapper();
+
+    
+    private String exceptionClass;
+    private String message;
+    private List<StackTraceElementWrapper> stackTrace;
+    private ExceptionWrapper cause;
+
+    public ExceptionWrapper()
+    {
+        
+    }
+
+    // getters and setters
+
+    // exceptionClass
+
+    public String getExceptionClass()
+    {
+        return exceptionClass;
+    }
+
+    public ExceptionWrapper setExceptionClass(String exceptionClass)
+    {
+        this.exceptionClass = exceptionClass;
+        return this;
+    }
+
+    // message
+
+    public String getMessage()
+    {
+        return message;
+    }
+
+    public ExceptionWrapper setMessage(String message)
+    {
+        this.message = message;
+        return this;
+    }
+
+    // stackTrace
+
+    public List<StackTraceElementWrapper> getStackTraceList()
+    {
+        return stackTrace;
+    }
+
+    public ExceptionWrapper setStackTraceList(List<StackTraceElementWrapper> 
stackTrace)
+    {
+        this.stackTrace = stackTrace;
+        return this;
+    }
+
+    // cause
+
+    public ExceptionWrapper getCause()
+    {
+        return cause;
+    }
+
+    public ExceptionWrapper setCause(ExceptionWrapper cause)
+    {
+        this.cause = cause;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<ExceptionWrapper> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public ExceptionWrapper newMessage()
+    {
+        return new ExceptionWrapper();
+    }
+
+    public Class<ExceptionWrapper> typeClass()
+    {
+        return ExceptionWrapper.class;
+    }
+
+    public String messageName()
+    {
+        return ExceptionWrapper.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return ExceptionWrapper.class.getName();
+    }
+
+    public boolean isInitialized(ExceptionWrapper message)
+    {
+        return true;
+    }
+
+    public void mergeFrom(Input input, ExceptionWrapper message) throws 
IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = 
input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.exceptionClass = input.readString();
+                    break;
+                case 2:
+                    message.message = input.readString();
+                    break;
+                case 3:
+                    if(message.stackTrace == null)
+                        message.stackTrace = new 
ArrayList<StackTraceElementWrapper>();
+                    message.stackTrace.add(input.mergeObject(null, 
StackTraceElementWrapper.getSchema()));
+                    break;
+
+                case 4:
+                    message.cause = input.mergeObject(message.cause, 
ExceptionWrapper.getSchema());
+                    break;
+
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, ExceptionWrapper message) throws 
IOException
+    {
+        if(message.exceptionClass != null)
+            output.writeString(1, message.exceptionClass, false);
+
+        if(message.message != null)
+            output.writeString(2, message.message, false);
+
+        if(message.stackTrace != null)
+        {
+            for(StackTraceElementWrapper stackTrace : message.stackTrace)
+            {
+                if(stackTrace != null)
+                    output.writeObject(3, stackTrace, 
StackTraceElementWrapper.getSchema(), true);
+            }
+        }
+
+
+        if(message.cause != null)
+             output.writeObject(4, message.cause, 
ExceptionWrapper.getSchema(), false);
+
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "exceptionClass";
+            case 2: return "message";
+            case 3: return "stackTrace";
+            case 4: return "cause";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new 
java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("exceptionClass", 1);
+        __fieldMap.put("message", 2);
+        __fieldMap.put("stackTrace", 3);
+        __fieldMap.put("cause", 4);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/451dd608/protocol/src/main/java/org/apache/drill/exec/proto/beans/InitializeFragments.java
----------------------------------------------------------------------
diff --git 
a/protocol/src/main/java/org/apache/drill/exec/proto/beans/InitializeFragments.java
 
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/InitializeFragments.java
new file mode 100644
index 0000000..f6c326d
--- /dev/null
+++ 
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/InitializeFragments.java
@@ -0,0 +1,175 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Generated by http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+
+public final class InitializeFragments implements Externalizable, 
Message<InitializeFragments>, Schema<InitializeFragments>
+{
+
+    public static Schema<InitializeFragments> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static InitializeFragments getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final InitializeFragments DEFAULT_INSTANCE = new 
InitializeFragments();
+
+    
+    private List<PlanFragment> fragment;
+
+    public InitializeFragments()
+    {
+        
+    }
+
+    // getters and setters
+
+    // fragment
+
+    public List<PlanFragment> getFragmentList()
+    {
+        return fragment;
+    }
+
+    public InitializeFragments setFragmentList(List<PlanFragment> fragment)
+    {
+        this.fragment = fragment;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<InitializeFragments> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public InitializeFragments newMessage()
+    {
+        return new InitializeFragments();
+    }
+
+    public Class<InitializeFragments> typeClass()
+    {
+        return InitializeFragments.class;
+    }
+
+    public String messageName()
+    {
+        return InitializeFragments.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return InitializeFragments.class.getName();
+    }
+
+    public boolean isInitialized(InitializeFragments message)
+    {
+        return true;
+    }
+
+    public void mergeFrom(Input input, InitializeFragments message) throws 
IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = 
input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    if(message.fragment == null)
+                        message.fragment = new ArrayList<PlanFragment>();
+                    message.fragment.add(input.mergeObject(null, 
PlanFragment.getSchema()));
+                    break;
+
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, InitializeFragments message) throws 
IOException
+    {
+        if(message.fragment != null)
+        {
+            for(PlanFragment fragment : message.fragment)
+            {
+                if(fragment != null)
+                    output.writeObject(1, fragment, PlanFragment.getSchema(), 
true);
+            }
+        }
+
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "fragment";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new 
java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("fragment", 1);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/451dd608/protocol/src/main/java/org/apache/drill/exec/proto/beans/StackTraceElementWrapper.java
----------------------------------------------------------------------
diff --git 
a/protocol/src/main/java/org/apache/drill/exec/proto/beans/StackTraceElementWrapper.java
 
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/StackTraceElementWrapper.java
new file mode 100644
index 0000000..25681fd
--- /dev/null
+++ 
b/protocol/src/main/java/org/apache/drill/exec/proto/beans/StackTraceElementWrapper.java
@@ -0,0 +1,251 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Generated by http://code.google.com/p/protostuff/ ... DO NOT EDIT!
+// Generated from protobuf
+
+package org.apache.drill.exec.proto.beans;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import com.dyuproject.protostuff.GraphIOUtil;
+import com.dyuproject.protostuff.Input;
+import com.dyuproject.protostuff.Message;
+import com.dyuproject.protostuff.Output;
+import com.dyuproject.protostuff.Schema;
+
+public final class StackTraceElementWrapper implements Externalizable, 
Message<StackTraceElementWrapper>, Schema<StackTraceElementWrapper>
+{
+
+    public static Schema<StackTraceElementWrapper> getSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    public static StackTraceElementWrapper getDefaultInstance()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    static final StackTraceElementWrapper DEFAULT_INSTANCE = new 
StackTraceElementWrapper();
+
+    
+    private String className;
+    private String fileName;
+    private int lineNumber;
+    private String methodName;
+    private Boolean isNativeMethod;
+
+    public StackTraceElementWrapper()
+    {
+        
+    }
+
+    // getters and setters
+
+    // className
+
+    public String getClassName()
+    {
+        return className;
+    }
+
+    public StackTraceElementWrapper setClassName(String className)
+    {
+        this.className = className;
+        return this;
+    }
+
+    // fileName
+
+    public String getFileName()
+    {
+        return fileName;
+    }
+
+    public StackTraceElementWrapper setFileName(String fileName)
+    {
+        this.fileName = fileName;
+        return this;
+    }
+
+    // lineNumber
+
+    public int getLineNumber()
+    {
+        return lineNumber;
+    }
+
+    public StackTraceElementWrapper setLineNumber(int lineNumber)
+    {
+        this.lineNumber = lineNumber;
+        return this;
+    }
+
+    // methodName
+
+    public String getMethodName()
+    {
+        return methodName;
+    }
+
+    public StackTraceElementWrapper setMethodName(String methodName)
+    {
+        this.methodName = methodName;
+        return this;
+    }
+
+    // isNativeMethod
+
+    public Boolean getIsNativeMethod()
+    {
+        return isNativeMethod;
+    }
+
+    public StackTraceElementWrapper setIsNativeMethod(Boolean isNativeMethod)
+    {
+        this.isNativeMethod = isNativeMethod;
+        return this;
+    }
+
+    // java serialization
+
+    public void readExternal(ObjectInput in) throws IOException
+    {
+        GraphIOUtil.mergeDelimitedFrom(in, this, this);
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException
+    {
+        GraphIOUtil.writeDelimitedTo(out, this, this);
+    }
+
+    // message method
+
+    public Schema<StackTraceElementWrapper> cachedSchema()
+    {
+        return DEFAULT_INSTANCE;
+    }
+
+    // schema methods
+
+    public StackTraceElementWrapper newMessage()
+    {
+        return new StackTraceElementWrapper();
+    }
+
+    public Class<StackTraceElementWrapper> typeClass()
+    {
+        return StackTraceElementWrapper.class;
+    }
+
+    public String messageName()
+    {
+        return StackTraceElementWrapper.class.getSimpleName();
+    }
+
+    public String messageFullName()
+    {
+        return StackTraceElementWrapper.class.getName();
+    }
+
+    public boolean isInitialized(StackTraceElementWrapper message)
+    {
+        return true;
+    }
+
+    public void mergeFrom(Input input, StackTraceElementWrapper message) 
throws IOException
+    {
+        for(int number = input.readFieldNumber(this);; number = 
input.readFieldNumber(this))
+        {
+            switch(number)
+            {
+                case 0:
+                    return;
+                case 1:
+                    message.className = input.readString();
+                    break;
+                case 2:
+                    message.fileName = input.readString();
+                    break;
+                case 3:
+                    message.lineNumber = input.readInt32();
+                    break;
+                case 4:
+                    message.methodName = input.readString();
+                    break;
+                case 5:
+                    message.isNativeMethod = input.readBool();
+                    break;
+                default:
+                    input.handleUnknownField(number, this);
+            }   
+        }
+    }
+
+
+    public void writeTo(Output output, StackTraceElementWrapper message) 
throws IOException
+    {
+        if(message.className != null)
+            output.writeString(1, message.className, false);
+
+        if(message.fileName != null)
+            output.writeString(2, message.fileName, false);
+
+        if(message.lineNumber != 0)
+            output.writeInt32(3, message.lineNumber, false);
+
+        if(message.methodName != null)
+            output.writeString(4, message.methodName, false);
+
+        if(message.isNativeMethod != null)
+            output.writeBool(5, message.isNativeMethod, false);
+    }
+
+    public String getFieldName(int number)
+    {
+        switch(number)
+        {
+            case 1: return "className";
+            case 2: return "fileName";
+            case 3: return "lineNumber";
+            case 4: return "methodName";
+            case 5: return "isNativeMethod";
+            default: return null;
+        }
+    }
+
+    public int getFieldNumber(String name)
+    {
+        final Integer number = __fieldMap.get(name);
+        return number == null ? 0 : number.intValue();
+    }
+
+    private static final java.util.HashMap<String,Integer> __fieldMap = new 
java.util.HashMap<String,Integer>();
+    static
+    {
+        __fieldMap.put("className", 1);
+        __fieldMap.put("fileName", 2);
+        __fieldMap.put("lineNumber", 3);
+        __fieldMap.put("methodName", 4);
+        __fieldMap.put("isNativeMethod", 5);
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/451dd608/protocol/src/main/protobuf/BitControl.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/BitControl.proto 
b/protocol/src/main/protobuf/BitControl.proto
index 4398b63..1fc5bb3 100644
--- a/protocol/src/main/protobuf/BitControl.proto
+++ b/protocol/src/main/protobuf/BitControl.proto
@@ -16,7 +16,7 @@ enum RpcType {
   GOODBYE = 2;
     
   // bit requests
-  REQ_INIATILIZE_FRAGMENT = 3; // Returns Handle
+  REQ_INIATILIZE_FRAGMENTS = 3; // Returns Handle
     
   REQ_CANCEL_FRAGMENT = 6; // send a cancellation message for a fragment, 
returns Ack
   REQ_RECEIVER_FINISHED = 7;
@@ -47,6 +47,10 @@ message FragmentStatus {
   optional FragmentHandle handle = 2;
 }
 
+message InitializeFragments {
+  repeated PlanFragment fragment = 1;
+}
+
 message PlanFragment {
   optional FragmentHandle handle = 1;
   optional float network_cost = 4;

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/451dd608/protocol/src/main/protobuf/GeneralRPC.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/GeneralRPC.proto 
b/protocol/src/main/protobuf/GeneralRPC.proto
index 48011bf..5538abe 100644
--- a/protocol/src/main/protobuf/GeneralRPC.proto
+++ b/protocol/src/main/protobuf/GeneralRPC.proto
@@ -28,12 +28,6 @@ message CompleteRpcMessage {
     optional bytes raw_body = 3; // optional
 }
 
-// Class to be used when an unexpected exception occurs while a rpc call is 
being evaluated.
-message RpcFailure {
-  optional int64 error_id = 1; // for server trackback.
-  optional int32 error_code = 2; // system defined error code.
-  optional string short_error = 3;
-  optional string long_error = 4;
-}
+
 
 

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/451dd608/protocol/src/main/protobuf/UserBitShared.proto
----------------------------------------------------------------------
diff --git a/protocol/src/main/protobuf/UserBitShared.proto 
b/protocol/src/main/protobuf/UserBitShared.proto
index 3ad9a09..fc2e89f 100644
--- a/protocol/src/main/protobuf/UserBitShared.proto
+++ b/protocol/src/main/protobuf/UserBitShared.proto
@@ -34,9 +34,26 @@ message DrillPBError{
   optional DrillbitEndpoint endpoint = 2;
   optional int32 error_type = 3;
   optional string message = 4;
-  repeated ParsingError parsing_error = 5; //optional, used when providing 
location of error within a piece of text.
+  optional ExceptionWrapper exception = 5;
+  repeated ParsingError parsing_error = 6; //optional, used when providing 
location of error within a piece of text.
 }
 
+message ExceptionWrapper {
+  optional string exception_class = 1;
+  optional string message = 2;
+  repeated StackTraceElementWrapper stack_trace = 3;
+  optional ExceptionWrapper cause = 4;
+}
+
+message StackTraceElementWrapper {
+    optional string class_name = 1;
+    optional string file_name = 2;
+    optional int32 line_number = 3;
+    optional string method_name = 4;
+    optional bool is_native_method = 5;
+}
+
+
 message ParsingError{
   optional int32 start_column = 2;
   optional int32 start_row = 3;

Reply via email to