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).");
}
}