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 2c4b000a..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..c4269272 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 {
+}
