diff --git a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
index 616dfa9..d5fe6ed 100644
--- a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
+++ b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/api/AbstractCompilerFactoryBuilder.java
@@ -116,7 +116,7 @@
     public IBinaryComparatorFactoryProvider getComparatorFactoryProvider() {
         return comparatorFactoryProvider;
     }
-    
+
     public void setPredicateEvaluatorFactoryProvider(IPredicateEvaluatorFactoryProvider predEvaluatorFactoryProvider) {
         this.predEvaluatorFactoryProvider = predEvaluatorFactoryProvider;
     }
diff --git a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java
index 2f5acda..5a1b461 100644
--- a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java
+++ b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/PrioritizedRuleController.java
@@ -28,13 +28,13 @@
 import org.apache.hyracks.algebricks.core.rewriter.base.IAlgebraicRewriteRule;
 
 /**
- * 
+ *
  * Runs each rule until it produces no changes. Then the whole collection of
  * rules is run again until no change is made.
- * 
- * 
+ *
+ *
  * @author Nicola
- * 
+ *
  */
 
 public class PrioritizedRuleController extends AbstractRuleController {
diff --git a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java
index b6d6d61..61b75c9 100644
--- a/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java
+++ b/algebricks/algebricks-compiler/src/main/java/org/apache/hyracks/algebricks/compiler/rewriter/rulecontrollers/SequentialFixpointRuleController.java
@@ -30,7 +30,7 @@
 /**
  * Runs rules sequentially (round-robin), until one iteration over all rules
  * produces no change.
- * 
+ *
  * @author Nicola
  */
 public class SequentialFixpointRuleController extends AbstractRuleController {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java
index 90c0de2..9d68fae 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/ILogicalOperator.java
@@ -50,7 +50,7 @@
     public List<LogicalVariable> getSchema();
 
     /*
-     * 
+     *
      * support for visitors
      */
 
@@ -73,7 +73,7 @@
     /**
      * Get the variable propogation policy from this operator's input to its
      * output.
-     * 
+     *
      * @return The VariablePropogationPolicy.
      */
     public VariablePropagationPolicy getVariablePropagationPolicy();
@@ -103,4 +103,4 @@
      * Indicates whether the expressions used by this operator must be variable reference expressions.
      */
     public boolean requiresVariableReferenceExpressions();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
index 465d1a2..fc30ce2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/base/LogicalVariable.java
@@ -20,7 +20,7 @@
 
 /**
  * Represents a logical variable in an asterix logical plan.
- * 
+ *
  * @author Vinayak R. Borkar [vborkar@ics.uci.edu]
  */
 public final class LogicalVariable {
@@ -52,4 +52,4 @@
     public int hashCode() {
         return id;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
index 11207e0..67f285d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/expressions/AggregateFunctionCallExpression.java
@@ -28,17 +28,17 @@
 import org.apache.hyracks.algebricks.core.algebra.visitors.ILogicalExpressionVisitor;
 
 /**
- * 
+ *
  * An aggregate function may be executed in a "two step" mode. First the
  * "step-one" aggregates are run and then the results are passed to the
  * "step-two" aggregators. The convention is the following:
- * 
+ *
  * 1. The step-one aggregate must be able to accept the same arguments as the
  * original aggregate function call.
- * 
+ *
  * 2. The step-two aggregate must be a unary function that accepts as input the
  * output of the step-one aggregate.
- * 
+ *
  */
 
 public class AggregateFunctionCallExpression extends AbstractFunctionCallExpression {
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
index 823ebae..1ad7fe6 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/metadata/IMetadataProvider.java
@@ -78,7 +78,7 @@
     /**
      * Creates the insert runtime of IndexInsertDeletePOperator, which models
      * insert/delete operations into a secondary index.
-     * 
+     *
      * @param dataSource
      *            Target secondary index.
      * @param propagatedSchema
@@ -117,7 +117,7 @@
     /**
      * Creates the delete runtime of IndexInsertDeletePOperator, which models
      * insert/delete operations into a secondary index.
-     * 
+     *
      * @param dataSource
      *            Target secondary index.
      * @param propagatedSchema
@@ -157,7 +157,7 @@
      * Creates the TokenizeOperator for IndexInsertDeletePOperator, which tokenizes
      * secondary key into [token, number of token] pair in a length-partitioned index.
      * In case of non length-partitioned index, it tokenizes secondary key into [token].
-     * 
+     *
      * @param dataSource
      *            Target secondary index.
      * @param propagatedSchema
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java
index c5fac83..aebbba8 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/AssignOperator.java
@@ -36,12 +36,12 @@
 
 /**
  * It corresponds to the Map operator in other algebras.
- * 
+ *
  * @author Nicola
  */
 
 public class AssignOperator extends AbstractAssignOperator {
-	
+
 	private LocalOrderProperty explicitOrderingProperty;
 
     public AssignOperator(List<LogicalVariable> vars, List<Mutable<ILogicalExpression>> exprs) {
@@ -120,4 +120,4 @@
 			LocalOrderProperty explicitOrderingProperty) {
 		this.explicitOrderingProperty = explicitOrderingProperty;
 	}
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java
index dfd2c8f..d2f7715 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/ExtensionOperator.java
@@ -116,7 +116,7 @@
     public String toString() {
         return delegate.toString();
     }
-    
+
     public IOperatorExtension getDelegate() {
         return delegate;
     }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java
index 4d578d9..e61d9a2 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/IOperatorExtension.java
@@ -47,8 +47,8 @@
     void setPhysicalOperator(IPhysicalOperator physicalOperator);
 
     ExecutionMode getExecutionMode();
-    
+
     public void getUsedVariables(Collection<LogicalVariable> usedVars);
-    
+
     public void getProducedVariables(Collection<LogicalVariable> producedVars);
 }
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java
index 9d48fa0..1c5f324 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/logical/PartitioningSplitOperator.java
@@ -69,11 +69,11 @@
     public int getDefaultBranchIndex() {
         return defaultBranchIndex;
     }
-    
+
     public int getNumOutputBranches() {
         return (defaultBranchIndex == expressions.size()) ? expressions.size() + 1 : expressions.size();
     }
-    
+
     @Override
     public LogicalOperatorTag getOperatorTag() {
         return LogicalOperatorTag.PARTITIONINGSPLIT;
@@ -116,4 +116,4 @@
         return createPropagatingAllInputsTypeEnvironment(ctx);
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java
index 5b04e08..a92bd70 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/operators/physical/InMemoryHashJoinPOperator.java
@@ -92,10 +92,10 @@
             Object t = env.getVarType(v);
             comparatorFactories[i++] = bcfp.getBinaryComparatorFactory(t, true);
         }
-        
+
         IPredicateEvaluatorFactoryProvider predEvaluatorFactoryProvider = context.getPredicateEvaluatorFactoryProvider();
         IPredicateEvaluatorFactory predEvaluatorFactory = ( predEvaluatorFactoryProvider == null ? null : predEvaluatorFactoryProvider.getPredicateEvaluatorFactory(keysLeft, keysRight));
-        
+
         RecordDescriptor recDescriptor = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op),
                 propagatedSchema, context);
         IOperatorDescriptorRegistry spec = builder.getJobSpec();
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java
index ea9769a..af29994 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/ILocalStructuralProperty.java
@@ -36,7 +36,7 @@
      * Returns the retained property regarding to a collection of variables,
      * e.g., some variables used in the property may not exist in the input
      * collection and hence the data property changes.
-     * 
+     *
      * @param vars
      *            , an input collection of variables
      * @return the retained data property.
@@ -45,7 +45,7 @@
 
     /**
      * Returns the additional data property within each group, which is dictated by the group keys.
-     * 
+     *
      * @param vars
      *            , group keys.
      * @return the additional data property within each group.
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java
index bca500a..d872491 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/IPhysicalPropertiesVector.java
@@ -31,7 +31,7 @@
     public List<ILocalStructuralProperty> getLocalProperties();
 
     /**
-     * 
+     *
      * @param reqd
      *            vector of required properties
      * @param equivalenceClasses
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java
index 1097dff..d1d0ca9 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/LocalOrderProperty.java
@@ -90,7 +90,7 @@
 
     /**
      * Whether current property implies the required property
-     * 
+     *
      * @param required
      *            , a required property
      * @return true if the current property satisfies the required property; otherwise false.
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
index ae9f4f1..711c0e7 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/PropertiesUtil.java
@@ -177,7 +177,7 @@
 
     /**
      * Converts a list of OrderColumns to a list of LogicalVariables.
-     * 
+     *
      * @param orderColumns
      *            , a list of OrderColumns
      * @return the list of LogicalVariables
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java
index 97363b5..7ae7e62 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/StructuralPropertiesVector.java
@@ -63,7 +63,7 @@
     }
 
     /**
-     * 
+     *
      * @param reqd
      *            vector of required properties
      * @return a vector of properties from pvector that are not delivered by the
@@ -102,4 +102,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java
index 8885b5d..d78684b 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/properties/VariablePropagationPolicy.java
@@ -43,8 +43,8 @@
     /**
      * Adds, from each source, only variables that do not already appear in the
      * target.
-     * 
-     * 
+     *
+     *
      */
     public static final VariablePropagationPolicy ADDNEWVARIABLES = new VariablePropagationPolicy() {
         @Override
@@ -79,4 +79,4 @@
         };
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
index 827c075..39de006 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/algebra/util/OperatorPropertiesUtil.java
@@ -66,7 +66,7 @@
     /**
      * Adds the free variables of the plan rooted at that operator to the
      * collection provided.
-     * 
+     *
      * @param op
      * @param vars
      *            - The collection to which the free variables will be added.
@@ -107,7 +107,7 @@
     /**
      * Adds the free variables of the operator path from
      * op to dest, where dest is a direct/indirect input operator of op in the query plan.
-     * 
+     *
      * @param op
      *            , the start operator.
      * @param dest
@@ -165,7 +165,7 @@
 
     /***
      * Recursively checks if the dest operator is in the path of a nested plan
-     * 
+     *
      * @param op
      * @param dest
      * @return
diff --git a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
index 03f721c..f0f858d 100644
--- a/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
+++ b/algebricks/algebricks-core/src/main/java/org/apache/hyracks/algebricks/core/rewriter/base/PhysicalOptimizationConfig.java
@@ -22,7 +22,7 @@
 
 public class PhysicalOptimizationConfig {
     private static final int MB = 1048576;
-    
+
     private static final String FRAMESIZE = "FRAMESIZE";
     private static final String MAX_FRAMES_EXTERNAL_SORT = "MAX_FRAMES_EXTERNAL_SORT";
     private static final String MAX_FRAMES_EXTERNAL_GROUP_BY = "MAX_FRAMES_EXTERNAL_GROUP_BY";
@@ -30,7 +30,7 @@
     private static final String MAX_FRAMES_HYBRID_HASH = "MAX_FRAMES_HYBRID_HASH";
     private static final String FUDGE_FACTOR = "FUDGE_FACTOR";
     private static final String MAX_RECORDS_PER_FRAME = "MAX_RECORDS_PER_FRAME";
-    
+
     private static final String DEFAULT_HASH_GROUP_TABLE_SIZE = "DEFAULT_HASH_GROUP_TABLE_SIZE";
     private static final String DEFAULT_EXTERNAL_GROUP_TABLE_SIZE = "DEFAULT_EXTERNAL_GROUP_TABLE_SIZE";
     private static final String DEFAULT_IN_MEM_HASH_JOIN_TABLE_SIZE = "DEFAULT_IN_MEM_HASH_JOIN_TABLE_SIZE";
@@ -56,7 +56,7 @@
     public void setFrameSize(int frameSize) {
         setInt(FRAMESIZE, frameSize);
     }
-    
+
     public double getFudgeFactor() {
         return getDouble(FUDGE_FACTOR, 1.3);
     }
@@ -64,7 +64,7 @@
     public void setFudgeFactor(double fudgeFactor) {
         setDouble(FUDGE_FACTOR, fudgeFactor);
     }
-    
+
     public int getMaxRecordsPerFrame() {
         return getInt(MAX_RECORDS_PER_FRAME, 512);
     }
@@ -81,7 +81,7 @@
     public void setMaxFramesLeftInputHybridHash(int frameLimit) {
         setInt(MAX_FRAMES_LEFT_INPUT_HYBRID_HASH, frameLimit);
     }
-    
+
     public int getMaxFramesHybridHash() {
         int frameSize = getFrameSize();
         return getInt(MAX_FRAMES_HYBRID_HASH, (int) (64L * MB / frameSize));
@@ -99,7 +99,7 @@
     public void setMaxFramesExternalGroupBy(int frameLimit) {
         setInt(MAX_FRAMES_EXTERNAL_GROUP_BY, frameLimit);
     }
-    
+
     public int getMaxFramesExternalSort() {
         int frameSize = getFrameSize();
         return getInt(MAX_FRAMES_EXTERNAL_SORT, (int) (((long) 32 * MB) / frameSize));
@@ -144,7 +144,7 @@
         else
             return Integer.parseInt(value);
     }
-    
+
     private void setDouble(String property, double value) {
         properties.setProperty(property, Double.toString(value));
     }
diff --git a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java
index 8749e25..7525180 100644
--- a/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java
+++ b/algebricks/algebricks-data/src/main/java/org/apache/hyracks/algebricks/data/IResultSerializerFactoryProvider.java
@@ -25,7 +25,7 @@
 public interface IResultSerializerFactoryProvider extends Serializable {
     /**
      * Returns a result serializer factory
-     * 
+     *
      * @param fields
      *            - A position of the fields in the order it should be written in the output.
      * @param printerFactories
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java
index 7b7740d..6be1d9f 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/ast/LoadNode.java
@@ -29,7 +29,7 @@
         this.dataFile = dataFile;
         this.schema = schema;
     }
-    
+
     @Override
     public Tag getTag() {
         return Tag.LOAD;
@@ -42,4 +42,4 @@
     public Schema getSchema() {
         return schema;
     }
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java
index f91be1e..f8ffe93 100644
--- a/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java
+++ b/algebricks/algebricks-examples/piglet-example/src/main/java/org/apache/hyracks/algebricks/examples/piglet/types/Type.java
@@ -29,6 +29,6 @@
         BAG,
         MAP
     }
-    
+
     public abstract Tag getTag();
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java
index eb39332..42ae597 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ComplexUnnestToProductRule.java
@@ -298,7 +298,7 @@
 
     /**
      * check whether the operator is inside a sub-plan
-     * 
+     *
      * @param nestedRootRef
      * @return true-if it is; false otherwise.
      */
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java
index 165530a..0a4672b 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ConsolidateSelectsRule.java
@@ -37,7 +37,7 @@
 /**
  * Matches the following operator pattern:
  * (select) <-- ((assign)* <-- (select)*)+
- * 
+ *
  * Consolidates the selects to:
  * (select) <-- (assign)*
  *
@@ -59,7 +59,7 @@
 
         IFunctionInfo andFn = context.getMetadataProvider().lookupFunction(AlgebricksBuiltinFunctions.AND);
         // New conjuncts for consolidated select.
-        AbstractFunctionCallExpression conj = null;        
+        AbstractFunctionCallExpression conj = null;
         AbstractLogicalOperator topMostOp = null;
         AbstractLogicalOperator selectParent = null;
         AbstractLogicalOperator nextSelect = firstSelect;
@@ -75,14 +75,14 @@
         	}
             // Remember the top-most op that we are not removing.
             topMostOp = selectParent;
-            
+
             // Initialize the new conjuncts, if necessary.
             if (conj == null) {
             	conj = new ScalarFunctionCallExpression(andFn);
             	// Add the first select's condition.
             	conj.getArguments().add(new MutableObject<ILogicalExpression>(firstSelect.getCondition().getValue()));
             }
-            
+
             // Consolidate all following selects.
             do {
                 // Add the condition nextSelect to the new list of conjuncts.
@@ -90,21 +90,21 @@
                 selectParent = nextSelect;
                 nextSelect = (AbstractLogicalOperator) nextSelect.getInputs().get(0).getValue();
             } while (nextSelect.getOperatorTag() == LogicalOperatorTag.SELECT);
-            
+
             // Hook up the input of the top-most remaining op if necessary.
             if (topMostOp.getOperatorTag() == LogicalOperatorTag.ASSIGN || topMostOp == firstSelect) {
             	topMostOp.getInputs().set(0, selectParent.getInputs().get(0));
             }
-            
+
             // Prepare for next iteration.
             nextSelect = selectParent;
         } while (true);
-		
+
 		// Did we consolidate any selects?
         if (conj == null) {
         	return false;
         }
-        
+
         // Set the new conjuncts.
         firstSelect.getCondition().setValue(conj);
         context.computeAndSetTypeEnvironmentForOperator(firstSelect);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java
index d1fedf2..aab6ce1 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EliminateGroupByEmptyKeyRule.java
@@ -35,7 +35,7 @@
 /**
  * This rule lift out the aggregate operator out from a group-by operator
  * if the gby operator groups-by on empty key, e.g., the group-by variables are empty.
- * 
+ *
  * @author yingyib
  */
 public class EliminateGroupByEmptyKeyRule implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java
index ee7f6a5..fcec50a 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/EnforceOrderByAfterSubplan.java
@@ -43,7 +43,7 @@
  * If there is any ordering property before the subplan operator, the ordering should
  * be kept after the subplan.
  * This rule adds a redundant order operator after those cases, to guarantee the correctness.
- * 
+ *
  * @author yingyib
  */
 public class EnforceOrderByAfterSubplan implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
index 232a78b..e5581dc 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractCommonExpressionsRule.java
@@ -196,7 +196,7 @@
         }
 
         // TODO: For now do not perform replacement in nested plans
-        // due to the complication of figuring out whether the firstOp in an equivalence class is within a subplan, 
+        // due to the complication of figuring out whether the firstOp in an equivalence class is within a subplan,
         // and the resulting variable will not be visible to the outside.
         // Since subplans should be eliminated in most cases, this behavior is acceptable for now.
         /*
@@ -238,7 +238,7 @@
             boolean modified = false;
             ExprEquivalenceClass exprEqClass = exprEqClassMap.get(expr);
             if (exprEqClass != null) {
-                // Replace common subexpression with existing variable. 
+                // Replace common subexpression with existing variable.
                 if (exprEqClass.variableIsSet()) {
                     Set<LogicalVariable> liveVars = new HashSet<LogicalVariable>();
                     List<LogicalVariable> usedVars = new ArrayList<LogicalVariable>();
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java
index 8604cae..71a00bf 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/ExtractFunctionsFromJoinConditionRule.java
@@ -50,11 +50,11 @@
  *
  * <pre>
  * Before plan:
- * 
+ *
  *   join ( eq( funcX($$1), funcX($$2) ) )
- * 
+ *
  * After plan:
- * 
+ *
  *   join (eq($$3,$$4))
  *   assign [$$4] <- [funcY($$2)]
  *   assign [$$3] <- [funcX($$1)]
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java
index bfa3bfd..71fde61 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/InlineSingleReferenceVariablesRule.java
@@ -32,17 +32,17 @@
 
 /**
  * Inlines variables that are referenced exactly once.
- * 
+ *
  * Preconditions/Assumptions:
  * Assumes no projects are in the plan.
- * 
+ *
  * Example assuming variable $$3 is referenced exactly once.
- * 
+ *
  * Before plan:
  * select (funcA($$3))
  *   ...
  *     assign [$$3] <- [field-access($$0, 1)]
- * 
+ *
  * After plan:
  * select (funcA(field-access($$0, 1))
  *   ...
@@ -53,14 +53,14 @@
     // Maps from variable to a list of operators using that variable.
     protected Map<LogicalVariable, List<ILogicalOperator>> usedVarsMap = new HashMap<LogicalVariable, List<ILogicalOperator>>();
     protected List<LogicalVariable> usedVars = new ArrayList<LogicalVariable>();
-    
+
     @Override
     protected void prepare(IOptimizationContext context) {
         super.prepare(context);
         usedVarsMap.clear();
         usedVars.clear();
     }
-    
+
     @Override
     protected boolean performFinalAction() throws AlgebricksException {
         boolean modified = false;
@@ -75,7 +75,7 @@
                         modified = true;
                     }
                     inlineVisitor.setTargetVariable(null);
-                }         
+                }
             }
         }
         return modified;
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
index f8b36dd..6bc129e 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/IntroduceProjectsRule.java
@@ -82,7 +82,7 @@
         parentsUsedVars.addAll(parentUsedVars);
         parentsUsedVars.addAll(usedVars);
 
-        // Descend into children.        
+        // Descend into children.
         for (int i = 0; i < op.getInputs().size(); i++) {
             Mutable<ILogicalOperator> inputOpRef = op.getInputs().get(i);
             if (introduceProjects(op, i, inputOpRef, parentsUsedVars, context)) {
@@ -152,7 +152,7 @@
         }
         return modified;
     }
-    
+
     private boolean canEliminateProjectBelowUnion(UnionAllOperator unionOp, ProjectOperator projectOp,
             int unionInputIndex) throws AlgebricksException {
         List<LogicalVariable> orderedLiveVars = new ArrayList<LogicalVariable>();
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java
index 59da252..c04a9d5 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/PushFunctionsBelowJoin.java
@@ -52,20 +52,20 @@
  * a join (which may blow up the cardinality).
  * Also, this rule may help to enable other rules such as common subexpression elimination, again to reduce
  * the number of calls to expensive functions.
- * 
+ *
  * Example: (we are pushing pushMeFunc)
- * 
+ *
  * Before plan:
  * assign [$$10] <- [funcA(funcB(pushMeFunc($$3, $$4)))]
- *   join (some condition) 
+ *   join (some condition)
  *     join_branch_0 where $$3 and $$4 are not live
  *       ...
  *     join_branch_1 where $$3 and $$4 are live
  *       ...
- * 
+ *
  * After plan:
  * assign [$$10] <- [funcA(funcB($$11))]
- *   join (some condition) 
+ *   join (some condition)
  *     join_branch_0 where $$3 and $$4 are not live
  *       ...
  *     join_branch_1 where $$3 and $$4 are live
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java
index a303cc6..ebdc88a 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantGroupByDecorVars.java
@@ -43,7 +43,7 @@
 public class RemoveRedundantGroupByDecorVars implements IAlgebraicRewriteRule {
 
     private final Set<LogicalVariable> vars = new HashSet<LogicalVariable>();
-    
+
     @Override
     public boolean rewritePost(Mutable<ILogicalOperator> opRef, IOptimizationContext context) {
         AbstractLogicalOperator op = (AbstractLogicalOperator) opRef.getValue();
@@ -54,7 +54,7 @@
             return false;
         }
         vars.clear();
-        
+
         boolean modified = false;
         GroupByOperator groupOp = (GroupByOperator) op;
         Iterator<Pair<LogicalVariable, Mutable<ILogicalExpression>>> iter = groupOp.getDecorList().iterator();
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java
index e459109..38e97d7 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantProjectionRule.java
@@ -37,12 +37,12 @@
  *  project [var-list1]
  *   project [var-list2]
  *     P
- * 
+ *
  *  if var-list1.equals(var-list2) becomes
- * 
+ *
  *  project [var-list1]
  *    P
- *  
+ *
  */
 
 public class RemoveRedundantProjectionRule implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java
index 9e4d8b7..9e867df 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveRedundantVariablesRule.java
@@ -125,7 +125,7 @@
             }
         }
 
-        // Replace variable references with their first representative. 
+        // Replace variable references with their first representative.
         if (op.getOperatorTag() == LogicalOperatorTag.PROJECT) {
             // The project operator does not use expressions, so we need to replace it's variables manually.
             if (replaceProjectVars((ProjectOperator) op)) {
@@ -142,7 +142,7 @@
             }
         }
 
-        // Perform variable replacement in nested plans. 
+        // Perform variable replacement in nested plans.
         if (op.hasNestedPlans()) {
             AbstractOperatorWithNestedPlans opWithNestedPlan = (AbstractOperatorWithNestedPlans) op;
             for (ILogicalPlan nestedPlan : opWithNestedPlan.getNestedPlans()) {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java
index 100c14f..b25497c 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/RemoveUnusedAssignAndAggregateRule.java
@@ -106,7 +106,7 @@
                         rootsToBeRemoved.add(r);
                     }
                 }
-                // Makes sure the operator should have at least ONE nested plan even it is empty 
+                // Makes sure the operator should have at least ONE nested plan even it is empty
                 // (because a lot of places uses this assumption,  TODO(yingyib): clean them up).
                 if (nestedPlan.getRoots().size() == rootsToBeRemoved.size() && opWithNest.getNestedPlans().size() > 1) {
                     nestedPlan.getRoots().removeAll(rootsToBeRemoved);
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java
index c523bd0..63a33b5 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/SetExecutionModeRule.java
@@ -32,7 +32,7 @@
  * EXCHANGE operators in the plan. Previously, i.e. before having physical
  * optimizations in place, we were using the IntroduceExchangeRule, which was
  * doing both, to both set excutionMode and introduce data exchange ops.
- * 
+ *
  * @author Nicola
  */
 public class SetExecutionModeRule implements IAlgebraicRewriteRule {
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanWithInputCardinalityOneRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanWithInputCardinalityOneRule.java
index f7b6dea..784b6cd 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanWithInputCardinalityOneRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/EliminateSubplanWithInputCardinalityOneRule.java
@@ -44,7 +44,7 @@
  * The live variables at OP will not be used after SUBPLAN.
  * Note: This rule must be applied after
  * the RemoveRedundantVariablesRule (to avoid the lineage analysis of variable cardinality).
- * 
+ *
  * @author yingyib
  */
 public class EliminateSubplanWithInputCardinalityOneRule implements IAlgebraicRewriteRule {
@@ -122,7 +122,7 @@
 
     /**
      * Whether the cardinality of the input free variables are one.
-     * 
+     *
      * @param opRef
      *            the operator to be checked (including its input operators)
      * @param freeVars
@@ -141,7 +141,7 @@
 
     /**
      * Recursively adding variables which has cardinality one and in int the input free variable set.
-     * 
+     *
      * @param opRef
      *            , the current operator reference.
      * @param freeVars
@@ -181,7 +181,7 @@
 
     /**
      * Find the NestedTupleSource operator in the direct/undirect input operators of opRef.
-     * 
+     *
      * @param opRef
      *            , the current operator reference.
      * @param ntsSet
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/MoveFreeVariableOperatorOutOfSubplanRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/MoveFreeVariableOperatorOutOfSubplanRule.java
index 959466a..d176d05 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/MoveFreeVariableOperatorOutOfSubplanRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/MoveFreeVariableOperatorOutOfSubplanRule.java
@@ -41,7 +41,7 @@
  *
  * <pre>
  * Before
- * 
+ *
  *   %PARENT_PLAN
  *   SUBPLAN{
  *     %NESTED_OPERATORS_B+
@@ -50,12 +50,12 @@
  *     NESTEDTUPLESOURCE
  *   }
  *   %CHILD_PLAN
- * 
+ *
  *   where
  *     %SUBPLAN has one nested plan with a root AGGREGATE operator.
- * 
+ *
  * After
- * 
+ *
  *   %PARENT_PLAN
  *   SUBPLAN{
  *     %NESTED_OPERATORS_B+
diff --git a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
index 74ff21f..042de2c 100644
--- a/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
+++ b/algebricks/algebricks-rewriter/src/main/java/org/apache/hyracks/algebricks/rewriter/rules/subplan/PushSubplanIntoGroupByRule.java
@@ -47,7 +47,7 @@
 /**
  * This rule pushes an array of subplans on top of a group-by into the
  * nested plan of the group-by.
- * 
+ *
  * @author yingyib
  */
 
@@ -179,7 +179,7 @@
 
     /**
      * Removes unused aggregation variables (and expressions)
-     * 
+     *
      * @param gby
      * @throws AlgebricksException
      */
@@ -206,4 +206,4 @@
         return currentOpRef;
     }
 
-}
\ No newline at end of file
+}
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunction.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunction.java
index b3c73fb..078a51d 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunction.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/base/ICopySerializableAggregateFunction.java
@@ -26,7 +26,7 @@
 public interface ICopySerializableAggregateFunction {
     /**
      * initialize the space occupied by internal state
-     * 
+     *
      * @param state
      * @throws AlgebricksException
      * @return length of the intermediate state
@@ -35,7 +35,7 @@
 
     /**
      * update the internal state
-     * 
+     *
      * @param tuple
      * @param state
      * @throws AlgebricksException
@@ -44,7 +44,7 @@
 
     /**
      * output the state to result
-     * 
+     *
      * @param state
      * @param result
      * @throws AlgebricksException
@@ -53,7 +53,7 @@
 
     /**
      * output the partial state to partial result
-     * 
+     *
      * @param state
      * @param partialResult
      * @throws AlgebricksException
diff --git a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java
index 1877d64..50706bd 100644
--- a/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java
+++ b/algebricks/algebricks-runtime/src/main/java/org/apache/hyracks/algebricks/runtime/operators/std/AssignRuntimeFactory.java
@@ -139,8 +139,8 @@
                 tRef.reset(tAccess, t);
                 produceTuple(tupleBuilder, tAccess, t, tRef);
                 if (flushFramesRapidly) {
-                    // Whenever all the tuples in the incoming frame have been consumed, the assign operator 
-                    // will push its frame to the next operator; i.e., it won't wait until the frame gets full. 
+                    // Whenever all the tuples in the incoming frame have been consumed, the assign operator
+                    // will push its frame to the next operator; i.e., it won't wait until the frame gets full.
                     appendToFrameFromTupleBuilder(tupleBuilder, true);
                 } else {
                     appendToFrameFromTupleBuilder(tupleBuilder);
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java
index 1fb2291..6c79abd 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/IApplicationContext.java
@@ -27,14 +27,14 @@
 
 /**
  * Base class of the {@link ICCApplicationContext} and the {@link INCApplicationContext}.
- * 
+ *
  * @author vinayakb
  */
 public interface IApplicationContext {
     /**
      * Gets the distributed state that is made available to all the Application
      * Contexts of this application in the cluster.
-     * 
+     *
      * @return
      */
     public Serializable getDistributedState();
@@ -54,4 +54,4 @@
      */
     public IControllerService getControllerService();
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java
index a629b3a..8b83d83 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/ICCApplicationContext.java
@@ -25,7 +25,7 @@
 
 /**
  * Application Context at the Cluster Controller for an application.
- * 
+ *
  * @author vinayakb
  */
 public interface ICCApplicationContext extends IApplicationContext {
@@ -34,7 +34,7 @@
      * NC application contexts. Any state set by calling this method in the {@link ICCApplicationEntryPoint#start(ICCApplicationContext, String[])} call is made available to all the {@link INCApplicationContext} objects
      * at each Node Controller. The state is then available to be inspected by
      * the application at the NC during or after the {@link INCBootstrap#start()} call.
-     * 
+     *
      * @param state
      *            The distributed state
      */
@@ -43,7 +43,7 @@
     /**
      * A listener that listens to Job Lifecycle events at the Cluster
      * Controller.
-     * 
+     *
      * @param jobLifecycleListener
      */
     public void addJobLifecycleListener(IJobLifecycleListener jobLifecycleListener);
@@ -51,16 +51,16 @@
     /**
      * A listener that listens to Cluster Lifecycle events at the Cluster
      * Controller.
-     * 
+     *
      * @param jobLifecycleListener
      */
     public void addClusterLifecycleListener(IClusterLifecycleListener clusterLifecycleListener);
 
     /**
      * Get the Cluster Controller Context.
-     * 
+     *
      * @return The Cluster Controller Context.
      */
     public ICCContext getCCContext();
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java
index e9788d9..77934c6 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/application/INCApplicationContext.java
@@ -24,34 +24,34 @@
 
 /**
  * Application Context at the Node Controller for an application.
- * 
+ *
  * @author vinayakb
  */
 public interface INCApplicationContext extends IApplicationContext {
     /**
      * Gets the life cycle component manager of the Node Controller.
-     * 
+     *
      * @return
      */
     public ILifeCycleComponentManager getLifeCycleComponentManager();
 
     /**
      * Gets the node Id of the Node Controller.
-     * 
+     *
      * @return the Node Id.
      */
     public String getNodeId();
 
     /**
      * Get the Hyracks Root Context.
-     * 
+     *
      * @return The Hyracks Root Context
      */
     public IHyracksRootContext getRootContext();
 
     /**
      * Set an object that can be later retrieved by the {@link #getApplicationObject()} call.
-     * 
+     *
      * @param object
      *            Application Object
      */
@@ -59,22 +59,22 @@
 
     /**
      * Get the application object previously set by the {@link #setApplicationObject(Object)} call.
-     * 
+     *
      * @return Application Object
      */
     public Object getApplicationObject();
 
     /**
      * Get the memory manager at the node.
-     * 
+     *
      * @return Memory Manager
      */
     public IMemoryManager getMemoryManager();
 
     /**
      * Set the handler for state dumps.
-     * 
+     *
      * @param handler
      */
     public void setStateDumpHandler(IStateDumpHandler handler);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
index 953d2c1..b57442d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/HyracksConnection.java
@@ -53,7 +53,7 @@
 /**
  * Connection Class used by a Hyracks Client to interact with a Hyracks Cluster
  * Controller.
- * 
+ *
  * @author vinayakb
  */
 public final class HyracksConnection implements IHyracksClientConnection {
@@ -67,7 +67,7 @@
 
     /**
      * Constructor to create a connection to the Hyracks Cluster Controller.
-     * 
+     *
      * @param ccHost
      *            Host name (or IP Address) where the Cluster Controller can be
      *            reached.
@@ -190,4 +190,4 @@
     public void stopCluster() throws Exception{
         hci.stopCluster();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java
index 7e5de94..824c914 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/client/IHyracksClientConnection.java
@@ -34,13 +34,13 @@
 
 /**
  * Interface used by clients to communicate with the Hyracks Cluster Controller.
- * 
+ *
  * @author vinayakb
  */
 public interface IHyracksClientConnection {
     /**
      * Gets the status of the specified Job.
-     * 
+     *
      * @param jobId
      *            JobId of the Job
      * @return {@link JobStatus}
@@ -50,7 +50,7 @@
 
     /**
      * Gets detailed information about the specified Job.
-     * 
+     *
      * @param jobId
      *            JobId of the Job
      * @return {@link JobStatus}
@@ -60,7 +60,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param appName
      *            Name of the application
      * @param jobSpec
@@ -71,7 +71,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param appName
      *            Name of the application
      * @param jobSpec
@@ -84,7 +84,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param appName
      *            Name of the application
      * @param acggf
@@ -97,7 +97,7 @@
 
     /**
      * Gets the IP Address and port for the DatasetDirectoryService wrapped in NetworkAddress
-     * 
+     *
      * @return {@link NetworkAddress}
      * @throws Exception
      */
@@ -106,7 +106,7 @@
     /**
      * Waits until the specified job has completed, either successfully or has
      * encountered a permanent failure.
-     * 
+     *
      * @param jobId
      *            JobId of the Job
      * @throws Exception
@@ -115,14 +115,14 @@
 
     /**
      * Gets a map of node controller names to node information.
-     * 
+     *
      * @return Map of node name to node information.
      */
     public Map<String, NodeControllerInfo> getNodeControllerInfos() throws Exception;
 
     /**
      * Get the cluster topology
-     * 
+     *
      * @return the cluster topology
      * @throws Exception
      */
@@ -130,7 +130,7 @@
 
     /**
      * Deploy the user-defined jars to the cluster
-     * 
+     *
      * @param jars
      *            a list of user-defined jars
      */
@@ -138,7 +138,7 @@
 
     /**
      * undeploy a certain deployment
-     * 
+     *
      * @param jars
      *            a list of user-defined jars
      */
@@ -146,7 +146,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param deploymentId
      *            the id of the specific deployment
      * @param jobSpec
@@ -157,7 +157,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param deploymentId
      *            the id of the specific deployment
      * @param jobSpec
@@ -171,7 +171,7 @@
 
     /**
      * Start the specified Job.
-     * 
+     *
      * @param deploymentId
      *            the id of the specific deployment
      * @param acggf
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java
index 70f8f7d..81a0290 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java
@@ -36,13 +36,13 @@
 
 /**
  * Connector that connects operators in a Job.
- * 
+ *
  * @author vinayakb
  */
 public interface IConnectorDescriptor extends Serializable {
     /**
      * Gets the id of the connector.
-     * 
+     *
      * @return
      */
     public ConnectorDescriptorId getConnectorId();
@@ -50,7 +50,7 @@
     /**
      * Factory method to create the send side writer that writes into this
      * connector.
-     * 
+     *
      * @param ctx
      *            Context
      * @param recordDesc
@@ -73,7 +73,7 @@
     /**
      * Factory metod to create the receive side reader that reads data from this
      * connector.
-     * 
+     *
      * @param ctx
      *            Context
      * @param recordDesc
@@ -92,7 +92,7 @@
 
     /**
      * Contribute any scheduling constraints imposed by this connector
-     * 
+     *
      * @param constraintAcceptor
      *            - Constraint Acceptor
      * @param ac
@@ -131,9 +131,9 @@
 
     /**
      * Translate this connector descriptor to JSON.
-     * 
+     *
      * @return
      * @throws JSONException
      */
     public JSONObject toJSON() throws JSONException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java
index 7202235..3eb0367 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataReader.java
@@ -22,13 +22,13 @@
 
 /**
  * Provides data to a consumer.
- * 
+ *
  * @author vinayakb
  */
 public interface IDataReader<T> {
     /**
      * Reads one data item.
-     * 
+     *
      * @return data. <code>null</code> indicates end of stream.
      * @throws Exception
      */
@@ -36,8 +36,8 @@
 
     /**
      * Closes this reader.
-     * 
+     *
      * @throws Exception
      */
     public void close() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java
index 0b8ffc0..9125b1c 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IDataWriter.java
@@ -50,4 +50,4 @@
      * @throws Exception
      */
     public void close() throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java
index 32b4e2b..1b85fbd 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java
@@ -29,34 +29,34 @@
 
 /**
  * Descriptor for operators in Hyracks.
- * 
+ *
  * @author vinayakb
  */
 public interface IOperatorDescriptor extends Serializable {
     /**
      * Returns the id of the operator.
-     * 
+     *
      * @return operator id
      */
     public OperatorDescriptorId getOperatorId();
 
     /**
      * Returns the number of inputs into this operator.
-     * 
+     *
      * @return Number of inputs.
      */
     public int getInputArity();
 
     /**
      * Returns the number of outputs out of this operator.
-     * 
+     *
      * @return Number of outputs.
      */
     public int getOutputArity();
 
     /**
      * Gets the output record descriptor
-     * 
+     *
      * @return Array of RecordDescriptor, one per output.
      */
     public RecordDescriptor[] getOutputRecordDescriptors();
@@ -64,7 +64,7 @@
     /**
      * Contributes the activity graph that describes the behavior of this
      * operator.
-     * 
+     *
      * @param builder
      *            - graph builder
      */
@@ -72,7 +72,7 @@
 
     /**
      * Contributes any scheduling constraints imposed by this operator.
-     * 
+     *
      * @param constraintAcceptor
      *            - Constraint Acceptor
      * @param plan
@@ -94,4 +94,4 @@
      * Translates this operator descriptor to JSON.
      */
     public JSONObject toJSON() throws JSONException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java
index ff1fd0c..5fbc1ab 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluator.java
@@ -22,7 +22,7 @@
 import org.apache.hyracks.api.comm.IFrameTupleAccessor;
 
 /*
- * Compares two tuples to make sure that records, whose comparison keys are NULL do not pass comparator filter  
+ * Compares two tuples to make sure that records, whose comparison keys are NULL do not pass comparator filter
  */
 public interface IPredicateEvaluator {
     public boolean evaluate(IFrameTupleAccessor fta0, int tupId0, IFrameTupleAccessor fta1, int tupId1);
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java
index 89bb24a..eb94514 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactory.java
@@ -22,7 +22,7 @@
 import java.io.Serializable;
 
 /*
- * Provides PredicateEvaluator for equi-join related operators 
+ * Provides PredicateEvaluator for equi-join related operators
  */
 
 public interface IPredicateEvaluatorFactory extends Serializable {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java
index 6da25c3..3eefc29 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IPredicateEvaluatorFactoryProvider.java
@@ -22,7 +22,7 @@
 import java.io.Serializable;
 
 /*
- * Provides PredicateEvaluatorFactory based on (equi-join) keys 		
+ * Provides PredicateEvaluatorFactory based on (equi-join) keys
  */
 
 public interface IPredicateEvaluatorFactoryProvider extends Serializable {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java
index 39f9ce8..cbd808b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializer.java
@@ -31,7 +31,7 @@
 
     /**
      * Method to serialize the result and append it to the provided output stream
-     * 
+     *
      * @param tAccess
      *            - A frame tuple accessor object that contains the original data to be serialized
      * @param tIdx
@@ -39,4 +39,4 @@
      * @return true if the tuple was appended successfully, else false.
      */
     public boolean appendTuple(IFrameTupleAccessor tAccess, int tIdx) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java
index 2c4b000..f21913c 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/IResultSerializerFactory.java
@@ -24,10 +24,10 @@
 public interface IResultSerializerFactory extends Serializable {
     /**
      * Creates a result serialized appender
-     * 
+     *
      * @param printStream
      *            - A print stream object to which the serialized results will be written.
      * @return A new instance of result serialized appender.
      */
     public IResultSerializer createResultSerializer(RecordDescriptor recordDesc, PrintStream printStream);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java
index a93de4c..065e32d 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/ISerializerDeserializer.java
@@ -27,7 +27,7 @@
 public interface ISerializerDeserializer<T> extends Serializable {
     /**
      * Deserialization method.
-     * 
+     *
      * @param in
      *            - Stream to read instance from.
      * @return A new instance of T with data.
@@ -36,7 +36,7 @@
 
     /**
      * Serialization method.
-     * 
+     *
      * @param instance
      *            - the instance to serialize.
      * @param out
@@ -49,4 +49,4 @@
      * T deserialize(DataInput in, T mutable)
      * to provide deserialization without creating objects
      */
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java
index 9b8bf34..391b637 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/value/JSONSerializable.java
@@ -24,8 +24,8 @@
 public interface JSONSerializable {
     /**
      * Returns the JSON representation of the object.
-     * 
+     *
      * @return A new JSONObject instance representing this Java object.
      */
     public JSONObject toJSON() throws JSONException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java
index 6799690..200f5e5 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceConnection.java
@@ -24,7 +24,7 @@
 public interface IHyracksDatasetDirectoryServiceConnection {
     /**
      * Gets the result status for the given result set.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
@@ -36,7 +36,7 @@
 
     /**
      * Gets the IP Addresses and ports for the partition generating the result for each location.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java
index 596bdf1..56c0af9 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataset/IHyracksDatasetDirectoryServiceInterface.java
@@ -24,7 +24,7 @@
 public interface IHyracksDatasetDirectoryServiceInterface {
     /**
      * Gets the result status for the given result set.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
@@ -36,7 +36,7 @@
 
     /**
      * Gets the IP Addresses and ports for the partition generating the result for each location.
-     * 
+     *
      * @param jobId
      *            ID of the job
      * @param rsId
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java
index 04fc0d8..2e32a70 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/deployment/DeploymentId.java
@@ -28,7 +28,7 @@
 
 /**
  * The representation of a deployment id
- * 
+ *
  * @author yingyib
  */
 public class DeploymentId implements IWritable, Serializable {
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java
index 14473ce..f943a4e 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializer.java
@@ -27,14 +27,14 @@
 
 /**
  * The serializer/deserializer/classloader interface for job/task information such as job specifications, activity graphs and so on.
- * 
+ *
  * @author yingyib
  */
 public interface IJobSerializerDeserializer {
 
     /**
      * Deserialize the bytes to an object
-     * 
+     *
      * @param bytes
      *            the binary content of an object
      * @return the deserialized object
@@ -44,7 +44,7 @@
 
     /**
      * Serialize a object into bytes
-     * 
+     *
      * @param object
      *            a Serializable Java object
      * @return
@@ -55,7 +55,7 @@
 
     /**
      * Load a class by its name
-     * 
+     *
      * @param className
      *            the name of the class
      * @return
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java
index 52959fd..e63c18b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/IJobSerializerDeserializerContainer.java
@@ -25,7 +25,7 @@
 
     /**
      * Get the IJobSerializerDeserializer implementation instance for a specific deployment id
-     * 
+     *
      * @param deploymentId
      * @return
      */
@@ -33,7 +33,7 @@
 
     /**
      * Add a deployment with the job serializer deserializer
-     * 
+     *
      * @param deploymentId
      * @param jobSerDe
      */
@@ -41,7 +41,7 @@
 
     /**
      * Remove a deployment
-     * 
+     *
      * @param deploymentId
      */
     public void removeJobSerializerDeserializer(DeploymentId deploymentId);
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java
index f7ee39e..987b86b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounter.java
@@ -21,14 +21,14 @@
 public interface ICounter {
     /**
      * Get the fully-qualified name of the counter.
-     * 
+     *
      * @return Name of the counter.
      */
     public String getName();
 
     /**
      * Update the value of the counter to be current + delta.
-     * 
+     *
      * @param delta
      *            - Amount to change the counter value by.
      * @return the new value after update.
@@ -37,7 +37,7 @@
 
     /**
      * Set the value of the counter.
-     * 
+     *
      * @param value
      *            - New value of the counter.
      * @return Old value of the counter.
@@ -46,8 +46,8 @@
 
     /**
      * Get the value of the counter.
-     * 
+     *
      * @return the value of the counter.
      */
     public long get();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java
index cd09d0c..b328daf 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/job/profiling/counters/ICounterContext.java
@@ -20,13 +20,13 @@
 
 /**
  * A namespace that holds named counters.
- * 
+ *
  * @author vinayakb
  */
 public interface ICounterContext {
     /**
      * Get a counter with the specified name.
-     * 
+     *
      * @param name
      *            - Name of the counter to get.
      * @param create
@@ -36,4 +36,4 @@
      *         else returns <code>null</code>.
      */
     public ICounter getCounter(String name, boolean create);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java
index 8570a78..38e7fbe 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/ActivityClusterGraphRewriter.java
@@ -46,7 +46,7 @@
  * DAGs into super activities.
  * </p>
  * Each super activity internally maintains a DAG and execute it at the runtime.
- * 
+ *
  * @author yingyib
  */
 public class ActivityClusterGraphRewriter {
@@ -56,7 +56,7 @@
      * rewrite an activity cluster graph to eliminate
      * all one-to-one connections and merge one-to-one connected
      * DAGs into super activities.
-     * 
+     *
      * @param acg
      *            the activity cluster graph
      */
@@ -75,7 +75,7 @@
 
     /**
      * rewrite the blocking relationship among activity cluster
-     * 
+     *
      * @param ac
      *            the activity cluster to be rewritten
      */
@@ -119,7 +119,7 @@
 
     /**
      * rewrite an activity cluster internally
-     * 
+     *
      * @param ac
      *            the activity cluster to be rewritten
      */
@@ -323,7 +323,7 @@
 
     /**
      * Create a new super activity
-     * 
+     *
      * @param acg
      *            the activity cluster
      * @param superActivities
@@ -351,7 +351,7 @@
 
     /**
      * One super activity swallows another existing super activity.
-     * 
+     *
      * @param superActivities
      *            the map from activity id to current super activities
      * @param toBeExpendedMap
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java
index 5ebf55a..68041bb 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/OneToOneConnectedActivityCluster.java
@@ -31,7 +31,7 @@
 
 /**
  * All the connectors in an OneToOneConnectedCluster are OneToOneConnectorDescriptors.
- * 
+ *
  * @author yingyib
  */
 public class OneToOneConnectedActivityCluster extends ActivityCluster {
@@ -49,7 +49,7 @@
 
     /**
      * Set up the mapping of the cluster's output channel to an internal activity and its output channel
-     * 
+     *
      * @param clusterOutputIndex
      *            the output channel index for the cluster
      * @param activityId
@@ -64,7 +64,7 @@
 
     /**
      * get the an internal activity and its output channel of a cluster output channel
-     * 
+     *
      * @param clusterOutputIndex
      *            the output channel index for the cluster
      * @return a pair containing the activity id of the corresponding internal activity and the output channel index
@@ -75,7 +75,7 @@
 
     /**
      * Set up the mapping of the cluster's input channel to an internal activity and input output channel
-     * 
+     *
      * @param clusterInputIndex
      *            the input channel index for the cluster
      * @param activityId
@@ -90,7 +90,7 @@
 
     /**
      * get the an internal activity and its input channel of a cluster input channel
-     * 
+     *
      * @param clusterOutputIndex
      *            the output channel index for the cluster
      * @return a pair containing the activity id of the corresponding internal activity and the output channel index
@@ -101,7 +101,7 @@
 
     /**
      * Get the cluster input channel of an input-boundary activity and its input channel
-     * 
+     *
      * @param activityInputChannel
      *            the input-boundary activity and its input channel
      * @return the cluster input channel
@@ -113,7 +113,7 @@
 
     /**
      * Get the cluster output channel of an input-boundary activity and its output channel
-     * 
+     *
      * @param activityOutputChannel
      *            the output-boundary activity and its output channel
      * @return the cluster output channel
diff --git a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java
index 9f9809d..2f3c72b 100644
--- a/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java
+++ b/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/rewriter/runtime/SuperActivity.java
@@ -42,7 +42,7 @@
 /**
  * This class can be used to execute a DAG of activities inside which
  * there are only one-to-one connectors.
- * 
+ *
  * @author yingyib
  */
 public class SuperActivity extends OneToOneConnectedActivityCluster implements IActivity {
diff --git a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java
index 3f37ac5..a04a61c 100644
--- a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java
+++ b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/IClusterCounterContext.java
@@ -25,5 +25,5 @@
 public interface IClusterCounterContext extends ICounterContext {
 
     public ICounter getCounter(String machineName, String counterName, boolean create);
-    
+
 }
diff --git a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java
index 29d1184..74b61b2 100644
--- a/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java
+++ b/hyracks/hyracks-client/src/main/java/org/apache/hyracks/client/stats/impl/ClientCounterContext.java
@@ -146,7 +146,7 @@
 
     /**
      * Update counters
-     * 
+     *
      * @param jo
      *            the Profile JSON object
      */
@@ -205,7 +205,7 @@
 
     /**
      * Request a counter from the slave machine
-     * 
+     *
      * @param slaveMachine
      * @return the JSON string from the slave machine
      */
@@ -275,4 +275,4 @@
 
     }
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java
index f221530..5813700 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/scheduler/JobScheduler.java
@@ -221,7 +221,7 @@
      * Runnability rank has the following semantics
      * Runnability(Runnable TaskCluster depending on completed TaskClusters) = {RUNNABLE, 0}
      * Runnability(Runnable TaskCluster) = max(Rank(Dependent TaskClusters)) + 1
-     * Runnability(Non-schedulable TaskCluster) = {NOT_RUNNABLE, _} 
+     * Runnability(Non-schedulable TaskCluster) = {NOT_RUNNABLE, _}
      */
     private Runnability assignRunnabilityRank(TaskCluster goal, Map<TaskCluster, Runnability> runnabilityMap) {
         if (LOGGER.isLoggable(Level.FINE)) {
@@ -626,7 +626,7 @@
 
     /**
      * Indicates that a single task attempt has encountered a failure.
-     * 
+     *
      * @param ta
      *            - Failed Task Attempt
      * @param ac
@@ -661,7 +661,7 @@
 
     /**
      * Indicates that the provided set of nodes have left the cluster.
-     * 
+     *
      * @param deadNodes
      *            - Set of failed nodes
      */
@@ -749,4 +749,4 @@
         }
         return jobLogObject;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java
index 880878d..741c641 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliDeployBinaryWork.java
@@ -39,7 +39,7 @@
  * It first deploys the jar to CC application context.
  * Then, it remotely calls each NC service to deploy the jars listed as http URLs.
  * NOTE: in current implementation, a user cannot deploy with the same deployment id simultaneously.
- * 
+ *
  * @author yingyib
  */
 public class CliDeployBinaryWork extends SynchronizableWork {
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java
index 685501e..5f97ce2 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/CliUnDeployBinaryWork.java
@@ -37,7 +37,7 @@
  * It first undeploys the jar to CC application context by giving it a deployment id.
  * Then, it remotely calls each NC service to undeploy by giving them a deployment id.
  * NOTE: in current implementation, a user cannot undeploy with the same deployment id simultaneously.
- * 
+ *
  * @author yingyib
  */
 public class CliUnDeployBinaryWork extends SynchronizableWork {
diff --git a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java
index 75dfe03..f4b80b1 100644
--- a/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-cc/src/main/java/org/apache/hyracks/control/cc/work/NotifyDeployBinaryWork.java
@@ -26,7 +26,7 @@
 
 /***
  * This is the work happens on the CC when CC gets a deployment or undeployment notification status message from one NC.
- * 
+ *
  * @author yingyib
  */
 public class NotifyDeployBinaryWork extends AbstractHeartbeatWork {
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
index 2880cb6..60ff2d3 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/ClassLoaderJobSerializerDeserializer.java
@@ -33,7 +33,7 @@
 
 /**
  * This is the IJobSerializerDeserializer implementation for jobs with dynamic deployed jars.
- * 
+ *
  * @author yingyib
  */
 public class ClassLoaderJobSerializerDeserializer implements IJobSerializerDeserializer {
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java
index a50233f..416b0e6 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentRun.java
@@ -25,7 +25,7 @@
 /**
  * The class maintain the status of a deployment process and the states
  * of all slave machines involved in the deployment.
- * 
+ *
  * @author yingyib
  */
 public class DeploymentRun implements IDeploymentStatusConditionVariable {
@@ -39,7 +39,7 @@
 
     /**
      * One notify the deployment status
-     * 
+     *
      * @param nodeId
      * @param status
      */
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
index fba5b54..aaf2e20 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/DeploymentUtils.java
@@ -44,7 +44,7 @@
 
 /**
  * A utility class which is in charge of the actual work of deployments.
- * 
+ *
  * @author yingyib
  */
 public class DeploymentUtils {
@@ -53,7 +53,7 @@
 
     /**
      * undeploy an existing deployment
-     * 
+     *
      * @param deploymentId
      *            the deployment id
      * @param container
@@ -78,7 +78,7 @@
 
     /**
      * Deploying jars in NC or CC
-     * 
+     *
      * @param deploymentId
      *            the deployment id
      * @param urls
@@ -106,7 +106,7 @@
 
     /**
      * Deserialize bytes to an object according to a specific deployment
-     * 
+     *
      * @param bytes
      *            the bytes to be deserialized
      * @param deploymentId
@@ -130,7 +130,7 @@
 
     /**
      * Load a class from its class name
-     * 
+     *
      * @param className
      * @param deploymentId
      * @param appCtx
@@ -153,7 +153,7 @@
 
     /**
      * Get the classloader of a specific deployment
-     * 
+     *
      * @param deploymentId
      * @param appCtx
      * @return
@@ -174,7 +174,7 @@
 
     /**
      * Download remote Http URLs and return the stored local file URLs
-     * 
+     *
      * @param urls
      *            the remote Http URLs
      * @param deploymentDir
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java
index 0020d60..2652701 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/deployment/IDeploymentStatusConditionVariable.java
@@ -21,14 +21,14 @@
 
 /**
  * The conditional variable interface for deployment
- * 
+ *
  * @author yingyib
  */
 public interface IDeploymentStatusConditionVariable {
 
     /**
      * synchronously wait the deployment to complete
-     * 
+     *
      * @return the deployment status
      * @throws Exception
      */
diff --git a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java
index 8bd7407..6912892 100644
--- a/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java
+++ b/hyracks/hyracks-control/hyracks-control-common/src/main/java/org/apache/hyracks/control/common/shutdown/ShutdownRun.java
@@ -54,7 +54,7 @@
         wait(SHUTDOWN_TIMER_MS);
         return shutdownSuccess;
     }
-    
+
     public synchronized Set<String> getRemainingNodes(){
         return shutdownNodeIds;
     }
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java
index 8e5b0d7..1b7cf8f 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/profiling/IOCounterFactory.java
@@ -23,7 +23,7 @@
 
     /**
      * Get the IOCounter for the specific underlying OS
-     * 
+     *
      * @return an IIOCounter instance
      */
     public IIOCounter getIOCounter() {
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java
index 3097687..264a131 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/DeployBinaryWork.java
@@ -31,7 +31,7 @@
 
 /**
  * Deploy binary work that happens at each NC
- * 
+ *
  * @author yingyib
  *
  */
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
index b3468b0..b585199 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/StartTasksWork.java
@@ -246,7 +246,7 @@
 
     /**
      * Create a list of known channels for each input connector
-     * 
+     *
      * @param td
      *            the task attempt id
      * @param inputs
diff --git a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java
index 381fb39..f564ff4 100644
--- a/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java
+++ b/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/work/UnDeployBinaryWork.java
@@ -28,7 +28,7 @@
 
 /**
  * undeploy binaries regarding to a deployment id
- * 
+ *
  * @author yingyib
  */
 public class UnDeployBinaryWork extends AbstractWork {
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java
index dca83a6..245fbd8 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/algorithms/BinarySearchAlgorithm.java
@@ -25,7 +25,7 @@
  * Performs Binary Search over a vector of value references.
  * Assumption: The items in the vector are sorted in ascending order with respect
  * to the specified key.
- * 
+ *
  * @author vinayakb
  */
 public class BinarySearchAlgorithm {
@@ -39,7 +39,7 @@
      * and sets the {@link #index} value that is retrievable by calling {@link #getIndex()} to refer to
      * the index in the array where the key was found (if it was found), and where it should have been (if
      * not found).
-     * 
+     *
      * @param vector
      *            - Sorted vector of items
      * @param key
@@ -68,11 +68,11 @@
 
     /**
      * Get the index as a result of binary search.
-     * 
+     *
      * @return the index in the array where the key was found (if it was found), and where it should have been (if
      *         not found).
      */
     public int getIndex() {
         return index;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java
index 9228809..5294d17 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/api/IPointableFactory.java
@@ -24,6 +24,6 @@
 
 public interface IPointableFactory extends Serializable {
     public IPointable createPointable();
-    
+
     public ITypeTraits getTypeTraits();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java
index fb82166..f03dcc8 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/collections/api/IValueReferenceVector.java
@@ -22,20 +22,20 @@
  * Represents an immutable vector of ValueReferences. Users of this interface make the assumption
  * that it provides random access to the items in it. In other words, each of the getXXX(index) calls
  * have O(1) complexity.
- * 
+ *
  * @author vinayakb
  */
 public interface IValueReferenceVector {
     /**
      * Number of items in this vector.
-     * 
+     *
      * @return - the number of items in this vector.
      */
     public int getSize();
 
     /**
      * Get the byte array that contains the item referenced by <code>index</code>
-     * 
+     *
      * @param index
      *            - Index of the item in the vector
      * @return Byte Array that contains the item.
@@ -44,7 +44,7 @@
 
     /**
      * Get the start offset of the item referenced by <code>index</code>
-     * 
+     *
      * @param index
      *            - Index of the item in the vector
      * @return Start Offset in the Byte Array of the item
@@ -53,10 +53,10 @@
 
     /**
      * Get the length of the item referenced by <code>index</code>
-     * 
+     *
      * @param index
      *            - Index of the item in the vector
      * @return Length in the Byte Array of the item
      */
     public int getLength(int index);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
index 868e402..250d21a 100644
--- a/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
+++ b/hyracks/hyracks-data/hyracks-data-std/src/main/java/org/apache/hyracks/data/std/util/ArrayBackedValueStorage.java
@@ -25,7 +25,7 @@
 import org.apache.hyracks.data.std.api.IValueReference;
 
 public class ArrayBackedValueStorage implements IMutableValueStorage {
-   
+
     private final GrowableArray data = new GrowableArray();
 
     @Override
@@ -65,4 +65,4 @@
         reset();
         append(value);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java
index 46536f1..84ddab6 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleBuilder.java
@@ -30,7 +30,7 @@
 
 /**
  * Array backed tuple builder.
- * 
+ *
  * @author vinayakb
  */
 public class ArrayTupleBuilder implements IDataOutputProvider {
@@ -53,7 +53,7 @@
 
     /**
      * Get the end offsets of the fields in this tuple.
-     * 
+     *
      * @return end offsets of the fields.
      */
     public int[] getFieldEndOffsets() {
@@ -62,7 +62,7 @@
 
     /**
      * Get the data area in this builder.
-     * 
+     *
      * @return Data byte array.
      */
     public byte[] getByteArray() {
@@ -71,7 +71,7 @@
 
     /**
      * Get the size of the data area.
-     * 
+     *
      * @return data area size.
      */
     public int getSize() {
@@ -80,7 +80,7 @@
 
     /**
      * Add a field to the tuple from a field in a frame.
-     * 
+     *
      * @param accessor
      *            - Frame that contains the field to be copied into the tuple
      *            builder.
@@ -110,7 +110,7 @@
     /**
      * Add a field to the tuple by serializing the given object using the given
      * serializer.
-     * 
+     *
      * @param serDeser
      *            - Serializer
      * @param instance
@@ -124,7 +124,7 @@
 
     /**
      * Add a field to the tuple by copying the data bytes from a byte array.
-     * 
+     *
      * @param bytes
      *            - Byte array to copy the field data from.
      * @param start
@@ -166,4 +166,4 @@
     public void addFieldEndOffset() {
         fEndOffsets[nextField++] = fieldData.getLength();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java
index f1398c0..8cb473d 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/comm/io/ArrayTupleReference.java
@@ -25,7 +25,7 @@
  * a frame. It is meant to be reset directly with the field slots and tuple data
  * provided by ArrayTupleBuilder. The purpose is to avoid coping the built tuple
  * into a frame before being able to use it as an ITupleReference.
- * 
+ *
  * @author alexander.behm
  */
 public class ArrayTupleReference implements ITupleReference {
@@ -36,7 +36,7 @@
 		this.fEndOffsets = fEndOffsets;
 		this.tupleData = tupleData;
 	}
-	
+
 	@Override
 	public int getFieldCount() {
 		return fEndOffsets.length;
@@ -49,7 +49,7 @@
 
 	@Override
 	public int getFieldStart(int fIdx) {
-		return (fIdx == 0) ? 0 : fEndOffsets[fIdx - 1]; 
+		return (fIdx == 0) ? 0 : fEndOffsets[fIdx - 1];
 	}
 
 	@Override
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java
index 06f92bb..f4da9bf 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/data/partition/range/FieldRangePartitionComputerFactory.java
@@ -47,7 +47,7 @@
         return new ITuplePartitionComputer() {
             @Override
             /**
-             * Determine the range partition. 
+             * Determine the range partition.
              */
             public int partition(IFrameTupleAccessor accessor, int tIndex, int nParts) throws HyracksDataException {
                 if (nParts == 1) {
@@ -98,4 +98,4 @@
 
         };
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
index c5b8a9f..fcc6274 100644
--- a/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
+++ b/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
@@ -130,7 +130,7 @@
         tupleCopy.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
         return tupleCopy;
     }
-    
+
     public static void copyTuple(ArrayTupleBuilder tupleBuilder, ITupleReference tuple, int numFields) throws HyracksDataException {
         tupleBuilder.reset();
         for (int i = 0; i < numFields; i++) {
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java
index 216f410..cf4808f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/base/AbstractMToNConnectorDescriptor.java
@@ -42,9 +42,9 @@
         sourceBitmap.clear();
         sourceBitmap.set(0, nProducerPartitions);
     }
-    
+
     @Override
     public boolean allProducersToAllConsumers(){
         return true;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java
index e6a3bb3..3e95bc6 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/HashtableLocalityMap.java
@@ -32,7 +32,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.examples.text.client.aggregation.helpers.ILocalityMap
      * #getConsumers(int, int)
@@ -58,7 +58,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.examples.text.client.aggregation.helpers.ILocalityMap
      * #getConsumerPartitionCount(int)
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java
index a4c47c4..7856d6a 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwareMToNPartitioningConnectorDescriptor.java
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.dataflow.IConnectorDescriptor#createPartitioner
      * (org.apache.hyracks.api.context.IHyracksTaskContext,
@@ -67,7 +67,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.dataflow.IConnectorDescriptor#
      * createPartitionCollector
      * (org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
index 830075c..253b3e3 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/connectors/LocalityAwarePartitionDataWriter.java
@@ -63,7 +63,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.comm.IFrameWriter#open()
      */
     @Override
@@ -76,7 +76,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.comm.IFrameWriter#nextFrame(java.nio.ByteBuffer)
      */
@@ -92,7 +92,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.comm.IFrameWriter#fail()
      */
     @Override
@@ -118,7 +118,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.api.comm.IFrameWriter#close()
      */
     @Override
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
index b687684..33ac540 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/file/PlainFileWriterOperatorDescriptor.java
@@ -58,7 +58,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.dataflow.IActivityNode#createPushRuntime(edu.
      * uci.ics.hyracks.api.context.IHyracksContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java
index 1ef3b9e..4607032 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IAggregatorDescriptor.java
@@ -26,14 +26,14 @@
 
     /**
      * Create an aggregate state
-     * 
+     *
      * @return
      */
     public AggregateState createAggregateStates();
 
     /**
      * Initialize the state based on the input tuple.
-     * 
+     *
      * @param accessor
      * @param tIndex
      * @param fieldOutput
@@ -51,14 +51,14 @@
      * too. Note that here the frame is not an input argument, since it can be
      * reset outside of the aggregator (simply reset the starting index of the
      * buffer).
-     * 
+     *
      * @param state
      */
     public void reset();
 
     /**
      * Aggregate the value. Aggregate state should be updated correspondingly.
-     * 
+     *
      * @param accessor
      * @param tIndex
      * @param data
@@ -75,7 +75,7 @@
 
     /**
      * Output the partial aggregation result.
-     * 
+     *
      * @param fieldOutput
      *            The data output for the output frame
      * @param data
@@ -91,7 +91,7 @@
 
     /**
      * Output the final aggregation result.
-     * 
+     *
      * @param fieldOutput
      *            The data output for the output frame
      * @param data
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java
index e8d7754..fc50f1f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/IFieldAggregateDescriptor.java
@@ -30,13 +30,13 @@
 
     /**
      * Initialize the state based on the input tuple.
-     * 
+     *
      * @param accessor
      * @param tIndex
      * @param fieldOutput
      *            The data output for the frame containing the state. This may
      *            be null, if the state is maintained as a java object.
-     * 
+     *
      *            Note that we have an assumption that the initialization of the
      *            binary state (if any) inserts the state fields into the buffer
      *            in a appending fashion. This means that an arbitrary initial
@@ -53,21 +53,21 @@
      * too. Note that here the frame is not an input argument, since it can be
      * reset outside of the aggregator (simply reset the starting index of the
      * buffer).
-     * 
+     *
      * @param state
      */
     public void reset();
 
     /**
      * Aggregate the value. Aggregate state should be updated correspondingly.
-     * 
+     *
      * @param accessor
      * @param tIndex
      * @param data
      *            The buffer containing the state, if frame-based-state is used.
      *            This means that it can be null if java-object-based-state is
      *            used.
-     * 
+     *
      *            Here the length of binary state can be obtains from the state
      *            parameter, and if the content to be filled into that is over-
      *            flowing (larger than the reversed space), error should be
@@ -82,7 +82,7 @@
 
     /**
      * Output the partial aggregation result.
-     * 
+     *
      * @param fieldOutput
      *            The data output for the output frame
      * @param data
@@ -97,7 +97,7 @@
 
     /**
      * Output the final aggregation result.
-     * 
+     *
      * @param fieldOutput
      *            The data output for the output frame
      * @param data
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java
index 8a87486..7acd687 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldGroupAggregatorFactory.java
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java
index ae1c16f..b77c91c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/AvgFieldMergeAggregatorFactory.java
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java
index 357a2f8..bba9900 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/CountFieldAggregatorFactory.java
@@ -47,7 +47,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java
index 4a83127..771303f 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/FloatSumFieldAggregatorFactory.java
@@ -43,12 +43,12 @@
     private final int aggField;
 
     private final boolean useObjectState;
-    
+
     public FloatSumFieldAggregatorFactory(int aggField, boolean useObjState){
         this.aggField = aggField;
         this.useObjectState = useObjState;
     }
-    
+
     /* (non-Javadoc)
      * @see org.apache.hyracks.dataflow.std.group.IFieldAggregateDescriptorFactory#createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext, org.apache.hyracks.api.dataflow.value.RecordDescriptor, org.apache.hyracks.api.dataflow.value.RecordDescriptor)
      */
@@ -57,12 +57,12 @@
             RecordDescriptor inRecordDescriptor,
             RecordDescriptor outRecordDescriptor) throws HyracksDataException {
         return new IFieldAggregateDescriptor() {
-            
+
             @Override
             public void reset() {
-                
+
             }
-            
+
             @Override
             public void outputPartialResult(DataOutput fieldOutput, byte[] data,
                     int offset, AggregateState state) throws HyracksDataException {
@@ -78,7 +78,7 @@
                     throw new HyracksDataException("I/O exception when writing aggregation to the output buffer.");
                 }
             }
-            
+
             @Override
             public void outputFinalResult(DataOutput fieldOutput, byte[] data,
                     int offset, AggregateState state) throws HyracksDataException {
@@ -94,17 +94,17 @@
                     throw new HyracksDataException("I/O exception when writing aggregation to the output buffer.");
                 }
             }
-            
+
             @Override
             public boolean needsObjectState() {
                 return useObjectState;
             }
-            
+
             @Override
             public boolean needsBinaryState() {
                 return !useObjectState;
             }
-            
+
             @Override
             public void init(IFrameTupleAccessor accessor, int tIndex,
                     DataOutput fieldOutput, AggregateState state)
@@ -125,18 +125,18 @@
                     state.state = sum;
                 }
             }
-            
+
             @Override
             public AggregateState createState() {
                 return new AggregateState(new Float(0.0));
             }
-            
+
             @Override
             public void close() {
                 // TODO Auto-generated method stub
-                
+
             }
-            
+
             @Override
             public void aggregate(IFrameTupleAccessor accessor, int tIndex,
                     byte[] data, int offset, AggregateState state)
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java
index 9983541..511b651 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/IntSumFieldAggregatorFactory.java
@@ -50,7 +50,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see org.apache.hyracks.dataflow.std.aggregations.
      * IFieldAggregateDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
index 4e69437..6900918 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MinMaxStringFieldAggregatorFactory.java
@@ -55,7 +55,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.dataflow.std.aggregators.IAggregatorDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java
index bb940b1..b25d16c 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/aggregators/MultiFieldsAggregatorFactory.java
@@ -49,7 +49,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.dataflow.std.aggregations.IAggregatorDescriptorFactory
      * #createAggregator(org.apache.hyracks.api.context.IHyracksTaskContext,
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java
index 4f479b0..a0fd5f8 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/external/ExternalGroupOperatorDescriptor.java
@@ -85,7 +85,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.dataflow.IOperatorDescriptor#contributeActivities
      * (org.apache.hyracks.api.dataflow.IActivityGraphBuilder)
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOperatorDescriptor.java
index 31ada7b..a0bbb2d 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/group/hash/HashGroupOperatorDescriptor.java
@@ -65,7 +65,7 @@
 
     /*
      * (non-Javadoc)
-     * 
+     *
      * @see
      * org.apache.hyracks.api.dataflow.IOperatorDescriptor#contributeActivities
      * (org.apache.hyracks.api.dataflow.IActivityGraphBuilder)
@@ -113,4 +113,4 @@
                     HASH_BUILD_ACTIVITY_ID), partition));
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java
index 3037143..4e4256e 100644
--- a/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java
+++ b/hyracks/hyracks-dataflow-std/src/main/java/org/apache/hyracks/dataflow/std/join/GraceHashJoinOperatorDescriptor.java
@@ -153,7 +153,7 @@
             final RecordDescriptor rd1 = recordDescProvider.getInputRecordDescriptor(spartAid, 0);
             int numPartitions = (int) Math.ceil(Math.sqrt(inputsize0 * factor / nPartitions));
             final IPredicateEvaluator predEvaluator = ( predEvaluatorFactory == null ? null : predEvaluatorFactory.createPredicateEvaluator() );
-            
+
             return new GraceHashJoinOperatorNodePushable(ctx, new TaskId(new ActivityId(getOperatorId(),
                     RPARTITION_ACTIVITY_ID), partition), new TaskId(new ActivityId(getOperatorId(),
                     SPARTITION_ACTIVITY_ID), partition), recordsPerFrame, factor, keys0, keys1, hashFunctionFactories,
@@ -161,4 +161,4 @@
                     predEvaluator, isLeftOuter);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
index ac521f5..aa386a8 100644
--- a/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
+++ b/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
@@ -147,7 +147,7 @@
         // tuple
         int[] primaryFieldPermutation = { 2, 1, 3, 4 }; // map field 2 of input
                                                         // tuple to field 0 of
-                                                        // B-Tree tuple, etc.        
+                                                        // B-Tree tuple, etc.
         IFileSplitProvider primarySplitProvider = JobHelper.createFileSplitProvider(splitNCs, options.primaryBTreeName);
 
         IIndexDataflowHelperFactory dataflowHelperFactory = new BTreeDataflowHelperFactory(true);
@@ -206,4 +206,4 @@
 
         return spec;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java
index 6aba049..701e7e0 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java
@@ -33,7 +33,7 @@
     public LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest() {
             this.rTreeType = RTreeType.LSMRTREE_WITH_ANTIMATTER;
         }
-    
+
     protected ITreeIndexOperatorTestHelper createTestHelper() throws HyracksException {
         return new LSMRTreeWithAntiMatterTuplesOperatorTestHelper(TestStorageManagerComponentHolder.getIOManager());
     }
@@ -46,4 +46,4 @@
         return ((LSMRTreeWithAntiMatterTuplesOperatorTestHelper) testHelper).createDataFlowHelperFactory(
                 secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java
index 55689e9..27650e4 100644
--- a/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java
+++ b/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/LocalityAwareConnectorTest.java
@@ -95,7 +95,7 @@
      * same, each of which is the aggregation of two copies of the lineitem.tbl.
      * Note that if the hashing connector is not working correctly, the two files may be different. This
      * also means that even the output files are the same, the hashing may have other problems.
-     * 
+     *
      * @throws Exception
      */
     @Test
@@ -155,7 +155,7 @@
     /**
      * Test for locality aware connector, using the global hashing node mapper. This should have
      * the exactly the same result as using {@link MToNPartitioningConnectorDescriptor}.
-     * 
+     *
      * @throws Exception
      */
     @Test
diff --git a/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java b/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java
index c07a8a6..97f5a64 100644
--- a/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java
+++ b/hyracks/hyracks-examples/hyracks-shutdown-test/src/test/java/org/apache/hyracks/examples/shutdown/test/ClusterShutdownIT.java
@@ -45,9 +45,9 @@
         ServerSocket s = null;
         try {
             c = new ServerSocket(1098);
-            //we should be able to bind to this 
+            //we should be able to bind to this
             s = new ServerSocket(1099);
-            //and we should be able to bind to this too 
+            //and we should be able to bind to this too
         } catch (Exception e) {
             LOGGER.severe(e.getMessage());
             throw e;
diff --git a/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java b/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java
index cb6006b..b9cbb9d 100644
--- a/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java
+++ b/hyracks/hyracks-examples/text-example/textclient/src/main/java/org/apache/hyracks/examples/text/client/WordCountMain.java
@@ -89,7 +89,7 @@
 
         @Option(name = "-runtime-profiling", usage = "Indicates if runtime profiling should be enabled. (default: false)")
         public boolean runtimeProfiling = false;
-        
+
         @Option(name = "-frame-size", usage = "Hyracks frame size (default: 32768)", required = false)
         public int frameSize = 32768;
     }
@@ -206,4 +206,4 @@
         }
         PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, op, parts);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java
index 49ee478..0e2e8df 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParser.java
@@ -24,7 +24,7 @@
 
 /**
  * Users need to implement this interface to use the HDFSReadOperatorDescriptor.
- * 
+ *
  * @param <K>
  *            the key type
  * @param <V>
@@ -34,7 +34,7 @@
 
     /**
      * Initialize the key value parser.
-     * 
+     *
      * @param writer
      *            The hyracks writer for outputting data.
      * @throws HyracksDataException
@@ -53,7 +53,7 @@
     /**
      * Flush the residual tuples in the internal buffer to the writer.
      * This method is called in the close() of HDFSReadOperatorDescriptor.
-     * 
+     *
      * @param writer
      *            The hyracks writer for outputting data.
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java
index c0175a4..1cde639 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/IKeyValueParserFactory.java
@@ -26,7 +26,7 @@
 
 /**
  * Users need to implement this interface to use the HDFSReadOperatorDescriptor.
- * 
+ *
  * @param <K>
  *            the key type
  * @param <V>
@@ -36,7 +36,7 @@
 
     /**
      * This method creates a key-value parser.
-     * 
+     *
      * @param ctx
      *            the IHyracksTaskContext
      * @return a key-value parser instance.
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java
index c617dff..9010378 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/INcCollectionBuilder.java
@@ -25,7 +25,7 @@
 
 /**
  * NC collections
- * 
+ *
  * @author yingyib
  */
 public interface INcCollectionBuilder {
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java
index d153eef..f950750 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/api/ITupleWriter.java
@@ -31,7 +31,7 @@
 
     /**
      * Initialize the the tuple writer.
-     * 
+     *
      * @param output
      *            The channel for output data.
      * @throws HyracksDataException
@@ -40,7 +40,7 @@
 
     /**
      * Write the tuple to the DataOutput.
-     * 
+     *
      * @param output
      *            the DataOutput channel
      * @param tuple
@@ -51,7 +51,7 @@
 
     /**
      * Close the writer.
-     * 
+     *
      * @param output
      *            The channel for output data.
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
index 26292f8..7b80157 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java
@@ -55,7 +55,7 @@
 
     /**
      * The constructor of HDFSReadOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param rd
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
index 7f9ae8d..e7a3111 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSWriteOperatorDescriptor.java
@@ -55,7 +55,7 @@
 
     /**
      * The constructor of HDFSWriteOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param conf
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
index 645adef..8eb03c6 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/InputSplitsFactory.java
@@ -54,7 +54,7 @@
 
     /**
      * Convert splits to bytes.
-     * 
+     *
      * @param splits
      *            input splits
      * @return bytes which serialize the splits
@@ -77,7 +77,7 @@
 
     /**
      * Covert bytes to splits.
-     * 
+     *
      * @param bytes
      * @return
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
index c28c740..2d1c87a 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/scheduler/Scheduler.java
@@ -69,7 +69,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
@@ -89,7 +89,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
@@ -106,7 +106,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -119,7 +119,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @param topology
@@ -135,7 +135,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -151,7 +151,7 @@
      * Set location constraints for a file scan operator with a list of file
      * splits. It guarantees the maximum slots a machine can is at most one more
      * than the minimum slots a machine can get.
-     * 
+     *
      * @throws HyracksDataException
      */
     public String[] getLocationConstraints(InputSplit[] splits) throws HyracksException {
@@ -215,7 +215,7 @@
 
     /**
      * Schedule non-local slots to each machine
-     * 
+     *
      * @param splits
      *            The HDFS file splits.
      * @param workloads
@@ -257,7 +257,7 @@
 
     /**
      * Schedule data-local slots to each machine.
-     * 
+     *
      * @param splits
      *            The HDFS file splits.
      * @param workloads
@@ -344,7 +344,7 @@
 
     /**
      * Scan the splits once and build a popularity map
-     * 
+     *
      * @param splits
      *            the split array
      * @param locationToNumOfSplits
@@ -368,7 +368,7 @@
 
     /**
      * Load the IP-address-to-NC map from the NCNameToNCInfoMap
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
index fe7eb4b..ef95ee8 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/FileSplitsFactory.java
@@ -53,7 +53,7 @@
 
     /**
      * Convert splits to bytes.
-     * 
+     *
      * @param splits
      *            input splits
      * @return bytes which serialize the splits
@@ -77,7 +77,7 @@
 
     /**
      * Covert bytes to splits.
-     * 
+     *
      * @param bytes
      * @return
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
index d69191d..7424b7d 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java
@@ -60,7 +60,7 @@
 
     /**
      * The constructor of HDFSReadOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param rd
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
index f17b3bc..c27e4ec 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSWriteOperatorDescriptor.java
@@ -54,7 +54,7 @@
 
     /**
      * The constructor of HDFSWriteOperatorDescriptor.
-     * 
+     *
      * @param spec
      *            the JobSpecification object
      * @param conf
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
index d9333d5..97960bc 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/scheduler/Scheduler.java
@@ -41,7 +41,7 @@
 
     /**
      * The constructor of the scheduler
-     * 
+     *
      * @param ncNameToNcInfos
      * @throws HyracksException
      */
@@ -51,7 +51,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -62,7 +62,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @param topology
@@ -75,7 +75,7 @@
 
     /**
      * The constructor of the scheduler.
-     * 
+     *
      * @param ncNameToNcInfos
      *            the mapping from nc names to nc infos
      * @throws HyracksException
@@ -87,7 +87,7 @@
 
     /**
      * Set location constraints for a file scan operator with a list of file splits
-     * 
+     *
      * @throws HyracksDataException
      */
     public String[] getLocationConstraints(List<InputSplit> splits) throws HyracksException {
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java
index 1515037..c5ca25e 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/dataflow/DataflowTest.java
@@ -99,7 +99,7 @@
 
     /**
      * Start the HDFS cluster and setup the data files
-     * 
+     *
      * @throws IOException
      */
     private void startHDFS() throws IOException {
@@ -127,7 +127,7 @@
 
     /**
      * Test a job with only HDFS read and writes.
-     * 
+     *
      * @throws Exception
      */
     public void testHDFSReadWriteOperators() throws Exception {
@@ -174,7 +174,7 @@
 
     /**
      * Check if the results are correct
-     * 
+     *
      * @return true if correct
      * @throws Exception
      */
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java
index 1374178..373fe21 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs/scheduler/SchedulerTest.java
@@ -56,7 +56,7 @@
 
     /**
      * Test the scheduler for the case when the Hyracks cluster is the HDFS cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSimple() throws Exception {
@@ -94,7 +94,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerLargerHDFS() throws Exception {
@@ -141,7 +141,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFS() throws Exception {
@@ -187,7 +187,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFSOdd() throws Exception {
@@ -235,7 +235,7 @@
 
     /**
      * Test boundary cases where splits array is empty or null
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulercBoundary() throws Exception {
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java
index 0b41b07..fb6f32e 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/dataflow/DataflowTest.java
@@ -104,7 +104,7 @@
 
     /**
      * Start the HDFS cluster and setup the data files
-     * 
+     *
      * @throws IOException
      */
     private void startHDFS() throws IOException {
@@ -132,7 +132,7 @@
 
     /**
      * Test a job with only HDFS read and writes.
-     * 
+     *
      * @throws Exception
      */
     @SuppressWarnings({ "rawtypes", "unchecked" })
@@ -181,7 +181,7 @@
 
     /**
      * Check if the results are correct
-     * 
+     *
      * @return true if correct
      * @throws Exception
      */
diff --git a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java
index 7f42a89..6eabb71 100644
--- a/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java
+++ b/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/test/java/org/apache/hyracks/hdfs2/scheduler/SchedulerTest.java
@@ -43,7 +43,7 @@
 
     /**
      * Test the scheduler for the case when the Hyracks cluster is the HDFS cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSimple() throws Exception {
@@ -75,7 +75,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerLargerHDFS() throws Exception {
@@ -114,7 +114,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFS() throws Exception {
@@ -153,7 +153,7 @@
 
     /**
      * Test the case where the HDFS cluster is a larger than the Hyracks cluster
-     * 
+     *
      * @throws Exception
      */
     public void testSchedulerSmallerHDFSOdd() throws Exception {
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
index 43451a7..d66f233 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/api/IIPCHandle.java
@@ -30,6 +30,6 @@
     public void setAttachment(Object attachment);
 
     public Object getAttachment();
-    
+
     public boolean isConnected();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
index 794af9b..62be1b0 100644
--- a/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
+++ b/hyracks/hyracks-ipc/src/main/java/org/apache/hyracks/ipc/impl/IPCSystem.java
@@ -72,7 +72,7 @@
             throw new IPCException(e);
         }
     }
-    
+
     IPayloadSerializerDeserializer getSerializerDeserializer() {
         return serde;
     }
@@ -102,4 +102,4 @@
     public IPCPerformanceCounters getPerformanceCounters() {
         return perfCounters;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java
index fb75b85..d7febd2 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/IBufferAcceptor.java
@@ -22,14 +22,14 @@
 
 /**
  * Accepts buffers.
- * 
+ *
  * @author vinayakb
  */
 public interface IBufferAcceptor {
     /**
      * Accept a buffer.
-     * 
+     *
      * @param buffer
      */
     public void accept(ByteBuffer buffer);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java
index e915ab0..1697cfd 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/buffers/ICloseableBufferAcceptor.java
@@ -21,7 +21,7 @@
 /**
  * A buffer acceptor that can be closed to indicate end of transmission or an error code
  * specified to indicate an error in transmission.
- * 
+ *
  * @author vinayakb
  */
 public interface ICloseableBufferAcceptor extends IBufferAcceptor {
@@ -32,9 +32,9 @@
 
     /**
      * Indicate that an error occurred.
-     * 
+     *
      * @param ecode
      *            - the error code.
      */
     public void error(int ecode);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
index 0da117f..6d82297 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/ChannelControlBlock.java
@@ -34,7 +34,7 @@
 
 /**
  * Handle to a channel that represents a logical full-duplex communication end-point.
- * 
+ *
  * @author vinayakb
  */
 public class ChannelControlBlock {
@@ -73,7 +73,7 @@
 
     /**
      * Get the read inderface of this channel.
-     * 
+     *
      * @return the read interface.
      */
     public IChannelReadInterface getReadInterface() {
@@ -82,7 +82,7 @@
 
     /**
      * Get the write interface of this channel.
-     * 
+     *
      * @return the write interface.
      */
     public IChannelWriteInterface getWriteInterface() {
@@ -402,4 +402,4 @@
                 + " remoteClose: " + remoteClose + " remoteCloseAck:" + remoteCloseAck + " readCredits: " + ri.credits
                 + " writeCredits: " + wi.credits + "]";
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java
index 7a32170..1631f98 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelOpenListener.java
@@ -20,15 +20,15 @@
 
 /**
  * Callback interface to report opening of channels.
- * 
+ *
  * @author vinayakb
  */
 public interface IChannelOpenListener {
     /**
      * Indicates that a remote endpoint has opened a channel to this receiver.
-     * 
+     *
      * @param channel
      *            - The newly opened channel.
      */
     public void channelOpened(ChannelControlBlock channel);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java
index 4176192..8639fb7 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelReadInterface.java
@@ -23,14 +23,14 @@
 
 /**
  * Represents the read interface of a {@link ChannelControlBlock}.
- * 
+ *
  * @author vinayakb
  */
 public interface IChannelReadInterface {
     /**
      * Set the callback that will be invoked by the network layer when a buffer has been
      * filled with data received from the remote side.
-     * 
+     *
      * @param fullBufferAcceptor
      *            - the full buffer acceptor.
      */
@@ -39,7 +39,7 @@
     /**
      * Get the acceptor that collects empty buffers when the client has finished consuming
      * a previously full buffer.
-     * 
+     *
      * @return the empty buffer acceptor.
      */
     public IBufferAcceptor getEmptyBufferAcceptor();
@@ -47,7 +47,7 @@
     /**
      * Set the buffer factory which is in charge of creating buffers if the request does not
      * make the number of allocated buffers goes beyond limit
-     * 
+     *
      * @param bufferFactory
      *            - the buffer factory
      * @param limit
@@ -56,4 +56,4 @@
      *            - the size of each buffer
      */
     public void setBufferFactory(IBufferFactory bufferFactory, int limit, int frameSize);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java
index 482cb21..dc38ea4 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/IChannelWriteInterface.java
@@ -23,14 +23,14 @@
 
 /**
  * Represents the write interface of a {@link ChannelControlBlock}.
- * 
+ *
  * @author vinayakb
  */
 public interface IChannelWriteInterface {
     /**
      * Set the callback interface that must be invoked when a full buffer has been emptied by
      * writing the data to the remote end.
-     * 
+     *
      * @param emptyBufferAcceptor
      *            - the empty buffer acceptor.
      */
@@ -39,7 +39,7 @@
     /**
      * Get the full buffer acceptor that accepts buffers filled with data that need to be written
      * to the remote end.
-     * 
+     *
      * @return the full buffer acceptor.
      */
     public ICloseableBufferAcceptor getFullBufferAcceptor();
@@ -47,7 +47,7 @@
     /**
      * Set the buffer factory which is in charge of creating buffers if the request does not
      * make the number of allocated buffers goes beyond limit
-     * 
+     *
      * @param bufferFactory
      *            - the buffer factory
      * @param limit
@@ -56,4 +56,4 @@
      *            - the size of each buffer
      */
     public void setBufferFactory(IBufferFactory bufferFactory, int limit, int frameSize);
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java
index 65ab8d5..866f2c6 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MultiplexedConnection.java
@@ -33,7 +33,7 @@
 /**
  * A {@link MultiplexedConnection} can be used by clients to create multiple "channels"
  * that can have independent full-duplex conversations.
- * 
+ *
  * @author vinayakb
  */
 public class MultiplexedConnection implements ITCPConnectionEventListener {
@@ -140,7 +140,7 @@
 
     /**
      * Open a channel to the other side.
-     * 
+     *
      * @return
      * @throws NetException
      *             - A network failure occurred.
@@ -414,4 +414,4 @@
             readerState.reset();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java
index 7472686..0ea7b13 100644
--- a/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java
+++ b/hyracks/hyracks-net/src/main/java/org/apache/hyracks/net/protocols/muxdemux/MuxDemux.java
@@ -32,7 +32,7 @@
  * Multiplexed Connection Manager.
  * Every participant that wants to use the multiplexed connections must create and instance
  * of this class.
- * 
+ *
  * @author vinayakb
  */
 public class MuxDemux {
@@ -50,7 +50,7 @@
 
     /**
      * Constructor.
-     * 
+     *
      * @param localAddress
      *            - TCP/IP socket address to listen on. Null for non-listening unidirectional sockets
      * @param listener
@@ -109,7 +109,7 @@
 
     /**
      * Starts listening for remote connections and is capable of initiating connections.
-     * 
+     *
      * @throws IOException
      */
     public void start() throws IOException {
@@ -119,7 +119,7 @@
     /**
      * Create a {@link MultiplexedConnection} that can create channels to the specified remote address.
      * The remote address must have a {@link MuxDemux} listening for connections.
-     * 
+     *
      * @param remoteAddress
      *            - Address of the remote {@link MuxDemux}
      * @return a {@link MultiplexedConnection} connected to the remote address.
@@ -148,7 +148,7 @@
 
     /**
      * Get the local address that this {@link MuxDemux} is listening for connections.
-     * 
+     *
      * @return local TCP/IP socket address.
      */
     public InetSocketAddress getLocalAddress() {
@@ -157,10 +157,10 @@
 
     /**
      * Gets performance counters useful for collecting efficiency metrics.
-     * 
+     *
      * @return
      */
     public MuxDemuxPerformanceCounters getPerformanceCounters() {
         return perfCounters;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java
index fc91c42..5b387f4 100644
--- a/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java
+++ b/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomCalculations.java
@@ -93,7 +93,7 @@
     /**
      * Given the number of buckets that can be used per element, return a
      * specification that minimizes the false positive rate.
-     * 
+     *
      * @param bucketsPerElement
      *            The number of buckets per element for the filter.
      * @return A spec that minimizes the false positive rate.
@@ -111,7 +111,7 @@
      * functions used. Because bandwidth (and therefore total bitvector size)
      * is considered more expensive than computing power, preference is given
      * to minimizing buckets per element rather than number of hash functions.
-     * 
+     *
      * @param maxBucketsPerElement
      *            The maximum number of buckets available for the filter.
      * @param maxFalsePosProb
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
index 08f98a3..a017ea5 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTree.java
@@ -328,7 +328,7 @@
     private void update(ITupleReference tuple, BTreeOpContext ctx) throws HyracksDataException, TreeIndexException {
         // This call only allows updating of non-key fields.
         // Updating a tuple's key necessitates deleting the old entry, and inserting the new entry.
-        // The user of the BTree is responsible for dealing with non-key updates (i.e., doing a delete + insert). 
+        // The user of the BTree is responsible for dealing with non-key updates (i.e., doing a delete + insert).
         if (fieldCount == ctx.cmp.getKeyFieldCount()) {
             throw new BTreeNotUpdateableException("Cannot perform updates when the entire tuple forms the key.");
         }
@@ -632,7 +632,7 @@
                                 node = isConsistent(pageId, ctx);
                                 if (node != null) {
                                     isReadLatched = true;
-                                    // Descend the tree again.                                
+                                    // Descend the tree again.
                                     continue;
                                 } else {
                                     // Pop pageLsn of this page (version seen by this op during descent).
@@ -654,7 +654,7 @@
                                             BufferedFileHandle.getDiskPageId(fileId, pageId), false);
                                     interiorNode.acquireWriteLatch();
                                     try {
-                                        // Insert or update op. Both can cause split keys to propagate upwards. 
+                                        // Insert or update op. Both can cause split keys to propagate upwards.
                                         insertInterior(interiorNode, pageId, ctx.splitKey.getTuple(), ctx);
                                     } finally {
                                         interiorNode.releaseWriteLatch(true);
diff --git a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java
index a1a90dc..acd8b91 100644
--- a/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java
+++ b/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/impls/BTreeCursorInitialState.java
@@ -38,7 +38,7 @@
         this.searchCallback = searchCallback;
         this.accessor = accessor;
     }
-    
+
     public IIndexAccessor getAccessor() {
         return accessor;
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java
index e670390..8ea1f88 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndex.java
@@ -34,7 +34,7 @@
      * Initializes the persistent state of an index.
      * An index cannot be created if it is in the activated state.
      * Calling create on an index that is deactivated has the effect of clearing the index.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is an error in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -45,7 +45,7 @@
     /**
      * Initializes the index's operational state. An index in the activated state may perform
      * operations via an {@link IIndexAccessor}.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is a problem in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -56,7 +56,7 @@
      * Resets the operational state of the index. Calling clear has the same logical effect
      * as calling deactivate(), destroy(), create(), then activate(), but not necessarily the
      * same physical effect.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is a problem in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -67,7 +67,7 @@
     /**
      * Deinitializes the index's operational state. An index in the deactivated state may not
      * perform operations.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is a problem in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -77,7 +77,7 @@
     /**
      * Removes the persistent state of an index.
      * An index cannot be destroyed if it is in the activated state.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is an error in the BufferCache while (un)pinning pages, (un)latching pages,
      *             creating files, or deleting files
@@ -89,7 +89,7 @@
      * Creates an {@link IIndexAccessor} for performing operations on this index.
      * An IIndexAccessor is not thread safe, but different IIndexAccessors can concurrently operate
      * on the same {@link IIndex}.
-     * 
+     *
      * @returns IIndexAccessor an accessor for this {@link IIndex}
      * @param modificationCallback
      *            the callback to be used for modification operations
@@ -103,7 +103,7 @@
     /**
      * Ensures that all pages (and tuples) of the index are logically consistent.
      * An assertion error is thrown if validation fails.
-     * 
+     *
      * @throws HyracksDataException
      *             if there is an error performing validation
      */
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java
index 3fd38ee..1903222 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexAccessor.java
@@ -31,7 +31,7 @@
 public interface IIndexAccessor {
     /**
      * Inserts the given tuple.
-     * 
+     *
      * @param tuple
      *            Tuple to be inserted.
      * @throws HyracksDataException
@@ -45,7 +45,7 @@
     /**
      * Updates the tuple in the index matching the given tuple with the new
      * contents in the given tuple.
-     * 
+     *
      * @param tuple
      *            Tuple whose match in the index is to be update with the given
      *            tuples contents.
@@ -58,7 +58,7 @@
 
     /**
      * Deletes the tuple in the index matching the given tuple.
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
@@ -72,27 +72,27 @@
      * This operation is only supported by indexes with the notion of a unique key.
      * If tuple's key already exists, then this operation performs an update.
      * Otherwise, it performs an insert.
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
      *             If the BufferCache throws while un/pinning or un/latching.
      * @throws IndexException
      *             If there is no matching tuple in the index.
-     * 
+     *
      */
     public void upsert(ITupleReference tuple) throws HyracksDataException, IndexException;
-    
+
     /**
      * Creates a cursor appropriate for passing into search().
-     * 
+     *
      */
     public IIndexCursor createSearchCursor(boolean exclusive);
 
     /**
      * Open the given cursor for an index search using the given predicate as
      * search condition.
-     * 
+     *
      * @param icursor
      *            Cursor over the index entries satisfying searchPred.
      * @param searchPred
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java
index b837022..f371522 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IIndexBulkLoader.java
@@ -24,7 +24,7 @@
 public interface IIndexBulkLoader {
     /**
      * Append a tuple to the index in the context of a bulk load.
-     * 
+     *
      * @param tuple
      *            Tuple to be inserted.
      * @throws IndexException
@@ -36,7 +36,7 @@
 
     /**
      * Finalize the bulk loading operation in the given context.
-     * 
+     *
      * @throws IndexException
      * @throws HyracksDataException
      *             If the BufferCache throws while un/pinning or un/latching.
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetaDataPageManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetaDataPageManager.java
index c1dcce7..48d9e26 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetaDataPageManager.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IMetaDataPageManager.java
@@ -134,7 +134,7 @@
 
     /**
      * @return The LSN byte offset in the LSM disk component if the index is valid, otherwise {@link #INVALID_LSN_OFFSET}.
-     * @throws HyracksDataException 
+     * @throws HyracksDataException
      */
     long getLSNOffset() throws HyracksDataException;
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java
index 7ec4a30..f22c239 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IModificationOperationCallback.java
@@ -25,6 +25,7 @@
  * This operation callback allows for arbitrary actions to be taken while traversing
  * an index structure. The {@link IModificationOperationCallback} will be called on
  * all modifying operations (e.g. insert, update, delete...) for all indexes.
+ *
  * @author zheilbron
  */
 public interface IModificationOperationCallback {
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java
index 31d159a..ac3fc3b 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexAccessor.java
@@ -31,14 +31,14 @@
 public interface ITreeIndexAccessor extends IIndexAccessor {
 	/**
 	 * Creates a cursor appropriate for passing into diskOrderScan().
-	 * 
+	 *
 	 */
 	public ITreeIndexCursor createDiskOrderScanCursor();
-	
+
 	/**
 	 * Open the given cursor for a disk-order scan, positioning the cursor to
 	 * the first leaf tuple.
-	 * 
+	 *
 	 * @param icursor
 	 *            Cursor to be opened for disk-order scanning.
 	 * @throws HyracksDataException
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
index 5de178f..e33b949 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexMetaDataFrame.java
@@ -46,7 +46,7 @@
 
     public void addFreePage(int freePage);
 
-    // Special flag for LSM-Components to mark whether they are valid or not. 
+    // Special flag for LSM-Components to mark whether they are valid or not.
     public boolean isValid();
 
     // Set special validity flag.
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java
index baeabca..6b041eb 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITreeIndexTupleReference.java
@@ -31,6 +31,6 @@
     public void resetByTupleOffset(ByteBuffer buf, int tupleStartOffset);
 
     public void resetByTupleIndex(ITreeIndexFrame frame, int tupleIndex);
-    
+
     public int getTupleSize();
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java
index a4f67a4..b0debc9 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITupleUpdater.java
@@ -26,7 +26,7 @@
  * assumes that the modifications do not change the size of the tuple, and that
  * it does not change keys (e.g., BTree keys). This interface is used to
  * implement update scans.
- * 
+ *
  */
 public interface ITupleUpdater {
 	public void updateTuple(ITupleReference tuple);
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java
index 134dda8..57e524a 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/ITwoPCIndexBulkLoader.java
@@ -22,10 +22,10 @@
  * under the License.
  */
 public interface ITwoPCIndexBulkLoader {
-    
+
     /**
      * Append a "delete" tuple to the index in the context of a bulk load.
-     * 
+     *
      * @param tuple
      *            "delete" Tuple to be inserted.
      * @throws IndexException
@@ -34,7 +34,7 @@
      *             If the BufferCache throws while un/pinning or un/latching.
      */
     public void delete(ITupleReference tuple) throws IndexException, HyracksDataException;
-    
+
     /**
      * Abort the bulk modify op
      */
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java
index 3771fb2..0c5d2cc 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/IndexException.java
@@ -22,7 +22,7 @@
 public class IndexException extends Exception {
     private static final long serialVersionUID = 1L;
 
-    public IndexException(Exception e) {        
+    public IndexException(Exception e) {
         super(e);
     }
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java
index 588e7f7..988a304 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/TreeIndexException.java
@@ -24,7 +24,7 @@
 	private static final long serialVersionUID = 1L;
 	private boolean handled = false;
 
-	public TreeIndexException(Exception e) {		
+	public TreeIndexException(Exception e) {
 		super(e);
 	}
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java
index 9fe2fca..dd69cb1 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/api/UnsortedInputException.java
@@ -20,15 +20,15 @@
 package org.apache.hyracks.storage.am.common.api;
 
 /**
- * Thrown when trying to bulk load an index with an unsorted input stream. 
+ * Thrown when trying to bulk load an index with an unsorted input stream.
  */
 public class UnsortedInputException extends IndexException {
 	private static final long serialVersionUID = 1L;
-	
+
 	public UnsortedInputException(Exception e) {
 		super(e);
 	}
-	
+
 	public UnsortedInputException(String message) {
         super(message);
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java
index b452db9..4ae6995 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/ITreeIndexOperatorDescriptor.java
@@ -25,8 +25,8 @@
 
 public interface ITreeIndexOperatorDescriptor extends IIndexOperatorDescriptor {
 	public IBinaryComparatorFactory[] getTreeIndexComparatorFactories();
-	
+
 	public ITypeTraits[] getTreeIndexTypeTraits();
-	
+
 	public ITupleFilterFactory getTupleFilterFactory();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java
index e465aa0..bb4f8a1 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/dataflow/IndexDataflowHelper.java
@@ -76,8 +76,8 @@
                 index = createIndexInstance();
             }
 
-            // The previous resource ID needs to be removed since calling IIndex.create() may possibly destroy 
-            // any physical artifact that the LocalResourceRepository is managing (e.g. a file containing the resource ID). 
+            // The previous resource ID needs to be removed since calling IIndex.create() may possibly destroy
+            // any physical artifact that the LocalResourceRepository is managing (e.g. a file containing the resource ID).
             // Once the index has been created, a new resource ID can be generated.
             long resourceID = getResourceID();
             if (resourceID != -1) {
@@ -160,4 +160,4 @@
     public String getResourcePath() {
         return resourcePath;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java
index ee763e4..49edafb 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/PersonNameFieldValueGenerator.java
@@ -79,7 +79,7 @@
         int fix = Math.abs(rnd.nextInt()) % firstNames.size();
         strBuilder.append(firstNames.get(fix));
         strBuilder.append(" ");
-        
+
         // Optional middle initial.
         double d = Math.abs(rnd.nextDouble());
         if (d <= middleInitialProb) {
@@ -87,11 +87,11 @@
             strBuilder.append(letters.charAt(mix));
             strBuilder.append(". ");
         }
-        
+
         // Last name.
         int lix = Math.abs(rnd.nextInt()) % lastNames.size();
         strBuilder.append(lastNames.get(lix));
-        
+
         return strBuilder.toString();
     }
 
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java
index a5f781d..ddca6f3 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedDoubleFieldValueGenerator.java
@@ -22,17 +22,17 @@
 public class SortedDoubleFieldValueGenerator implements IFieldValueGenerator<Double> {
     private double val;
     private final double startVal;
-    
+
     public SortedDoubleFieldValueGenerator() {
         startVal = 0.0d;
         reset();
     }
-    
+
     public SortedDoubleFieldValueGenerator(double startVal) {
         this.startVal = startVal;
         reset();
     }
-    
+
     @Override
     public Double next() {
         return val++;
@@ -40,6 +40,6 @@
 
     @Override
     public void reset() {
-        val = startVal;        
+        val = startVal;
     }
 }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java
index 5c77896..1e5dd19 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedFloatFieldValueGenerator.java
@@ -22,17 +22,17 @@
 public class SortedFloatFieldValueGenerator implements IFieldValueGenerator<Float> {
     private float val = 0.0f;
     private final float startVal;
-    
+
     public SortedFloatFieldValueGenerator() {
         startVal = 0.0f;
         reset();
     }
-    
+
     public SortedFloatFieldValueGenerator(float startVal) {
         this.startVal = startVal;
         reset();
     }
-    
+
     @Override
     public Float next() {
         return val++;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java
index be97fea..3ab17ca 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/SortedIntegerFieldValueGenerator.java
@@ -27,12 +27,12 @@
         startVal = 0;
         reset();
     }
-    
+
     public SortedIntegerFieldValueGenerator(int startVal) {
         this.startVal = startVal;
         reset();
     }
-    
+
     @Override
     public Integer next() {
         return val++;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java
index 3330e4b..c337462 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/StringFieldValueGenerator.java
@@ -24,7 +24,7 @@
 public class StringFieldValueGenerator implements IFieldValueGenerator<String> {
     private int maxLen;
     private final Random rnd;
-    
+
     public StringFieldValueGenerator(int maxLen, Random rnd) {
         this.maxLen = maxLen;
         this.rnd = rnd;
@@ -33,7 +33,7 @@
     public void setMaxLength(int maxLen) {
         this.maxLen = maxLen;
     }
-    
+
     @Override
     public String next() {
         String s = Long.toHexString(Double.doubleToLongBits(rnd.nextDouble()));
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java
index 1e05527..c34c7bc 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleBatch.java
@@ -30,25 +30,25 @@
     private final int size;
     private final TupleGenerator[] tupleGens;
     public final AtomicBoolean inUse = new AtomicBoolean(false);
-    
-    public TupleBatch(int size, IFieldValueGenerator[] fieldGens, ISerializerDeserializer[] fieldSerdes, int payloadSize) {        
+
+    public TupleBatch(int size, IFieldValueGenerator[] fieldGens, ISerializerDeserializer[] fieldSerdes, int payloadSize) {
         this.size = size;
         tupleGens = new TupleGenerator[size];
         for (int i = 0; i < size; i++) {
             tupleGens[i] = new TupleGenerator(fieldGens, fieldSerdes, payloadSize);
         }
     }
-    
+
     public void generate() throws IOException {
         for(TupleGenerator tupleGen : tupleGens) {
             tupleGen.next();
         }
     }
-    
+
     public int size() {
         return size;
     }
-    
+
     public ITupleReference get(int ix) {
         return tupleGens[ix].get();
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java
index 76aaac6..4f26065 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/datagen/TupleGenerator.java
@@ -28,14 +28,14 @@
 import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
 
 @SuppressWarnings({"rawtypes", "unchecked" })
-public class TupleGenerator {    
+public class TupleGenerator {
     protected final ISerializerDeserializer[] fieldSerdes;
     protected final IFieldValueGenerator[] fieldGens;
     protected final ArrayTupleBuilder tb;
     protected final ArrayTupleReference tuple;
     protected final byte[] payload;
     protected final DataOutput tbDos;
-    
+
     public TupleGenerator(IFieldValueGenerator[] fieldGens, ISerializerDeserializer[] fieldSerdes, int payloadSize) {
         this.fieldSerdes = fieldSerdes;
         this.fieldGens = fieldGens;
@@ -46,7 +46,7 @@
         } else {
             tb = new ArrayTupleBuilder(fieldSerdes.length);
             payload = null;
-        }        
+        }
         tbDos = tb.getDataOutput();
     }
 
@@ -63,21 +63,21 @@
         tuple.reset(tb.getFieldEndOffsets(), tb.getByteArray());
         return tuple;
     }
-    
+
     public ITupleReference get() {
         return tuple;
     }
-    
+
     public void reset() {
         for (IFieldValueGenerator fieldGen : fieldGens) {
             fieldGen.reset();
         }
     }
-    
+
     public ISerializerDeserializer[] getFieldSerdes() {
         return fieldSerdes;
     }
-    
+
     public IFieldValueGenerator[] getFieldGens() {
         return fieldGens;
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java
index 7d61659..d9e119f 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/frames/AbstractSlotManager.java
@@ -23,10 +23,10 @@
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 
 public abstract class AbstractSlotManager implements ISlotManager {
-	
+
     public static final int GREATEST_KEY_INDICATOR = -1;
     public static final int ERROR_INDICATOR = -2;
-	
+
 	protected static final int slotSize = 4;
 	protected ITreeIndexFrame frame;
 
@@ -65,7 +65,7 @@
 	public int getSlotOff(int tupleIndex) {
 		return getSlotStartOff() - tupleIndex * slotSize;
 	}
-	
+
 	@Override
     public int getGreatestKeyIndicator() {
         return GREATEST_KEY_INDICATOR;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java
index 58ca2d5..83e39f2 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/impls/AbstractTreeIndex.java
@@ -312,7 +312,7 @@
         protected final ITreeIndexTupleWriter tupleWriter;
         protected ITreeIndexFrame leafFrame;
         protected ITreeIndexFrame interiorFrame;
-        // Immutable bulk loaders write their root page at page -2, as needed e.g. by append-only file systems such as HDFS. 
+        // Immutable bulk loaders write their root page at page -2, as needed e.g. by append-only file systems such as HDFS.
         // Since loading this tree relies on the root page actually being at that point, no further inserts into that tree are allowed.
         // Currently, this is not enforced.
         protected boolean releasedLatches;
@@ -322,7 +322,7 @@
 
         public AbstractTreeIndexBulkLoader(float fillFactor, boolean appendOnly) throws TreeIndexException,
                 HyracksDataException {
-            //Initialize the tree 
+            //Initialize the tree
             if (appendOnly) {
                 create(appendOnly);
                 this.appendOnly = appendOnly;
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java
index 5974e18..c15fe38 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/LongArrayList.java
@@ -39,7 +39,7 @@
 	public int first() {
 		return first;
 	}
-	
+
 	public void addFirst(long i) {
 	    long[] newData = new long[data.length + 1];
         System.arraycopy(data, 0, newData, 0, first);
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java
index 7a4d363..0944f13 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/ophelpers/SlotOffTupleOff.java
@@ -34,8 +34,8 @@
 	public int compareTo(SlotOffTupleOff o) {
 		return tupleOff - o.tupleOff;
 	}
-	
-	@Override 
+
+	@Override
 	public String toString() {
 		return tupleIndex + " " + slotOff + " " + tupleOff;
 	}
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java
index 28c2136..18de540 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/ConcatenatingTupleReference.java
@@ -32,18 +32,18 @@
     private final int[] fieldCounts;
     private int numTuples;
     private int totalFieldCount;
-    
+
     public ConcatenatingTupleReference(int maxTuples) {
         tuples = new ITupleReference[maxTuples];
         fieldCounts = new int[maxTuples];
-        reset();        
+        reset();
     }
-    
+
     public void reset() {
         numTuples = 0;
         totalFieldCount = 0;
     }
-    
+
     public void addTuple(ITupleReference tuple) {
         tuples[numTuples] = tuple;
         totalFieldCount += tuple.getFieldCount();
@@ -54,22 +54,22 @@
         }
         ++numTuples;
     }
-    
+
     public void removeLastTuple() {
         if (numTuples > 0) {
             ITupleReference lastTuple = tuples[--numTuples];
             totalFieldCount -= lastTuple.getFieldCount();
         }
     }
-    
+
     public int getNumTuples() {
         return numTuples;
     }
-    
+
     public boolean hasMaxTuples() {
         return numTuples == tuples.length;
     }
-    
+
     @Override
     public int getFieldCount() {
         return totalFieldCount;
@@ -95,7 +95,7 @@
         int fieldIndex = getFieldIndex(tupleIndex, fIdx);
         return tuples[tupleIndex].getFieldLength(fieldIndex);
     }
-    
+
     private int getTupleIndex(int fIdx) {
         int tupleIndex = Arrays.binarySearch(fieldCounts, 0, numTuples - 1, fIdx);
         if (tupleIndex < 0) {
@@ -105,11 +105,11 @@
         }
         return tupleIndex;
     }
-    
+
     private int getFieldIndex(int tupleIndex, int fIdx) {
         int fieldIndex = -1;
         if (tupleIndex > 0) {
-            fieldIndex = fIdx - fieldCounts[tupleIndex - 1]; 
+            fieldIndex = fIdx - fieldCounts[tupleIndex - 1];
         } else {
             fieldIndex = fIdx;
         }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java
index 10e6663..e3a49d6 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/tuples/PermutingTupleReference.java
@@ -25,11 +25,11 @@
 
     private final int[] fieldPermutation;
     private ITupleReference sourceTuple;
-    
+
     public PermutingTupleReference(int[] fieldPermutation) {
         this.fieldPermutation = fieldPermutation;
     }
-    
+
     public void reset(ITupleReference sourceTuple) {
         this.sourceTuple = sourceTuple;
     }
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java
index 7096f74..7213a5b 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/HashMultiSet.java
@@ -32,9 +32,9 @@
  */
 public class HashMultiSet<E> extends AbstractCollection<E> {
 
-    private final Map<E, List<E>> map = new HashMap<E, List<E>>(); 
+    private final Map<E, List<E>> map = new HashMap<E, List<E>>();
     private int size = 0;
-    
+
     @Override
     public boolean add(E e) {
         List<E> list = map.get(e);
@@ -46,17 +46,17 @@
         size++;
         return true;
     }
-    
+
     @Override
     public boolean contains(Object o) {
         return map.containsKey(o);
     }
-    
+
     @Override
     public boolean remove(Object o) {
         List<E> list = map.get(o);
         if (list == null) {
-            return false;            
+            return false;
         }
         list.remove(list.size() - 1);
         if (list.isEmpty()) {
@@ -65,7 +65,7 @@
         size--;
         return true;
     }
-    
+
     @Override
     public Iterator<E> iterator() {
         return new HashMultiSetIterator();
@@ -75,22 +75,22 @@
     public int size() {
         return size;
     }
-    
+
     @Override
     public void clear() {
         map.clear();
         size = 0;
     }
-    
+
     private class HashMultiSetIterator implements Iterator<E> {
 
         private Iterator<Map.Entry<E, List<E>>> mapIter;
         private Iterator<E> listIter;
-        
+
         public HashMultiSetIterator() {
             mapIter = map.entrySet().iterator();
         }
-        
+
         @Override
         public boolean hasNext() {
             if (mapIter.hasNext() || (listIter != null && listIter.hasNext())) {
diff --git a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java
index 6665f5d..7784d42 100644
--- a/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java
+++ b/hyracks/hyracks-storage-am-common/src/main/java/org/apache/hyracks/storage/am/common/util/TreeIndexUtils.java
@@ -25,9 +25,9 @@
 import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame;
 import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference;
 
-@SuppressWarnings("rawtypes") 
+@SuppressWarnings("rawtypes")
 public class TreeIndexUtils {
-	public static String printFrameTuples(ITreeIndexFrame frame, ISerializerDeserializer[] fieldSerdes) throws HyracksDataException {		
+	public static String printFrameTuples(ITreeIndexFrame frame, ISerializerDeserializer[] fieldSerdes) throws HyracksDataException {
 		StringBuilder strBuilder = new StringBuilder();
 		ITreeIndexTupleReference tuple = frame.createTupleReference();
 		for (int i = 0; i < frame.getTupleCount(); i++) {
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java
index 5183e1d..959e356 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/ExternalBTree.java
@@ -69,7 +69,7 @@
  * This is an lsm b-tree that does not have memory component and is modified
  * only by bulk loading and addition of disk components as of this point, it is
  * intended for use with external dataset indexes only.
- * 
+ *
  * @author alamouda
  */
 public class ExternalBTree extends LSMBTree implements ITwoPCIndex {
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
index 8ab4d25..6e04dd6 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/impls/LSMBTreeWithBuddySearchCursor.java
@@ -29,13 +29,13 @@
 public class LSMBTreeWithBuddySearchCursor extends LSMBTreeWithBuddyAbstractCursor{
 	private int currentCursor;
     private PermutingTupleReference buddyBTreeTuple;
-    
+
     public LSMBTreeWithBuddySearchCursor(ILSMIndexOperationContext opCtx, int[] buddyBTreeFields) {
         super(opCtx);
         currentCursor = 0;
         this.buddyBTreeTuple = new PermutingTupleReference(buddyBTreeFields);
     }
-    
+
     @Override
     public void close() throws HyracksDataException {
         super.close();
@@ -61,7 +61,7 @@
             lsmHarness.endSearch(opCtx);
         }
     }
-    
+
     private void searchNextCursor() throws HyracksDataException {
         if (currentCursor < numberOfTrees) {
             try {
@@ -72,7 +72,7 @@
             }
         }
     }
-    
+
     @Override
     public boolean hasNext() throws HyracksDataException, IndexException {
         if (foundNext) {
@@ -110,7 +110,7 @@
         }
         return false;
     }
-    
+
     @Override
     public void next() throws HyracksDataException {
         foundNext = false;
@@ -121,4 +121,4 @@
         super.open(initialState, searchPred);
         searchNextCursor();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java
index d615c9d..b9f281b 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriter.java
@@ -27,7 +27,7 @@
 		// Third parameter is never used locally, just give false.
 	    super(typeTraits, numKeyFields, false);
 	}
-	
+
 	@Override
     public int writeTuple(ITupleReference tuple, byte[] targetBuf, int targetOff) {
 		int tupleSize = bytesRequired(tuple);
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java
index 842ee62..eb03e7a 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeCopyTupleWriterFactory.java
@@ -27,7 +27,7 @@
 	private static final long serialVersionUID = 1L;
 	private final ITypeTraits[] typeTraits;
 	private final int numKeyFields;
-	
+
 	public LSMBTreeCopyTupleWriterFactory(ITypeTraits[] typeTraits, int numKeyFields) {
 		super(typeTraits);
 		this.typeTraits = typeTraits;
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java
index ebe38a7..6eb104b 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleReference.java
@@ -33,7 +33,7 @@
     // antimatter tuple.
     private boolean resetFieldCount = false;
     private final int numKeyFields;
-    
+
     public LSMBTreeTupleReference(ITypeTraits[] typeTraits, int numKeyFields) {
 		super(typeTraits);
 		this.numKeyFields = numKeyFields;
@@ -51,7 +51,7 @@
         // Don't change the fieldCount in reset calls.
         resetFieldCount = false;
     }
-    
+
     @Override
     public void resetByTupleOffset(ByteBuffer buf, int tupleStartOff) {
         this.buf = buf;
@@ -69,12 +69,12 @@
         }
         super.resetByTupleOffset(buf, tupleStartOff);
     }
-    
+
     @Override
     public void resetByTupleIndex(ITreeIndexFrame frame, int tupleIndex) {
         resetByTupleOffset(frame.getBuffer(), frame.getTupleOffset(tupleIndex));
     }
-    
+
 	@Override
 	protected int getNullFlagsBytes() {
 		// +1.0 is for matter/antimatter bit.
@@ -90,7 +90,7 @@
 		}
 		return false;
 	}
-	
+
     public int getTupleStart() {
     	return tupleStartOff;
     }
diff --git a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java
index fe93b69..f3b372f 100644
--- a/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-btree/src/main/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTupleWriterFactory.java
@@ -28,7 +28,7 @@
 	private static final long serialVersionUID = 1L;
 	private final int numKeyFields;
 	private final boolean isDelete;
-	
+
 	public LSMBTreeTupleWriterFactory(ITypeTraits[] typeTraits, int numKeyFields, boolean isDelete) {
 		super(typeTraits);
 		this.numKeyFields = numKeyFields;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java
index 018bc63..b847876 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponent.java
@@ -44,6 +44,6 @@
     public LSMComponentType getType();
 
     public ComponentState getState();
-    
+
     public ILSMComponentFilter getLSMComponentFilter();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java
index 1490d41..4c159b7 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMComponentFilterFrame.java
@@ -38,7 +38,7 @@
     public boolean isMaxTupleSet();
 
     public ITupleReference getMinTuple();
-    
+
     public ITupleReference getMaxTuple();
 
 }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
index d76e310..6315124 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIOOperationCallback.java
@@ -33,7 +33,7 @@
     /**
      * This method is called on an IO operation sometime after the operation was completed.
      * (i.e. IO operations could be flush or merge operations.)
-     * 
+     *
      * @param oldComponents
      * @param newComponent
      * @throws HyracksDataException
@@ -45,7 +45,7 @@
      * This method is called on an IO operation when the operation needs any cleanup works
      * regardless that the IO operation was executed or not. Once the IO operation is executed,
      * this method should be called after ILSMIOOperationCallback.afterOperation() was called.
-     * 
+     *
      * @param newComponent
      * @throws HyracksDataException
      */
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java
index f5fbeb5..439a020 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessor.java
@@ -42,7 +42,7 @@
 
     /**
      * Deletes the tuple from the memory component only.
-     * 
+     *
      * @throws HyracksDataException
      * @throws IndexException
      */
@@ -53,7 +53,7 @@
      * If the insert would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (insert was successful).
-     * 
+     *
      * @param tuple
      *            Tuple to be inserted.
      * @throws HyracksDataException
@@ -69,7 +69,7 @@
      * If the delete would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (delete was successful).
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
@@ -84,7 +84,7 @@
      * If the update would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (update was successful).
-     * 
+     *
      * @param tuple
      *            Tuple whose match in the index is to be update with the given
      *            tuples contents.
@@ -102,7 +102,7 @@
      * If the operation would have to wait for a flush to complete, then this method returns false to
      * allow the caller to avoid potential deadlock situations.
      * Otherwise, returns true (insert/update was successful).
-     * 
+     *
      * @param tuple
      *            Tuple to be deleted.
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java
index 9b15820..4df1180 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexAccessorInternal.java
@@ -26,7 +26,7 @@
 
     /**
      * Force a flush of the in-memory component.
-     * 
+     *
      * @throws HyracksDataException
      * @throws TreeIndexException
      */
@@ -34,7 +34,7 @@
 
     /**
      * Merge all on-disk components.
-     * 
+     *
      * @throws HyracksDataException
      * @throws TreeIndexException
      */
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
index 298e53f..e97913f 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexFileManager.java
@@ -47,7 +47,7 @@
     public String getBaseDir();
 
     // Deletes invalid files, and returns list of valid files from baseDir.
-    // The returned valid files are correctly sorted (based on the recency of data). 
+    // The returned valid files are correctly sorted (based on the recency of data).
     public List<LSMComponentFileReferences> cleanupAndGetValidFiles() throws HyracksDataException, IndexException;
 
     public Comparator<String> getFileNameComparator();
@@ -60,7 +60,7 @@
 
     /**
      * Rename files of a transaction removing the transaction prefix and return the component file reference in order to be committed
-     * 
+     *
      * @return the renamed component file references
      * @throws HyracksDataException
      */
@@ -68,7 +68,7 @@
 
     /**
      * Recover transaction files without returning them
-     * 
+     *
      * @throws HyracksDataException
      */
     public void recoverTransaction() throws HyracksDataException;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java
index 40d32a0..e69c714 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMIndexInternal.java
@@ -63,7 +63,7 @@
 
     /**
      * Populates the context's component holder with a snapshot of the components involved in the operation.
-     * 
+     *
      * @param ctx
      *            - the operation's context
      * @throws HyracksDataException
@@ -76,7 +76,7 @@
 
     /**
      * Persist the LSM component
-     * 
+     *
      * @param lsmComponent
      *            , the component to be persistent
      * @throws HyracksDataException
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java
index fcb4bb1..d2d86e6 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMMergePolicyFactory.java
@@ -27,7 +27,7 @@
 
 public interface ILSMMergePolicyFactory extends Serializable {
     // Having two methods to create the merge policy with two different signatures is hacky, but we do it now
-    // because we want to have an access to the IIndexLifecycleManager inside some of the merge policies. However, 
+    // because we want to have an access to the IIndexLifecycleManager inside some of the merge policies. However,
     // in order to get the IIndexLifecycleManager instance, we need to cast to IAsterixAppRuntimeContext which exist
     // in asterix and cannot be seen in hyracks. Thus we pass IHyracksTaskContext and let the merge policy do the casting.
     public ILSMMergePolicy createMergePolicy(Map<String, String> configuration, IHyracksTaskContext ctx);
@@ -37,4 +37,4 @@
     public String getName();
 
     public Set<String> getPropertiesNames();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java
index 503c712..e523f52 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ILSMOperationTracker.java
@@ -27,7 +27,7 @@
  * This interface exposes methods for tracking and setting the status of operations for the purpose
  * of coordinating flushes/merges in {@link ILSMIndex}.
  * Note that 'operation' below refers to {@link IIndexAccessor} methods.
- * 
+ *
  * @author zheilbron
  */
 public interface ILSMOperationTracker {
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java
index 4d6c403..95e95e4 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/api/ITwoPCIndex.java
@@ -34,42 +34,42 @@
      */
     public IIndexBulkLoader createTransactionBulkLoader(float fillLevel, boolean verifyInput, long numElementsHint,
             boolean checkIfEmptyIndex) throws TreeIndexException;
-    
+
     /**
      * This function is used to commit the previous transaction if it was resulted in creating any components
      */
     public void commitTransaction() throws TreeIndexException, HyracksDataException, IndexException;
-    
+
     /**
      * This function is used to abort the last transaction
      */
     public void abortTransaction() throws TreeIndexException;
-    
+
     /**
      * This function is used to recover a transaction if the system crashed after the decision to commit
      */
     public void recoverTransaction() throws TreeIndexException;
-    
+
     /**
      * This function is used to add the committed disk component to the appropriate list and reflect the changes
      */
     public void commitTransactionDiskComponent(ILSMComponent newComponent) throws IndexException, HyracksDataException;
-    
+
     /**
      * This function is used to create a version specific accessor to search a specific version
      */
     public ILSMIndexAccessorInternal createAccessor(ISearchOperationCallback searchCallback, int targetIndexVersion) throws HyracksDataException;
-    
+
     /**
      * This function is used to get the first components list
      */
     public List<ILSMComponent> getFirstComponentList();
-    
+
     /**
      * This function is used to get teh second components list
      */
     public List<ILSMComponent> getSecondComponentList();
-    
+
     /**
      * This function is used to get the current version id of the index
      */
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java
index 668618f..2899849 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/AsynchronousScheduler.java
@@ -44,7 +44,7 @@
     private final Map<String, PriorityQueue<ILSMIOOperation>> waitingFlushOperations = new HashMap<String, PriorityQueue<ILSMIOOperation>>();
 
     public void init(ThreadFactory threadFactory) {
-        // Creating an executor with the same configuration of Executors.newCachedThreadPool. 
+        // Creating an executor with the same configuration of Executors.newCachedThreadPool.
         executor = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS,
                 new SynchronousQueue<Runnable>(), threadFactory) {
 
@@ -101,4 +101,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java
index 95fddfc..8e98087 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFileReferences.java
@@ -28,7 +28,7 @@
     // This FileReference for the delete index (if any). For example, this will be the the FileReference of the buddy BTree in one component of the LSM-RTree.
     private final FileReference deleteIndexFileReference;
 
-    // This FileReference for the bloom filter (if any). 
+    // This FileReference for the bloom filter (if any).
     private final FileReference bloomFilterFileReference;
 
     public LSMComponentFileReferences(FileReference insertIndexFileReference, FileReference deleteIndexFileReference,
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
index f439d7e..3cca96e 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMTreeIndexAccessor.java
@@ -131,7 +131,7 @@
         ctx.getComponentsToBeMerged().addAll(components);
         lsmHarness.scheduleMerge(ctx, callback);
     }
-    
+
     @Override
     public void scheduleReplication(List<ILSMComponent> lsmComponents, boolean bulkload, LSMOperationType opType) throws HyracksDataException {
         ctx.setOperation(IndexOperation.REPLICATE);
@@ -163,4 +163,4 @@
         ctx.setOperation(IndexOperation.DELETE);
         lsmHarness.forceModify(ctx, tuple);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
index 1ef64ee..122db2c 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/MultitenantVirtualBufferCache.java
@@ -173,19 +173,19 @@
 
     @Override
     public void copyPage(ICachedPage src, ICachedPage dst) {
-        
+
     }
 
     @Override
     public void setPageDiskId(ICachedPage page, long dpid) {
-        
+
     }
 
     @Override
     public void returnPage(ICachedPage page, boolean reinsert) {
-        
+
     }
-    
+
     @Override
     public int getFileReferenceCount(int fileId){
         return 0;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java
index 406d096..fd7c1f2 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/NoOpOperationTrackerProvider.java
@@ -59,7 +59,7 @@
             public void afterOperation(ILSMIndex index, LSMOperationType opType,
                     ISearchOperationCallback searchCallback, IModificationOperationCallback modificationCallback)
                     throws HyracksDataException {
-                // Do nothing.                        
+                // Do nothing.
             }
         };
     }
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java
index 5570ef1..5b8da53 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/PrefixMergePolicy.java
@@ -48,7 +48,7 @@
         List<ILSMComponent> immutableComponents = new ArrayList<ILSMComponent>(index.getImmutableComponents());
         // Reverse the components order so that we look at components from oldest to newest.
         Collections.reverse(immutableComponents);
-       
+
         for (ILSMComponent c : immutableComponents) {
             if (c.getState() != ComponentState.READABLE_UNWRITABLE) {
                 return;
diff --git a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
index 920a1d5..272f970 100644
--- a/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
+++ b/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
@@ -416,7 +416,7 @@
 
     @Override
     public void setPageDiskId(ICachedPage page, long dpid) {
-        
+
     }
 
     @Override
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java
index a5ffe11..f39bab6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndex.java
@@ -29,15 +29,15 @@
 
 public interface IInvertedIndex extends IIndex {
     public IInvertedListCursor createInvertedListCursor();
-    
+
     public void openInvertedListCursor(IInvertedListCursor listCursor, ITupleReference searchKey, IIndexOperationContext ictx)
             throws HyracksDataException, IndexException;
-    
+
     public ITypeTraits[] getInvListTypeTraits();
-    
-    public IBinaryComparatorFactory[] getInvListCmpFactories();    
-    
+
+    public IBinaryComparatorFactory[] getInvListCmpFactories();
+
     public ITypeTraits[] getTokenTypeTraits();
-    
+
     public IBinaryComparatorFactory[] getTokenCmpFactories();
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java
index 15af73a..3a902dd 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexOperatorDescriptor.java
@@ -25,14 +25,14 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.tokenizers.IBinaryTokenizerFactory;
 
 public interface IInvertedIndexOperatorDescriptor extends IIndexOperatorDescriptor {
-    
+
     public ITypeTraits[] getInvListsTypeTraits();
-    
+
     public IBinaryComparatorFactory[] getInvListsComparatorFactories();
-    
+
     public ITypeTraits[] getTokenTypeTraits();
-    
+
     public IBinaryComparatorFactory[] getTokenComparatorFactories();
 
-    public IBinaryTokenizerFactory getTokenizerFactory();        
+    public IBinaryTokenizerFactory getTokenizerFactory();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java
index 2202ea8..c426927 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedIndexSearcher.java
@@ -41,6 +41,6 @@
     public List<ByteBuffer> getResultBuffers();
 
     public int getNumValidResultBuffers();
-    
+
     public void reset();
 }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
index b44b193..9ec22d6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/api/IInvertedListCursor.java
@@ -48,7 +48,7 @@
     public int getStartOff();
 
     public boolean containsKey(ITupleReference searchTuple, MultiComparator invListCmp) throws HyracksDataException, IndexException;
-    
+
     // for debugging
     @SuppressWarnings("rawtypes")
     public String printInvList(ISerializerDeserializer[] serdes) throws HyracksDataException, IndexException;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java
index ae7c9e8..14187f6 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/exceptions/InvertedIndexException.java
@@ -24,10 +24,10 @@
 public class InvertedIndexException extends IndexException {
     private static final long serialVersionUID = 1L;
 
-    public InvertedIndexException(Exception e) {        
+    public InvertedIndexException(Exception e) {
         super(e);
     }
-    
+
     public InvertedIndexException(String msg) {
         super(msg);
     }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
index 009bd36..204e874 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/impls/LSMInvertedIndex.java
@@ -1001,4 +1001,4 @@
             memoryComponentsAllocated = false;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java
index 4fef746..cf6dff3 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexOpContext.java
@@ -35,7 +35,7 @@
     public IndexOperation op;
     public final BTree btree;
 
-    // Needed for search operations,    
+    // Needed for search operations,
     public RangePredicate btreePred;
     public BTreeAccessor btreeAccessor;
     public MultiComparator btreeCmp;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
index 5be9d90..b5989b9 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndex.java
@@ -75,7 +75,7 @@
 public class OnDiskInvertedIndex implements IInvertedIndex {
     protected final IHyracksCommonContext ctx = new DefaultHyracksCommonContext();
 
-    // Schema of BTree tuples, set in constructor.    
+    // Schema of BTree tuples, set in constructor.
     protected final int invListStartPageIdField;
     protected final int invListEndPageIdField;
     protected final int invListStartOffField;
@@ -350,7 +350,7 @@
         }
 
         private void createAndInsertBTreeTuple() throws IndexException, HyracksDataException {
-            // Build tuple.        
+            // Build tuple.
             btreeTupleBuilder.reset();
             DataOutput output = btreeTupleBuilder.getDataOutput();
             // Add key fields.
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
index bec70a1..bd6ce9b 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java
@@ -45,7 +45,7 @@
     private final IIndexOperationContext opCtx;
     private final IInvertedListCursor invListCursor;
     private boolean unpinNeeded;
-    
+
     private final IIndexCursor btreeCursor;
     private RangePredicate btreePred;
 
@@ -76,7 +76,7 @@
             btreeAccessor.search(btreeCursor, btreePred);
         } catch (IndexException e) {
             throw new HyracksDataException(e);
-        }        
+        }
         invListCursor.pinPages();
         unpinNeeded = true;
     }
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java
index 3449a62..12dd319 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java
@@ -41,7 +41,7 @@
     private final IFrameTupleAccessor fta;
     private final FixedSizeTupleReference frameTuple;
     private final PermutingTupleReference resultTuple;
-    
+
     public OnDiskInvertedIndexSearchCursor(IInvertedIndexSearcher invIndexSearcher, int numInvListFields) {
         this.invIndexSearcher = invIndexSearcher;
         this.fta = invIndexSearcher.createResultFrameTupleAccessor();
@@ -64,7 +64,7 @@
             fta.reset(resultBuffers.get(0));
         }
     }
-    
+
     @Override
     public boolean hasNext() {
         if (currentBufferIndex < numResultBuffers && tupleIndex < fta.getTupleCount()) {
@@ -85,7 +85,7 @@
                 fta.reset(resultBuffers.get(currentBufferIndex));
                 tupleIndex = 0;
             }
-        }        
+        }
     }
 
     @Override
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java
index b03e0db..b43cc39 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/PartitionedOnDiskInvertedIndexFactory.java
@@ -32,7 +32,7 @@
 import org.apache.hyracks.storage.common.file.IFileMapProvider;
 
 public class PartitionedOnDiskInvertedIndexFactory extends OnDiskInvertedIndexFactory {
-    
+
     public PartitionedOnDiskInvertedIndexFactory(IBufferCache bufferCache, IFileMapProvider fileMapProvider,
             IInvertedListBuilderFactory invListBuilderFactory, ITypeTraits[] invListTypeTraits,
             IBinaryComparatorFactory[] invListCmpFactories, ITypeTraits[] tokenTypeTraits,
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java
index 1342f09..6116322 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifier.java
@@ -25,12 +25,12 @@
     public ConjunctiveEditDistanceSearchModifier(int gramLength, int edThresh) {
         super(gramLength, edThresh);
     }
-   
+
     @Override
     public String toString() {
         return "Conjunctive Edit Distance Search Modifier, GramLen: " + gramLength + ", Threshold: " + edThresh;
     }
-    
+
     @Override
     public short getNumTokensLowerBound(short numQueryTokens) {
         return -1;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java
index 4131d16..6fdf6bb 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveEditDistanceSearchModifierFactory.java
@@ -27,12 +27,12 @@
 
     private final int gramLength;
     private final int edThresh;
-    
+
     public ConjunctiveEditDistanceSearchModifierFactory(int gramLength, int edThresh) {
         this.gramLength = gramLength;
         this.edThresh = edThresh;
     }
-    
+
     @Override
     public IInvertedIndexSearchModifier createSearchModifier() {
         return new ConjunctiveEditDistanceSearchModifier(gramLength, edThresh);
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java
index 5f7b36b..4f037f9 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveListEditDistanceSearchModifier.java
@@ -34,7 +34,7 @@
     public short getNumTokensUpperBound(short numQueryTokens) {
         return -1;
     }
-    
+
     @Override
     public String toString() {
         return "Conjunctive List Edit Distance Search Modifier, Threshold: " + edThresh;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java
index 86a0425..674605b 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ConjunctiveSearchModifier.java
@@ -32,7 +32,7 @@
     public int getNumPrefixLists(int occurrenceThreshold, int numInvLists) {
         return 1;
     }
-    
+
     @Override
     public String toString() {
         return "Conjunctive Search Modifier";
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java
index 4035b2a..cd1f3ea 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/EditDistanceSearchModifierFactory.java
@@ -28,12 +28,12 @@
 
     private final int gramLength;
     private final int edThresh;
-    
+
     public EditDistanceSearchModifierFactory(int gramLength, int edThresh) {
         this.gramLength = gramLength;
         this.edThresh = edThresh;
     }
-    
+
     @Override
     public IInvertedIndexSearchModifier createSearchModifier() {
         return new EditDistanceSearchModifier(gramLength, edThresh);
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java
index 7c631a4..5bcf36f 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/ListEditDistanceSearchModifier.java
@@ -56,7 +56,7 @@
     public short getNumTokensUpperBound(short numQueryTokens) {
         return (short) (numQueryTokens + edThresh);
     }
-    
+
     @Override
     public String toString() {
         return "List Edit Distance Search Modifier, Threshold: " + edThresh;
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
index 8da113d..7c7e781 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/PartitionedTOccurrenceSearcher.java
@@ -127,8 +127,8 @@
         short start = partitions.getMinValidPartitionIndex();
         short end = partitions.getMaxValidPartitionIndex();
 
-        // Typically, we only enter this case for disk-based inverted indexes. 
-        // TODO: This behavior could potentially lead to a deadlock if we cannot pin 
+        // Typically, we only enter this case for disk-based inverted indexes.
+        // TODO: This behavior could potentially lead to a deadlock if we cannot pin
         // all inverted lists in memory, and are forced to wait for a page to get evicted
         // (other concurrent searchers may be in the same situation).
         // We should detect such cases, then unpin all pages, and then keep retrying to pin until we succeed.
diff --git a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java
index 21013f7..37eb600 100644
--- a/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java
+++ b/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/search/SearchResult.java
@@ -66,7 +66,7 @@
 
     /**
      * Initialize from other search-result object to share member instances except for result buffers.
-     * 
+     *
      * @throws HyracksDataException
      */
     public SearchResult(SearchResult other) throws HyracksDataException {
@@ -149,7 +149,7 @@
         cursor.reset();
         return cursor;
     }
-    
+
     public class SearchResultCursor {
         private int bufferIndex;
         private int resultIndex;
@@ -169,7 +169,7 @@
         }
 
         public void next() {
-            resultTuple.reset(currentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(frameResultIndex));            
+            resultTuple.reset(currentBuffer.array(), resultFrameTupleAcc.getTupleStartOffset(frameResultIndex));
             if (frameResultIndex < resultFrameTupleAcc.getTupleCount()) {
                 frameResultIndex++;
             } else {
@@ -177,7 +177,7 @@
                 currentBuffer = buffers.get(bufferIndex);
                 resultFrameTupleAcc.reset(currentBuffer);
                 frameResultIndex = 0;
-            }            
+            }
             resultIndex++;
         }
 
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java
index cf8a3ae..492af2d 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/ExternalRTree.java
@@ -68,7 +68,7 @@
  * This is an lsm r-tree that does not have memory component and is modified
  * only by bulk loading and addition of disk components as of this point, it is
  * intended for use with external dataset indexes only.
- * 
+ *
  * @author alamouda
  */
 public class ExternalRTree extends LSMRTree implements ITwoPCIndex {
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java
index dbe32bf..5453361 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeCursorInitialState.java
@@ -117,8 +117,8 @@
     @Override
     public void setOriginialKeyComparator(MultiComparator originalCmp) {
     }
-    
+
     public void setOperationalComponents(List<ILSMComponent> operationalComponents) {
         this.operationalComponents = operationalComponents;
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java
index e7857f0..d9da016 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java
@@ -30,7 +30,7 @@
 
 public class LSMRTreeSortedCursor extends LSMRTreeAbstractCursor {
 
-    // TODO: This class can be removed and instead use a search cursor that uses a logic similar 
+    // TODO: This class can be removed and instead use a search cursor that uses a logic similar
     // to the one in LSMRTreeWithAntiMatterTuplesSearchCursor
     private ILinearizeComparator linearizeCmp;
     private boolean[] depletedRtreeCursors;
@@ -163,4 +163,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java
index fea5455..bdc6708 100644
--- a/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/tuples/LSMTypeAwareTupleWriterFactory.java
@@ -29,7 +29,7 @@
 	private static final long serialVersionUID = 1L;
 	private ITypeTraits[] typeTraits;
 	private final boolean isDelete;
-	
+
 	public LSMTypeAwareTupleWriterFactory(ITypeTraits[] typeTraits, boolean isDelete) {
 		super(typeTraits);
 		this.typeTraits = typeTraits;
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
index d01bad2..8cf94d3 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTree.java
@@ -800,7 +800,7 @@
             this.rtree = rtree;
             this.ctx = rtree.createOpContext(modificationCallback);
         }
-        
+
         public void reset(RTree rtree, IModificationOperationCallback modificationCallback) {
             this.rtree = rtree;
             ctx.setModificationCallback(modificationCallback);
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java
index 6370458..5ee8700 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java
@@ -258,9 +258,9 @@
     public boolean exclusiveLatchNodes() {
         return false;
     }
-    
+
     @Override
     public void markCurrentTupleAsUpdated() throws HyracksDataException {
         throw new HyracksDataException("Updating tuples is not supported with this cursor.");
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java
index e4df88a..cd380e1 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparator.java
@@ -32,13 +32,13 @@
  * number generics in Java) in the two-dimensional space. For more dimensions, the
  * state machine has to be automatically generated. The idea of the fractal generation
  * of the curve is described e.g. in http://dl.acm.org/ft_gateway.cfm?id=383528&type=pdf
- * 
- * Unlike the described approach, this comparator does not compute the hilbert value at 
+ *
+ * Unlike the described approach, this comparator does not compute the hilbert value at
  * any point. Instead, it only evaluates how the two inputs compare to each other. This
  * is done by starting at the lowest hilbert resolution and zooming in on the fractal until
  * the two points are in different quadrants.
- * 
- * As a performance optimization, the state of the state machine is saved in a stack and 
+ *
+ * As a performance optimization, the state of the state machine is saved in a stack and
  * maintained over comparisons. The idea behind this is that comparisons are usually in a
  * similar area (e.g. geo coordinates). Zooming in from [-MAX_VALUE, MAX_VALUE] would take
  * ~300 steps every time. Instead, the comparator start from the previous state and zooms out
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java
index f39bff5..8c73e12 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/HilbertDoubleComparatorFactory.java
@@ -23,13 +23,13 @@
 
 public class HilbertDoubleComparatorFactory implements ILinearizeComparatorFactory {
     private static final long serialVersionUID = 1L;
-    
+
     private int dim;
 
     public static HilbertDoubleComparatorFactory get(int dim) {
         return new HilbertDoubleComparatorFactory(dim);
     }
-    
+
     public HilbertDoubleComparatorFactory(int dim) {
     	this.dim = dim;
     }
@@ -38,4 +38,4 @@
     public ILinearizeComparator createBinaryComparator() {
         return new HilbertDoubleComparator(dim);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java
index 0c322d5..a2650d3 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveDoubleComparatorFactory.java
@@ -23,13 +23,13 @@
 
 public class ZCurveDoubleComparatorFactory implements ILinearizeComparatorFactory {
     private static final long serialVersionUID = 1L;
-    
+
     private int dim;
 
     public static ZCurveDoubleComparatorFactory get(int dim) {
         return new ZCurveDoubleComparatorFactory(dim);
     }
-    
+
     public ZCurveDoubleComparatorFactory(int dim) {
     	this.dim = dim;
     }
@@ -38,4 +38,4 @@
     public ILinearizeComparator createBinaryComparator() {
         return new ZCurveDoubleComparator(dim);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java
index e3d7b1e..4827a74 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/linearize/ZCurveIntComparatorFactory.java
@@ -23,13 +23,13 @@
 
 public class ZCurveIntComparatorFactory implements ILinearizeComparatorFactory {
     private static final long serialVersionUID = 1L;
-    
+
     private int dim;
 
     public static ZCurveIntComparatorFactory get(int dim) {
         return new ZCurveIntComparatorFactory(dim);
     }
-    
+
     public ZCurveIntComparatorFactory(int dim) {
     	this.dim = dim;
     }
@@ -38,4 +38,4 @@
     public ILinearizeComparator createBinaryComparator() {
         return new ZCurveIntComparator(dim);
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java
index 81eed9c..f14d89d 100644
--- a/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java
+++ b/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/tuples/RTreeTypeAwareTupleWriterFactory.java
@@ -32,7 +32,7 @@
         this.typeTraits = typeTraits;
     }
 
-    @Override    
+    @Override
     public ITreeIndexTupleWriter createTupleWriter() {
         return new RTreeTypeAwareTupleWriter(typeTraits);
     }
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
index 9f7960f..0c7f679 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/DebugBufferCache.java
@@ -214,26 +214,26 @@
     @Override
     public void copyPage(ICachedPage src, ICachedPage dst) {
         // TODO Auto-generated method stub
-        
+
     }
 
     @Override
     public void setPageDiskId(ICachedPage page, long dpid) {
         // TODO Auto-generated method stub
-        
+
     }
 
     @Override
     public void returnPage(ICachedPage page, boolean reinsert) {
         // TODO Auto-generated method stub
-        
+
     }
 
     @Override
     public int getFileReferenceCount(int fileId) {
         return bufferCache.getFileReferenceCount(fileId);
     }
-    
+
     @Override
     public boolean isReplicationEnabled() {
         return false;
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
index b5d0ac7..78be314 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/FIFOLocalWriter.java
@@ -41,7 +41,7 @@
             }
         }
     }
-    
+
     @Override
     public void sync(int fileId, BufferCache bufferCache) throws HyracksDataException {
         bufferCache.force(fileId,true);
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
index 20e268d..ffde5c4 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IBufferCache.java
@@ -29,7 +29,7 @@
     public static final int INVALID_PAGEID = -1;
 
     public void createFile(FileReference fileRef) throws HyracksDataException;
-    
+
     public int createMemFile() throws HyracksDataException;
 
     public void openFile(int fileId) throws HyracksDataException;
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java
index a347cf8..e8eb6e3 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICacheMemoryAllocator.java
@@ -32,7 +32,7 @@
 
     /**
      * Ensures the availability of the memory budget with the ResourceMemoryManager (if exists) before allocation. Otherwise, it acts as a call to {@link #allocate(int, int)}
-     * 
+     *
      * @param pageSize
      * @param numPages
      * @return
@@ -40,4 +40,4 @@
      */
     public ByteBuffer[] ensureAvailabilityThenAllocate(int pageSize, int numPages) throws HyracksDataException;
 
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java
index 9c18018..897ae75 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/IPageCleanerPolicy.java
@@ -22,13 +22,13 @@
 
 /**
  * Allows customization of the page cleaning strategy by the cleaner thread.
- * 
+ *
  * @author vinayakb
  */
 public interface IPageCleanerPolicy {
     /**
      * Callback from the cleaner just before the beginning of a cleaning cycle.
-     * 
+     *
      * @param monitor
      *            - The monitor on which a mutex is held while in this call
      * @throws HyracksDataException
@@ -37,7 +37,7 @@
 
     /**
      * Callback from the cleaner just after the finish of a cleaning cycle.
-     * 
+     *
      * @param monitor
      *            - The monitor on which a mutex is held while in this call.
      * @throws HyracksDataException
@@ -46,10 +46,10 @@
 
     /**
      * Callback to indicate that no victim was found.
-     * 
+     *
      * @param monitor
      *            - The monitor on which a mutex is held while in this call.
      * @throws HyracksDataException
      */
     public void notifyVictimNotFound(Object monitor) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java
index c7d5359..acb4ba2 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapManager.java
@@ -23,13 +23,13 @@
 
 /**
  * Maintains the mapping between file names and file ids.
- * 
+ *
  * @author vinayakb
  */
 public interface IFileMapManager extends IFileMapProvider {
     /**
      * Register a new file name.
-     * 
+     *
      * @param fileRef
      *            - file reference to register
      * @throws HyracksDataException
@@ -39,15 +39,15 @@
 
     /**
      * Unregister a file mapping
-     * 
+     *
      * @param fileId
      *            - The file id whose mapping is to be unregistered.
      * @throws HyracksDataException
      *             - If the fileid is not mapped currently in this manager.
      */
     public void unregisterFile(int fileId) throws HyracksDataException;
-    
+
     public int registerMemoryFile();
-    
+
     public void unregisterMemFile(int fileId) throws HyracksDataException;
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java
index 158d1b2..16ee6a6 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/IFileMapProvider.java
@@ -26,7 +26,7 @@
 public interface IFileMapProvider extends Serializable {
     /**
      * Indicates if a given fileId is mapped
-     * 
+     *
      * @param fileId
      * @return <code>true</code> if the given fileId is mapped, <code>false</code> otherwise.
      */
@@ -34,7 +34,7 @@
 
     /**
      * Indicates if a given file name is mapped.
-     * 
+     *
      * @param fileRef
      * @return <code>true</code> if the given file name is mapped, <code>false</code> otherwise.
      */
@@ -42,7 +42,7 @@
 
     /**
      * Lookup the file id for a file name
-     * 
+     *
      * @param fileRef
      *            - The file name whose id should be looked up.
      * @return The file id
@@ -53,7 +53,7 @@
 
     /**
      * Lookup the file name for a file id
-     * 
+     *
      * @param fileId
      *            - The file id whose name should be looked up.
      * @return The file reference
@@ -61,5 +61,5 @@
      *             - If the file id is not mapped currently in this manager.
      */
     public FileReference lookupFileName(int fileId) throws HyracksDataException;
-    
-}
\ No newline at end of file
+
+}
diff --git a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java
index 709fd77..4394f69 100644
--- a/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java
+++ b/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/TransientLocalResourceFactoryProvider.java
@@ -19,7 +19,7 @@
 package org.apache.hyracks.storage.common.file;
 
 public class TransientLocalResourceFactoryProvider implements ILocalResourceFactoryProvider {
-    
+
     private static final long serialVersionUID = 1L;
 
     @Override
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java
index 8fa6c6a..ffdae7d 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/CheckTuple.java
@@ -66,7 +66,7 @@
 		}
 		return compareTo((T) o) == 0;
 	}
-    
+
 	@Override
 	public int hashCode() {
 		int hash = 0;
@@ -75,27 +75,27 @@
 		}
 		return hash;
 	}
-	
+
 	public void setIsHighKey(boolean isHighKey) {
 	    this.isHighKey = isHighKey;
 	}
-	
+
 	public T getField(int idx) {
 		return (T) fields[idx];
 	}
-    
+
     public void setField(int idx, T e) {
         fields[idx] = e;
     }
-    
+
     public int size() {
         return fields.length;
     }
-    
+
     public int getNumKeys() {
         return numKeys;
     }
-    
+
     @Override
     public String toString() {
         StringBuilder strBuilder = new StringBuilder();
@@ -107,4 +107,4 @@
         }
         return strBuilder.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java
index f15d1f3..e1352b5 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/IIndexTestContext.java
@@ -46,7 +46,7 @@
 
     public ArrayTupleBuilder getTupleBuilder();
 
-    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);      
+    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);
 
     public void deleteCheckTuple(T checkTuple, Collection<T> checkTuples);
 
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java
index 7589b47..48f7419 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/ITreeIndexTestContext.java
@@ -46,7 +46,7 @@
 
     public ArrayTupleBuilder getTupleBuilder();
 
-    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);      
+    public void insertCheckTuple(T checkTuple, Collection<T> checkTuples);
 
     public void deleteCheckTuple(T checkTuple, Collection<T> checkTuples);
 
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java
index 6f29bd7..f804f89 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestOperationSelector.java
@@ -33,18 +33,18 @@
         RANGE_SEARCH,
         SCAN,
         DISKORDER_SCAN,
-        MERGE        
+        MERGE
     }
-    
+
     private final TestOperation[] ops;
-    private final int[] cumulIntRanges;    
-    
+    private final int[] cumulIntRanges;
+
     public TestOperationSelector(TestOperation[] ops, double[] opProbs) {
         sanityCheck(ops, opProbs);
         this.ops = ops;
         this.cumulIntRanges = ProbabilityHelper.getCumulIntRanges(opProbs);
     }
-    
+
     private void sanityCheck(TestOperation[] ops, double[] opProbs) {
         if (ops.length == 0) {
             throw new RuntimeException("Empty op array.");
@@ -63,7 +63,7 @@
             throw new RuntimeException("Op probabilities don't add up to 1.");
         }
     }
-    
+
     public TestOperation getOp(int randomInt) {
         int ix = ProbabilityHelper.choose(cumulIntRanges, randomInt);
         return ops[ix];
diff --git a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java
index f60eca2..84c4ec4 100644
--- a/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java
+++ b/hyracks/hyracks-test-support/src/main/java/org/apache/hyracks/storage/am/common/TestWorkloadConf.java
@@ -29,7 +29,7 @@
         this.ops = ops;
         this.opProbs = opProbs;
     }
-    
+
     public String toString() {
         StringBuilder strBuilder = new StringBuilder();
         for (TestOperation op : ops) {
@@ -39,4 +39,4 @@
         strBuilder.deleteCharAt(strBuilder.length() - 1);
         return strBuilder.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java
index 211e587..2b1f4dc 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeInsertTest.java
@@ -31,10 +31,10 @@
 import org.apache.hyracks.storage.am.btree.util.BTreeTestHarness;
 
 /**
- * Tests the BTree insert operation with strings and integer fields using 
- * various numbers of key and payload fields. Each tests first fills a BTree with 
- * randomly generated tuples. We compare the following operations against expected results: 
- *      1) Point searches for all tuples 
+ * Tests the BTree insert operation with strings and integer fields using
+ * various numbers of key and payload fields. Each tests first fills a BTree with
+ * randomly generated tuples. We compare the following operations against expected results:
+ *      1) Point searches for all tuples
  *      2) Ordered scan
  *      3) Disk-order scan
  *      4) Range search (and prefix search for composite keys)
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java
index a797d79..e19a618 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/BTreeUpsertTest.java
@@ -31,10 +31,10 @@
 import org.apache.hyracks.storage.am.btree.util.BTreeTestHarness;
 
 /**
- * Tests the BTree insert operation with strings and integer fields using 
- * various numbers of key and payload fields. Each tests first fills a BTree with 
- * randomly generated tuples. We compare the following operations against expected results: 
- *      1) Point searches for all tuples 
+ * Tests the BTree insert operation with strings and integer fields using
+ * various numbers of key and payload fields. Each tests first fills a BTree with
+ * randomly generated tuples. We compare the following operations against expected results:
+ *      1) Point searches for all tuples
  *      2) Ordered scan
  *      3) Disk-order scan
  *      4) Range search (and prefix search for composite keys)
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java
index 008255e..07f3ba7 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeMultiThreadTest.java
@@ -77,7 +77,7 @@
         workloadConfs.add(new TestWorkloadConf(insertSearchOnlyOps, ProbabilityHelper
                 .getUniformProbDist(insertSearchOnlyOps.length)));
 
-        // Inserts, updates, deletes, and upserts.        
+        // Inserts, updates, deletes, and upserts.
         TestOperation[] insertDeleteUpdateUpsertOps = new TestOperation[] { TestOperation.INSERT, TestOperation.DELETE,
                 TestOperation.UPDATE, TestOperation.UPSERT };
         workloadConfs.add(new TestWorkloadConf(insertDeleteUpdateUpsertOps, ProbabilityHelper
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java
index 924c0b8..77ad13c 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-btree-test/src/test/java/org/apache/hyracks/storage/am/btree/multithread/BTreeTestWorker.java
@@ -95,7 +95,7 @@
 
             case UPSERT:
                 accessor.upsert(tuple);
-                // Upsert should not throw. If it does, there's 
+                // Upsert should not throw. If it does, there's
                 // a bigger problem and the test should fail.
                 break;
 
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java
index 46d9b22..684ef57 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/BTreePageSizePerf.java
@@ -40,16 +40,16 @@
             Logger logger = LogManager.getLogManager().getLogger(loggerName);
             logger.setLevel(Level.OFF);
         }
-        
+
         int numTuples = 1000000;
         int batchSize = 10000;
         int numBatches = numTuples / batchSize;
-        
+
         ISerializerDeserializer[] fieldSerdes = new ISerializerDeserializer[] { IntegerSerializerDeserializer.INSTANCE };
         ITypeTraits[] typeTraits = SerdeUtils.serdesToTypeTraits(fieldSerdes, 30);
-        
+
         IBinaryComparatorFactory[] cmpFactories = SerdeUtils.serdesToComparatorFactories(fieldSerdes, fieldSerdes.length);
-        
+
         runExperiment(numBatches, batchSize, 1024, 100000, fieldSerdes, cmpFactories, typeTraits);
         runExperiment(numBatches, batchSize, 2048, 100000, fieldSerdes, cmpFactories, typeTraits);
         runExperiment(numBatches, batchSize, 4096, 25000, fieldSerdes, cmpFactories, typeTraits);
@@ -60,7 +60,7 @@
         runExperiment(numBatches, batchSize, 131072, 782, fieldSerdes, cmpFactories, typeTraits);
         runExperiment(numBatches, batchSize, 262144, 391, fieldSerdes, cmpFactories, typeTraits);
     }
-    
+
     private static void runExperiment(int numBatches, int batchSize, int pageSize, int numPages, ISerializerDeserializer[] fieldSerdes, IBinaryComparatorFactory[] cmpFactories, ITypeTraits[] typeTraits) throws Exception {
         System.out.println("PAGE SIZE: " + pageSize);
         System.out.println("NUM PAGES: " + numPages);
@@ -73,7 +73,7 @@
         int numThreads = 1;
         for (int i = 0; i < repeats; i++) {
             DataGenThread dataGen = new DataGenThread(numThreads, numBatches, batchSize, fieldSerdes, 30, 50, 10, false);
-            dataGen.start();            
+            dataGen.start();
             times[i] = runner.runExperiment(dataGen, numThreads);
             System.out.println("TIME " + i + ": " + times[i] + "ms");
         }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java
index 529326a..783844d 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/IExperimentRunner.java
@@ -23,12 +23,12 @@
 
 public interface IExperimentRunner {
     public static int DEFAULT_MAX_OUTSTANDING = 100000;
-    
+
     public void init() throws Exception;
-    
+
     public long runExperiment(DataGenThread dataGen, int numThreads) throws Exception;
-    
+
     public void reset() throws Exception;
-    
+
     public void deinit() throws Exception;
 }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java
index 7ba97a9..56c97bf 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/perf/PerfExperiment.java
@@ -83,7 +83,7 @@
             //String btreeName = "071211";
             //BTreeSearchRunner runner = new BTreeSearchRunner(btreeName, 10, numBatches, 8192, 25000, typeTraits, cmp);
             //LSMTreeRunner runner = new LSMTreeRunner(numBatches, 8192, 100, 8192, 250, typeTraits, cmp);
-            //LSMTreeSearchRunner runner = new LSMTreeSearchRunner(100000, numBatches, 8192, 24750, 8192, 250, typeTraits, cmp); 
+            //LSMTreeSearchRunner runner = new LSMTreeSearchRunner(100000, numBatches, 8192, 24750, 8192, 250, typeTraits, cmp);
             int inMemPageSize = 131072; // 128kb
             int onDiskPageSize = inMemPageSize;
             int inMemNumPages = 8192; // 1GB
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java
index d537bf9..91467de 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-btree-test/src/test/java/org/apache/hyracks/storage/am/lsm/btree/tuples/LSMBTreeTuplesTest.java
@@ -43,7 +43,7 @@
 public class LSMBTreeTuplesTest {
 
     private final Random rnd = new Random(50);
-    
+
     private ByteBuffer writeTuple(ITupleReference tuple, LSMBTreeTupleWriter tupleWriter) {
         // Write tuple into a buffer, then later try to read it.
         int bytesRequired = tupleWriter.bytesRequired(tuple);
@@ -52,36 +52,36 @@
         tupleWriter.writeTuple(tuple, bytes, 0);
         return targetBuf;
     }
-    
-    private void testLSMBTreeTuple(ISerializerDeserializer[] maxFieldSerdes) throws HyracksDataException {        
+
+    private void testLSMBTreeTuple(ISerializerDeserializer[] maxFieldSerdes) throws HyracksDataException {
         // Create a tuple with the max-1 fields for checking setFieldCount() of tuple references later.
-        ITypeTraits[] maxTypeTraits = SerdeUtils.serdesToTypeTraits(maxFieldSerdes); 
+        ITypeTraits[] maxTypeTraits = SerdeUtils.serdesToTypeTraits(maxFieldSerdes);
         IFieldValueGenerator[] maxFieldGens = DataGenUtils.getFieldGensFromSerdes(maxFieldSerdes, rnd, false);
         // Generate a tuple with random field values.
         Object[] maxFields = new Object[maxFieldSerdes.length];
         for (int j = 0; j < maxFieldSerdes.length; j++) {
             maxFields[j] = maxFieldGens[j].next();
-        }            
-        
+        }
+
         // Run test for varying number of fields and keys.
         for (int numKeyFields = 1; numKeyFields < maxFieldSerdes.length; numKeyFields++) {
             // Create tuples with varying number of fields, and try to interpret their bytes with the lsmBTreeTuple.
-            for (int numFields = numKeyFields; numFields <= maxFieldSerdes.length; numFields++) {                
+            for (int numFields = numKeyFields; numFields <= maxFieldSerdes.length; numFields++) {
                 // Create and write tuple to bytes using an LSMBTreeTupleWriter.
                 LSMBTreeTupleWriter maxMatterTupleWriter = new LSMBTreeTupleWriter(maxTypeTraits, numKeyFields, false);
                 ITupleReference maxTuple = TupleUtils.createTuple(maxFieldSerdes, (Object[])maxFields);
                 ByteBuffer maxMatterBuf = writeTuple(maxTuple, maxMatterTupleWriter);
                 // Tuple reference should work for both matter and antimatter tuples (doesn't matter which factory creates it).
                 LSMBTreeTupleReference maxLsmBTreeTuple = (LSMBTreeTupleReference) maxMatterTupleWriter.createTupleReference();
-                
+
                 ISerializerDeserializer[] fieldSerdes = Arrays.copyOfRange(maxFieldSerdes, 0, numFields);
-                ITypeTraits[] typeTraits = SerdeUtils.serdesToTypeTraits(fieldSerdes);                
+                ITypeTraits[] typeTraits = SerdeUtils.serdesToTypeTraits(fieldSerdes);
                 IFieldValueGenerator[] fieldGens = DataGenUtils.getFieldGensFromSerdes(fieldSerdes, rnd, false);
                 // Generate a tuple with random field values.
                 Object[] fields = new Object[numFields];
                 for (int j = 0; j < numFields; j++) {
                     fields[j] = fieldGens[j].next();
-                }            
+                }
                 // Create and write tuple to bytes using an LSMBTreeTupleWriter.
                 ITupleReference tuple = TupleUtils.createTuple(fieldSerdes, (Object[])fields);
                 LSMBTreeTupleWriter matterTupleWriter = new LSMBTreeTupleWriter(typeTraits, numKeyFields, false);
@@ -96,44 +96,44 @@
                 }
 
                 // Tuple reference should work for both matter and antimatter tuples (doesn't matter which factory creates it).
-                LSMBTreeTupleReference lsmBTreeTuple = (LSMBTreeTupleReference) matterTupleWriter.createTupleReference();                
-                
+                LSMBTreeTupleReference lsmBTreeTuple = (LSMBTreeTupleReference) matterTupleWriter.createTupleReference();
+
                 // Use LSMBTree tuple reference to interpret the written tuples.
                 // Repeat the block inside to test that repeated resetting to matter/antimatter tuples works.
                 for (int r = 0; r < 4; r++) {
-                    
+
                     // Check matter tuple with lsmBTreeTuple.
                     lsmBTreeTuple.resetByTupleOffset(matterBuf, 0);
                     checkTuple(lsmBTreeTuple, numFields, false, fieldSerdes, fields);
-                    
+
                     // Create a copy using copyTupleWriter, and verify again.
                     ByteBuffer copyMatterBuf = writeTuple(lsmBTreeTuple, copyTupleWriter);
                     lsmBTreeTuple.resetByTupleOffset(copyMatterBuf, 0);
                     checkTuple(lsmBTreeTuple, numFields, false, fieldSerdes, fields);
-                    
+
                     // Check antimatter tuple with lsmBTreeTuple.
-                    lsmBTreeTuple.resetByTupleOffset(antimatterBuf, 0);                                        
+                    lsmBTreeTuple.resetByTupleOffset(antimatterBuf, 0);
                     // Should only contain keys.
                     checkTuple(lsmBTreeTuple, numKeyFields, true, fieldSerdes, fields);
-                    
+
                     // Create a copy using copyTupleWriter, and verify again.
                     ByteBuffer copyAntimatterBuf = writeTuple(lsmBTreeTuple, copyTupleWriter);
                     lsmBTreeTuple.resetByTupleOffset(copyAntimatterBuf, 0);
                     // Should only contain keys.
                     checkTuple(lsmBTreeTuple, numKeyFields, true, fieldSerdes, fields);
-                    
+
                     // Check matter tuple with maxLsmBTreeTuple.
-                    // We should be able to manually set a prefix of the fields 
+                    // We should be able to manually set a prefix of the fields
                     // (the passed type traits in the tuple factory's constructor).
                     maxLsmBTreeTuple.setFieldCount(numFields);
                     maxLsmBTreeTuple.resetByTupleOffset(matterBuf, 0);
                     checkTuple(maxLsmBTreeTuple, numFields, false, fieldSerdes, fields);
-                    
+
                     // Check antimatter tuple with maxLsmBTreeTuple.
                     maxLsmBTreeTuple.resetByTupleOffset(antimatterBuf, 0);
                     // Should only contain keys.
                     checkTuple(maxLsmBTreeTuple, numKeyFields, true, fieldSerdes, fields);
-                    
+
                     // Resetting maxLsmBTreeTuple should set its field count to
                     // maxFieldSerdes.length, based on the its type traits.
                     maxLsmBTreeTuple.resetByTupleOffset(maxMatterBuf, 0);
@@ -142,7 +142,7 @@
             }
         }
     }
-    
+
     private void checkTuple(LSMBTreeTupleReference tuple, int expectedFieldCount, boolean expectedAntimatter, ISerializerDeserializer[] fieldSerdes, Object[] expectedFields) throws HyracksDataException {
         assertEquals(expectedFieldCount, tuple.getFieldCount());
         assertEquals(expectedAntimatter, tuple.isAntimatter());
@@ -151,21 +151,21 @@
             assertEquals(expectedFields[j], deserMatterTuple[j]);
         }
     }
-    
+
     @Test
-    public void testLSMBTreeTuple() throws HyracksDataException {        
+    public void testLSMBTreeTuple() throws HyracksDataException {
         ISerializerDeserializer[] intFields = new IntegerSerializerDeserializer[] {
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE, IntegerSerializerDeserializer.INSTANCE,
                 IntegerSerializerDeserializer.INSTANCE };
         testLSMBTreeTuple(intFields);
-        
+
         ISerializerDeserializer[] stringFields = new ISerializerDeserializer[] {
                 new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                 new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
                 new UTF8StringSerializerDeserializer() };
         testLSMBTreeTuple(stringFields);
-        
+
         ISerializerDeserializer[] mixedFields = new ISerializerDeserializer[] {
                 new UTF8StringSerializerDeserializer(), IntegerSerializerDeserializer.INSTANCE,
                 new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(),
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java
index 9a77f0d..56091e1 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexDeleteTest.java
@@ -23,7 +23,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext.InvertedIndexType;
 
 public class InMemoryInvertedIndexDeleteTest extends AbstractInvertedIndexDeleteTest {
-    
+
     public InMemoryInvertedIndexDeleteTest() {
         super(InvertedIndexType.INMEMORY, false);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java
index 85ed7cd..d05f066 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/InMemoryInvertedIndexInsertTest.java
@@ -23,7 +23,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext.InvertedIndexType;
 
 public class InMemoryInvertedIndexInsertTest extends AbstractInvertedIndexLoadTest {
-    
+
     public InMemoryInvertedIndexInsertTest() {
         super(InvertedIndexType.INMEMORY, false);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java
index 0778208..c869720 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/inmemory/PartitionedInMemoryInvertedIndexDeleteTest.java
@@ -23,7 +23,7 @@
 import org.apache.hyracks.storage.am.lsm.invertedindex.util.LSMInvertedIndexTestContext.InvertedIndexType;
 
 public class PartitionedInMemoryInvertedIndexDeleteTest extends AbstractInvertedIndexDeleteTest {
-    
+
     public PartitionedInMemoryInvertedIndexDeleteTest() {
         super(InvertedIndexType.PARTITIONED_INMEMORY, false);
     }
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
index a5cdcaa..4e5ccb9 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/FixedSizeFrameTupleTest.java
@@ -44,7 +44,7 @@
      * Frames containing FixedSizeFrameTuple's require neither tuple slots nor
      * field slots. The tests inserts generated data into a frame until the
      * frame is full, and then verifies the frame's contents.
-     * 
+     *
      */
     @Test
     public void singleFieldTest() throws Exception {
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
index 061e231..fec5121 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestContext.java
@@ -123,7 +123,7 @@
             invListTypeTraits[i] = allTypeTraits[i + tokenFieldCount];
             invListCmpFactories[i] = allCmpFactories[i + tokenFieldCount];
         }
-        // Create index and test context.        
+        // Create index and test context.
         IInvertedIndex invIndex;
         assert harness.getVirtualBufferCaches().size() > 0;
         switch (invIndexType) {
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
index cc0400a..39a2f74 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-lsm-invertedindex-test/src/test/java/org/apache/hyracks/storage/am/lsm/invertedindex/util/LSMInvertedIndexTestUtils.java
@@ -465,7 +465,7 @@
                 highKey.appendField(Short.valueOf(numTokensUpperBound));
             }
 
-            // Get view over check tuples containing inverted-list corresponding to token. 
+            // Get view over check tuples containing inverted-list corresponding to token.
             SortedSet<CheckTuple> invList = OrderedIndexTestUtils.getPrefixExpectedSubset(checkTuples, lowKey, highKey);
             Iterator<CheckTuple> invListIter = invList.iterator();
             // Iterate over inverted list and update scan count array.
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java
index 73ef717..2541bd8 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeDeleteTest.java
@@ -40,7 +40,7 @@
 	public RTreeDeleteTest() {
 		super(AccessMethodTestsConfig.RTREE_TEST_RSTAR_POLICY);
 	}
-	
+
     @Before
     public void setUp() throws HyracksDataException {
         harness.setUp();
diff --git a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java
index 8fa7835..621055b 100644
--- a/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-am-rtree-test/src/test/java/org/apache/hyracks/storage/am/rtree/RTreeInsertTest.java
@@ -40,7 +40,7 @@
 	public RTreeInsertTest() {
 		super(AccessMethodTestsConfig.RTREE_TEST_RSTAR_POLICY);
 	}
-	
+
     @Before
     public void setUp() throws HyracksDataException {
         harness.setUp();
diff --git a/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java b/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
index 2c584d5..3e410ad 100644
--- a/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
+++ b/hyracks/hyracks-tests/hyracks-storage-common-test/src/test/java/org/apache/hyracks/storage/common/BufferCacheTest.java
@@ -89,7 +89,7 @@
                 page.getBuffer().putInt(i * 4, i);
             }
 
-            // try pin should succeed         
+            // try pin should succeed
             ICachedPage page2 = bufferCache.tryPin(BufferedFileHandle.getDiskPageId(fileId, testPageId));
             Assert.assertNotNull(page2);
             bufferCache.unpin(page2);
@@ -124,7 +124,7 @@
         // open file again
         bufferCache.openFile(fileId);
 
-        // tryPin should succeed because page should still be cached        
+        // tryPin should succeed because page should still be cached
         page = bufferCache.tryPin(BufferedFileHandle.getDiskPageId(fileId, testPageId));
         Assert.assertNotNull(page);
         page.acquireReadLatch();
@@ -283,7 +283,7 @@
         }
         Assert.assertTrue(exceptionThrown);
 
-        // close a few random files again        
+        // close a few random files again
         for (int i = 0; i < filesToClose; i++) {
             int ix = Math.abs(rnd.nextInt()) % fileIds.size();
             bufferCache.closeFile(fileIds.get(ix));
diff --git a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java
index 61c6ace..666b05e 100644
--- a/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java
+++ b/hyracks/hyracks-yarn/hyracks-yarn-am/src/main/java/org/apache/hyracks/yarn/am/manifest/ClusterController.java
@@ -18,5 +18,5 @@
  */
 package org.apache.hyracks.yarn.am.manifest;
 
-public class ClusterController extends AbstractProcess {    
-}
\ No newline at end of file
+public class ClusterController extends AbstractProcess {
+}
