You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tez.apache.org by bi...@apache.org on 2014/04/30 02:30:52 UTC

git commit: TEZ-886. Add @Nullable annotation at API level (Tsuyoshi OZAWA via bikas)

Repository: incubator-tez
Updated Branches:
  refs/heads/master e9b222e9b -> 6ec3580ee


TEZ-886. Add @Nullable annotation at API level (Tsuyoshi OZAWA via bikas)


Project: http://git-wip-us.apache.org/repos/asf/incubator-tez/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tez/commit/6ec3580e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tez/tree/6ec3580e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tez/diff/6ec3580e

Branch: refs/heads/master
Commit: 6ec3580ee62d92bf2d2f9d51c10fb13761317893
Parents: e9b222e
Author: Bikas Saha <bi...@apache.org>
Authored: Tue Apr 29 17:30:46 2014 -0700
Committer: Bikas Saha <bi...@apache.org>
Committed: Tue Apr 29 17:30:46 2014 -0700

----------------------------------------------------------------------
 pom.xml                                                  |  5 +++++
 tez-api/pom.xml                                          |  4 ++++
 .../main/java/org/apache/tez/client/PreWarmContext.java  | 11 ++++++++++-
 .../apache/tez/dag/api/VertexManagerPluginContext.java   | 10 +++++++---
 .../org/apache/tez/runtime/api/TezProcessorContext.java  |  1 +
 .../java/org/apache/tez/runtime/api/TezTaskContext.java  |  5 ++++-
 .../common/resources/InitialMemoryRequestContext.java    |  4 ++++
 tez-dag/pom.xml                                          |  4 ++++
 .../java/org/apache/tez/dag/app/ContainerContext.java    |  4 +++-
 .../main/java/org/apache/tez/dag/app/DAGAppMaster.java   |  2 ++
 .../src/main/java/org/apache/tez/dag/app/dag/Vertex.java |  5 +++++
 .../java/org/apache/tez/dag/app/dag/impl/VertexImpl.java |  7 ++++++-
 .../org/apache/tez/dag/app/dag/impl/VertexManager.java   |  6 +++++-
 tez-runtime-internals/pom.xml                            |  4 ++++
 .../apache/tez/runtime/api/impl/TezInputContextImpl.java |  3 +++
 .../tez/runtime/api/impl/TezOutputContextImpl.java       |  3 +++
 .../tez/runtime/api/impl/TezProcessorContextImpl.java    |  3 +++
 .../apache/tez/runtime/api/impl/TezTaskContextImpl.java  |  3 +++
 .../library/output/TestOnFileUnorderedKVOutput.java      |  6 +++++-
 19 files changed, 81 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5d9f80a..eec46be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -314,6 +314,11 @@
         <artifactId>jettison</artifactId>
         <version>1.3.4</version>
       </dependency>
+      <dependency>
+        <groupId>com.google.code.findbugs</groupId>
+        <artifactId>jsr305</artifactId>
+        <version>2.0.3</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-api/pom.xml
----------------------------------------------------------------------
diff --git a/tez-api/pom.xml b/tez-api/pom.xml
index c73bf53..0bfea9e 100644
--- a/tez-api/pom.xml
+++ b/tez-api/pom.xml
@@ -54,6 +54,10 @@
      <artifactId>junit</artifactId>
     </dependency>
     <dependency>
+      <groupId>com.google.code.findbugs</groupId>
+      <artifactId>jsr305</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-common</artifactId>
       <type>test-jar</type>

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-api/src/main/java/org/apache/tez/client/PreWarmContext.java
----------------------------------------------------------------------
diff --git a/tez-api/src/main/java/org/apache/tez/client/PreWarmContext.java b/tez-api/src/main/java/org/apache/tez/client/PreWarmContext.java
index ddd117f..4b5ab15 100644
--- a/tez-api/src/main/java/org/apache/tez/client/PreWarmContext.java
+++ b/tez-api/src/main/java/org/apache/tez/client/PreWarmContext.java
@@ -18,6 +18,7 @@
 
 package org.apache.tez.client;
 
+import javax.annotation.Nullable;
 import org.apache.hadoop.classification.InterfaceAudience;
 import org.apache.hadoop.classification.InterfaceStability;
 import org.apache.hadoop.yarn.api.records.LocalResource;
@@ -27,6 +28,8 @@ import org.apache.tez.dag.api.VertexLocationHint;
 
 import java.util.Map;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
 /**
  * Context to define how the pre-warm containers should be launched within a
  * session.
@@ -62,7 +65,9 @@ public class PreWarmContext {
   public PreWarmContext(ProcessorDescriptor processorDescriptor,
       Resource resource,
       int numTasks,
-      VertexLocationHint locationHints) {
+      @Nullable VertexLocationHint locationHints) {
+    checkNotNull(processorDescriptor, "processorDescriptor is null");
+    checkNotNull(resource, "resource is null");
     this.processorDescriptor =  processorDescriptor;
     this.resource = resource;
     this.numTasks = numTasks;
@@ -114,18 +119,22 @@ public class PreWarmContext {
     return numTasks;
   }
 
+  @Nullable
   public VertexLocationHint getLocationHints() {
     return locationHints;
   }
 
+  @Nullable
   public Map<String, LocalResource> getLocalResources() {
     return localResources;
   }
 
+  @Nullable
   public Map<String, String> getEnvironment() {
     return environment;
   }
 
+  @Nullable
   public String getJavaOpts() {
     return javaOpts;
   }

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-api/src/main/java/org/apache/tez/dag/api/VertexManagerPluginContext.java
----------------------------------------------------------------------
diff --git a/tez-api/src/main/java/org/apache/tez/dag/api/VertexManagerPluginContext.java b/tez-api/src/main/java/org/apache/tez/dag/api/VertexManagerPluginContext.java
index 5d53b60..70cb6d2 100644
--- a/tez-api/src/main/java/org/apache/tez/dag/api/VertexManagerPluginContext.java
+++ b/tez-api/src/main/java/org/apache/tez/dag/api/VertexManagerPluginContext.java
@@ -26,6 +26,7 @@ import javax.annotation.Nullable;
 
 import org.apache.hadoop.classification.InterfaceStability.Unstable;
 import org.apache.hadoop.yarn.api.records.Container;
+import javax.annotation.Nullable;
 import org.apache.hadoop.yarn.api.records.Resource;
 import org.apache.tez.dag.api.VertexLocationHint.TaskLocationHint;
 import org.apache.tez.runtime.api.events.RootInputDataInformationEvent;
@@ -72,6 +73,7 @@ public interface VertexManagerPluginContext {
    * Get the payload set for the plugin
    * @return user payload
    */
+  @Nullable
   public byte[] getUserPayload();
   
   /**
@@ -119,8 +121,9 @@ public interface VertexManagerPluginContext {
    * @param sourceEdgeManagers Edge Managers to be updated
    * @return true if the operation was allowed.
    */
-  public boolean setVertexParallelism(int parallelism, VertexLocationHint locationHint,
-      Map<String, EdgeManagerDescriptor> sourceEdgeManagers);
+  public boolean setVertexParallelism(int parallelism,
+      @Nullable VertexLocationHint locationHint,
+      @Nullable Map<String, EdgeManagerDescriptor> sourceEdgeManagers);
   
   /**
    * Allows a VertexManagerPlugin to assign Events for Root Inputs
@@ -139,7 +142,7 @@ public interface VertexManagerPluginContext {
   
   /**
    * Notify the vertex to start the given tasks
-   * @param taskIDs Indices of the tasks to be started
+   * @param tasks Indices of the tasks to be started
    */
   public void scheduleVertexTasks(List<TaskWithLocationHint> tasks);
   
@@ -148,6 +151,7 @@ public interface VertexManagerPluginContext {
    * sources of data.
    * @return Names of inputs to this vertex. Maybe null if there are no inputs
    */
+  @Nullable
   public Set<String> getVertexInputNames();
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-api/src/main/java/org/apache/tez/runtime/api/TezProcessorContext.java
----------------------------------------------------------------------
diff --git a/tez-api/src/main/java/org/apache/tez/runtime/api/TezProcessorContext.java b/tez-api/src/main/java/org/apache/tez/runtime/api/TezProcessorContext.java
index 913e6df..0e610d6 100644
--- a/tez-api/src/main/java/org/apache/tez/runtime/api/TezProcessorContext.java
+++ b/tez-api/src/main/java/org/apache/tez/runtime/api/TezProcessorContext.java
@@ -20,6 +20,7 @@ package org.apache.tez.runtime.api;
 
 import java.io.IOException;
 import java.util.Collection;
+import javax.annotation.Nullable;
 
 /**
  * Context handle for the Processor to initialize itself.

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-api/src/main/java/org/apache/tez/runtime/api/TezTaskContext.java
----------------------------------------------------------------------
diff --git a/tez-api/src/main/java/org/apache/tez/runtime/api/TezTaskContext.java b/tez-api/src/main/java/org/apache/tez/runtime/api/TezTaskContext.java
index 6a7154c..f3d34df 100644
--- a/tez-api/src/main/java/org/apache/tez/runtime/api/TezTaskContext.java
+++ b/tez-api/src/main/java/org/apache/tez/runtime/api/TezTaskContext.java
@@ -21,6 +21,7 @@ package org.apache.tez.runtime.api;
 import java.nio.ByteBuffer;
 import java.util.List;
 
+import javax.annotation.Nullable;
 import org.apache.hadoop.yarn.api.records.ApplicationId;
 import org.apache.tez.common.counters.TezCounters;
 
@@ -90,6 +91,7 @@ public interface TezTaskContext {
    * Get the User Payload for the Input/Output/Processor
    * @return User Payload
    */
+  @Nullable
   public byte[] getUserPayload();
 
   /**
@@ -112,7 +114,7 @@ public interface TezTaskContext {
    *
    * @param exception an exception representing the error
    */
-  public void fatalError(Throwable exception, String message);
+  public void fatalError(@Nullable Throwable exception, @Nullable String message);
 
   /**
    * Returns meta-data for the specified service. As an example, when the MR
@@ -133,6 +135,7 @@ public interface TezTaskContext {
    *          the name of the service for which provider meta-data is required
    * @return a ByteBuffer representing the meta-data
    */
+  @Nullable
   public ByteBuffer getServiceProviderMetaData(String serviceName);
   
   /**

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-api/src/main/java/org/apache/tez/runtime/common/resources/InitialMemoryRequestContext.java
----------------------------------------------------------------------
diff --git a/tez-api/src/main/java/org/apache/tez/runtime/common/resources/InitialMemoryRequestContext.java b/tez-api/src/main/java/org/apache/tez/runtime/common/resources/InitialMemoryRequestContext.java
index 4f3fc46..aec3795 100644
--- a/tez-api/src/main/java/org/apache/tez/runtime/common/resources/InitialMemoryRequestContext.java
+++ b/tez-api/src/main/java/org/apache/tez/runtime/common/resources/InitialMemoryRequestContext.java
@@ -18,6 +18,7 @@
 
 package org.apache.tez.runtime.common.resources;
 
+import com.google.common.base.Preconditions;
 import org.apache.hadoop.classification.InterfaceAudience.Private;
 
 
@@ -37,6 +38,9 @@ public class InitialMemoryRequestContext {
 
   public InitialMemoryRequestContext(long requestedSize, String componentClassName,
       ComponentType componentType, String componentVertexName) {
+    Preconditions.checkNotNull(componentClassName, "componentClassName is null");
+    Preconditions.checkNotNull(componentType, "componentType is null");
+    Preconditions.checkNotNull(componentVertexName, "componentVertexName is null");
     this.requestedSize = requestedSize;
     this.componentClassName = componentClassName;
     this.componentType = componentType;

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-dag/pom.xml
----------------------------------------------------------------------
diff --git a/tez-dag/pom.xml b/tez-dag/pom.xml
index 93ed9ef..ae8aabd 100644
--- a/tez-dag/pom.xml
+++ b/tez-dag/pom.xml
@@ -55,6 +55,10 @@
       <type>test-jar</type>
     </dependency>
     <dependency>
+      <groupId>com.google.code.findbugs</groupId>
+      <artifactId>jsr305</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.hadoop</groupId>
       <artifactId>hadoop-yarn-common</artifactId>
       <type>test-jar</type>

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-dag/src/main/java/org/apache/tez/dag/app/ContainerContext.java
----------------------------------------------------------------------
diff --git a/tez-dag/src/main/java/org/apache/tez/dag/app/ContainerContext.java b/tez-dag/src/main/java/org/apache/tez/dag/app/ContainerContext.java
index 7eccb8f..cf688b3 100644
--- a/tez-dag/src/main/java/org/apache/tez/dag/app/ContainerContext.java
+++ b/tez-dag/src/main/java/org/apache/tez/dag/app/ContainerContext.java
@@ -22,6 +22,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import javax.annotation.Nullable;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.security.Credentials;
@@ -59,7 +60,7 @@ public class ContainerContext {
   
   public ContainerContext(Map<String, LocalResource> localResources,
       Credentials credentials, Map<String, String> environment, String javaOpts,
-      Vertex vertex) {
+      @Nullable Vertex vertex) {
     Preconditions.checkNotNull(localResources,
         "localResources should not be null");
     Preconditions.checkNotNull(credentials, "credentials should not be null");
@@ -93,6 +94,7 @@ public class ContainerContext {
    *         container context.
    */
   public boolean isSuperSet(ContainerContext otherContext) {
+    Preconditions.checkNotNull(otherContext, "otherContext should not null");
     // Assumptions:
     // Credentials are the same for all containers belonging to a DAG.
     // Matching can be added if containers are used across DAGs

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java
----------------------------------------------------------------------
diff --git a/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java b/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java
index eba41fe..2df3de1 100644
--- a/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java
+++ b/tez-dag/src/main/java/org/apache/tez/dag/app/DAGAppMaster.java
@@ -18,6 +18,7 @@
 
 package org.apache.tez.dag.app;
 
+import com.google.common.base.Preconditions;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.io.File;
@@ -1345,6 +1346,7 @@ public class DAGAppMaster extends AbstractService {
 
     @Override
     public void setDAG(DAG dag) {
+      Preconditions.checkNotNull(dag, "dag is null");
       try {
         wLock.lock();
         this.dag = dag;

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-dag/src/main/java/org/apache/tez/dag/app/dag/Vertex.java
----------------------------------------------------------------------
diff --git a/tez-dag/src/main/java/org/apache/tez/dag/app/dag/Vertex.java b/tez-dag/src/main/java/org/apache/tez/dag/app/dag/Vertex.java
index 2ff20b8..93f047a 100644
--- a/tez-dag/src/main/java/org/apache/tez/dag/app/dag/Vertex.java
+++ b/tez-dag/src/main/java/org/apache/tez/dag/app/dag/Vertex.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.annotation.Nullable;
 import org.apache.hadoop.yarn.api.records.Resource;
 import org.apache.tez.common.counters.TezCounters;
 import org.apache.tez.dag.api.EdgeManagerDescriptor;
@@ -78,6 +79,7 @@ public interface Vertex extends Comparable<Vertex> {
   ProgressBuilder getVertexProgress();
   VertexStatusBuilder getVertexStatus(Set<StatusGetOpts> statusOptions);
 
+  @Nullable
   TaskLocationHint getTaskLocationHint(TezTaskID taskID);
 
   boolean setParallelism(int parallelism, VertexLocationHint vertexLocationHint,
@@ -96,7 +98,9 @@ public interface Vertex extends Comparable<Vertex> {
   void setAdditionalInputs(List<RootInputLeafOutputProto> inputs);
   void setAdditionalOutputs(List<RootInputLeafOutputProto> outputs);
 
+  @Nullable
   Map<String, RootInputLeafOutputDescriptor<InputDescriptor>> getAdditionalInputs();
+  @Nullable
   Map<String, RootInputLeafOutputDescriptor<OutputDescriptor>> getAdditionalOutputs();
 
   List<InputSpec> getInputSpecList(int taskIndex);
@@ -113,6 +117,7 @@ public interface Vertex extends Comparable<Vertex> {
 
   ProcessorDescriptor getProcessorDescriptor();
   public DAG getDAG();
+  @Nullable
   VertexTerminationCause getTerminationCause();
 
   // TODO remove this once RootInputVertexManager is fixed to not use

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexImpl.java
----------------------------------------------------------------------
diff --git a/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexImpl.java b/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexImpl.java
index f8fab0d..9701be4 100644
--- a/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexImpl.java
+++ b/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexImpl.java
@@ -35,6 +35,7 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
+import javax.annotation.Nullable;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience.Private;
@@ -3238,12 +3239,14 @@ public class VertexImpl implements org.apache.tez.dag.app.dag.Vertex,
     }
 
   }
-  
+
+  @Nullable
   @Override
   public Map<String, OutputCommitter> getOutputCommitters() {
     return outputCommitters;
   }
 
+  @Nullable
   @Private
   @VisibleForTesting
   public OutputCommitter getOutputCommitter(String outputName) {
@@ -3272,11 +3275,13 @@ public class VertexImpl implements org.apache.tez.dag.app.dag.Vertex,
     }
   }
 
+  @Nullable
   @Override
   public Map<String, RootInputLeafOutputDescriptor<InputDescriptor>> getAdditionalInputs() {
     return this.additionalInputs;
   }
 
+  @Nullable
   @Override
   public Map<String, RootInputLeafOutputDescriptor<OutputDescriptor>> getAdditionalOutputs() {
     return this.additionalOutputs;

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexManager.java
----------------------------------------------------------------------
diff --git a/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexManager.java b/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexManager.java
index a6289ad..86362c3 100644
--- a/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexManager.java
+++ b/tez-dag/src/main/java/org/apache/tez/dag/app/dag/impl/VertexManager.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import javax.annotation.Nullable;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.yarn.api.records.Container;
@@ -75,7 +76,7 @@ public class VertexManager {
     private EventMetaData rootEventSourceMetadata = new EventMetaData(EventProducerConsumerType.INPUT,
         managedVertex.getName(), "NULL_VERTEX", null);
     private Map<String, EventMetaData> destinationEventMetadataMap = Maps.newHashMap();
-    
+
     @Override
     public Map<String, EdgeProperty> getInputVertexEdgeProperties() {
       // TODO Something similar for Initial Inputs - payload etc visible
@@ -109,6 +110,7 @@ public class VertexManager {
       managedVertex.scheduleTasks(tasks);
     }
 
+    @Nullable
     @Override
     public Set<String> getVertexInputNames() {
       Set<String> inputNames = null;
@@ -120,6 +122,7 @@ public class VertexManager {
       return inputNames;
     }
 
+    @Nullable
     @Override
     public byte[] getUserPayload() {
       return payload;
@@ -147,6 +150,7 @@ public class VertexManager {
 
     @Override
     public void setVertexLocationHint(VertexLocationHint locationHint) {
+      Preconditions.checkNotNull(locationHint, "locationHint is null");
       managedVertex.setVertexLocationHint(locationHint);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-runtime-internals/pom.xml
----------------------------------------------------------------------
diff --git a/tez-runtime-internals/pom.xml b/tez-runtime-internals/pom.xml
index 62d1661..722682b 100644
--- a/tez-runtime-internals/pom.xml
+++ b/tez-runtime-internals/pom.xml
@@ -58,6 +58,10 @@
       <artifactId>junit</artifactId>
     </dependency>
     <dependency>
+      <groupId>com.google.code.findbugs</groupId>
+      <artifactId>jsr305</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-all</artifactId>
       <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezInputContextImpl.java
----------------------------------------------------------------------
diff --git a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezInputContextImpl.java b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezInputContextImpl.java
index 1daf211..53c82f6 100644
--- a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezInputContextImpl.java
+++ b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezInputContextImpl.java
@@ -18,6 +18,7 @@
 
 package org.apache.tez.runtime.api.impl;
 
+import com.google.common.base.Preconditions;
 import static com.google.common.base.Preconditions.checkNotNull;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -87,6 +88,7 @@ public class TezInputContextImpl extends TezTaskContextImpl
 
   @Override
   public void sendEvents(List<Event> events) {
+    Preconditions.checkNotNull(events, "events are null");
     List<TezEvent> tezEvents = new ArrayList<TezEvent>(events.size());
     for (Event e : events) {
       TezEvent tEvt = new TezEvent(e, sourceInfo);
@@ -95,6 +97,7 @@ public class TezInputContextImpl extends TezTaskContextImpl
     tezUmbilical.addEvents(tezEvents);
   }
 
+  @Nullable
   @Override
   public byte[] getUserPayload() {
     return userPayload;

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezOutputContextImpl.java
----------------------------------------------------------------------
diff --git a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezOutputContextImpl.java b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezOutputContextImpl.java
index 6ba8581..2b1bbf6 100644
--- a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezOutputContextImpl.java
+++ b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezOutputContextImpl.java
@@ -18,6 +18,7 @@
 
 package org.apache.tez.runtime.api.impl;
 
+import com.google.common.base.Preconditions;
 import static com.google.common.base.Preconditions.checkNotNull;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -80,6 +81,7 @@ public class TezOutputContextImpl extends TezTaskContextImpl
 
   @Override
   public void sendEvents(List<Event> events) {
+    Preconditions.checkNotNull(events, "events are null");
     List<TezEvent> tezEvents = new ArrayList<TezEvent>(events.size());
     for (Event e : events) {
       TezEvent tEvt = new TezEvent(e, sourceInfo);
@@ -88,6 +90,7 @@ public class TezOutputContextImpl extends TezTaskContextImpl
     tezUmbilical.addEvents(tezEvents);
   }
 
+  @Nullable
   @Override
   public byte[] getUserPayload() {
     return userPayload;

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezProcessorContextImpl.java
----------------------------------------------------------------------
diff --git a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezProcessorContextImpl.java b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezProcessorContextImpl.java
index 091dbdc..a1005b9 100644
--- a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezProcessorContextImpl.java
+++ b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezProcessorContextImpl.java
@@ -18,6 +18,7 @@
 
 package org.apache.tez.runtime.api.impl;
 
+import com.google.common.base.Preconditions;
 import static com.google.common.base.Preconditions.checkNotNull;
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -68,6 +69,7 @@ public class TezProcessorContextImpl extends TezTaskContextImpl implements TezPr
 
   @Override
   public void sendEvents(List<Event> events) {
+    Preconditions.checkNotNull(events, "events are null");
     List<TezEvent> tezEvents = new ArrayList<TezEvent>(events.size());
     for (Event e : events) {
       TezEvent tEvt = new TezEvent(e, sourceInfo);
@@ -76,6 +78,7 @@ public class TezProcessorContextImpl extends TezTaskContextImpl implements TezPr
     tezUmbilical.addEvents(tezEvents);
   }
 
+  @Nullable
   @Override
   public byte[] getUserPayload() {
     return userPayload;

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezTaskContextImpl.java
----------------------------------------------------------------------
diff --git a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezTaskContextImpl.java b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezTaskContextImpl.java
index e041c23..70000d6 100644
--- a/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezTaskContextImpl.java
+++ b/tez-runtime-internals/src/main/java/org/apache/tez/runtime/api/impl/TezTaskContextImpl.java
@@ -24,6 +24,7 @@ import java.util.Arrays;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import javax.annotation.Nullable;
 import org.apache.hadoop.classification.InterfaceAudience.Private;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.util.StringUtils;
@@ -152,8 +153,10 @@ public abstract class TezTaskContextImpl implements TezTaskContext {
         .asReadOnlyBuffer().rewind();
   }
 
+  @Nullable
   @Override
   public ByteBuffer getServiceProviderMetaData(String serviceName) {
+    Preconditions.checkNotNull(serviceName, "serviceName is null");
     return AuxiliaryServiceHelper.getServiceDataFromEnv(
         serviceName, auxServiceEnv);
   }

http://git-wip-us.apache.org/repos/asf/incubator-tez/blob/6ec3580e/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/output/TestOnFileUnorderedKVOutput.java
----------------------------------------------------------------------
diff --git a/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/output/TestOnFileUnorderedKVOutput.java b/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/output/TestOnFileUnorderedKVOutput.java
index 064cbbc..9776055 100644
--- a/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/output/TestOnFileUnorderedKVOutput.java
+++ b/tez-runtime-library/src/test/java/org/apache/tez/runtime/library/output/TestOnFileUnorderedKVOutput.java
@@ -19,6 +19,7 @@
 package org.apache.tez.runtime.library.output;
 
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertFalse;
@@ -120,10 +121,13 @@ public class TestOnFileUnorderedKVOutput {
     AuxiliaryServiceHelper.setServiceDataIntoEnv(ShuffleUtils.SHUFFLE_HANDLER_SERVICE_ID, bb, auxEnv);
 
 
+    OutputDescriptor outputDescriptor = mock(OutputDescriptor.class);
+    when(outputDescriptor.getClassName()).thenReturn("OutputDescriptor");
+
     TezOutputContext outputContext = new TezOutputContextImpl(conf,
         appAttemptNumber, tezUmbilical, dagName, taskVertexName, destinationVertexName,
         taskAttemptID, counters, 0, userPayload, runtimeTask,
-        null, auxEnv, new MemoryDistributor(1, 1, conf) , mock(OutputDescriptor.class));
+        null, auxEnv, new MemoryDistributor(1, 1, conf) , outputDescriptor);
 
     List<Event> events = null;