You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by pr...@apache.org on 2013/09/17 01:11:57 UTC

svn commit: r1523834 - /incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java

Author: prestonc
Date: Mon Sep 16 23:11:57 2013
New Revision: 1523834

URL: http://svn.apache.org/r1523834
Log:
Added new error messages to provide better error reporting when reading in a collection of XML files.

Modified:
    incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java

Modified: incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java?rev=1523834&r1=1523833&r2=1523834&view=diff
==============================================================================
--- incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java (original)
+++ incubator/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/metadata/VXQueryCollectionOperatorDescriptor.java Mon Sep 16 23:11:57 2013
@@ -67,6 +67,7 @@ public class VXQueryCollectionOperatorDe
         final short partitionId = (short) ctx.getTaskAttemptId().getTaskId().getPartition();
         final ITreeNodeIdProvider nodeIdProvider = new TreeNodeIdProvider(partitionId, dataSourceId, totalDataSources);
         final String nodeId = ctx.getJobletContext().getApplicationContext().getNodeId();
+        final int frameSize = ctx.getFrameSize();
 
         return new AbstractUnaryInputUnaryOutputOperatorNodePushable() {
             @Override
@@ -82,8 +83,13 @@ public class VXQueryCollectionOperatorDe
                 File collectionDirectory = new File(collectionModifiedName);
 
                 // Go through each tuple.
-                for (int t = 0; t < fta.getTupleCount(); ++t) {
-                    addXmlFile(collectionDirectory, t);
+                if (collectionDirectory.isDirectory()) {
+                    for (int t = 0; t < fta.getTupleCount(); ++t) {
+                        addXmlFile(collectionDirectory, t);
+                    }
+                } else {
+                    throw new HyracksDataException(
+                            "Invalid directory parameter passed to collection (VXQueryCollectionOperatorDescriptor.nextFrame).");
                 }
             }
 
@@ -107,17 +113,22 @@ public class VXQueryCollectionOperatorDe
                         } catch (Exception e) {
                             throw new HyracksDataException(e);
                         }
-//                        System.err.println(file.getPath());
-//                        System.err.println(abvsFileNode.getLength() - abvsFileNode.getStartOffset());
+
                         tb.addField(abvsFileNode.getByteArray(), abvsFileNode.getStartOffset(),
                                 abvsFileNode.getLength());
 
+                        // Can not fit XML file into frame.
+                        if (frameSize <= (abvsFileNode.getLength() - abvsFileNode.getStartOffset())) {
+                            throw new HyracksDataException(
+                                    "XML file is to large for the current frame size (VXQueryCollectionOperatorDescriptor.addXmlFile).");
+                        }
+
                         // Send to the writer.
                         if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
                             FrameUtils.flushFrame(frame, writer);
                             appender.reset(frame, true);
                             if (!appender.append(tb.getFieldEndOffsets(), tb.getByteArray(), 0, tb.getSize())) {
-                                throw new IllegalStateException(
+                                throw new HyracksDataException(
                                         "Could not write frame (VXQueryCollectionOperatorDescriptor.createPushRuntime).");
                             }
                         }