Coverity Fixes

FeedMessageOperatorNodePushable
- CID 68721 (#1 of 1): Useless call (USELESS_CALL)

FeedLoadManager
- CID 68719 (#1 of 1): Useless call (USELESS_CALL)

RuntimeRecordTypeInfo
- CID 68717 (#1 of 1): Unused value (UNUSED_VALUE)

HelpCommand
- CID 68591 (#1 of 1): Missing break in switch (MISSING_BREAK)
- CID 68716 (#1 of 1): Unused value (UNUSED_VALUE)

SimilarityJaccardEvaluator
- CID 68714 (#1 of 1): Arguments in wrong order (SWAPPED_ARGUMENTS)

DatasetLifecycleManager
- CID 68713 (#1 of 1): Dereference before null check (REVERSE_INULL)

FeedMetaComputeNodePushable
- CID 68712 (#1 of 2): Dereference before null check (REVERSE_INULL)
- CID 68712 (#2 of 2): Dereference before null check (REVERSE_INULL)

FeedRuntimeInputHandler
- CID 68709 (#1 of 1): Dereference before null check (REVERSE_INULL)

DataflowControllerProvider
- CID 68708 (#1 of 1): Resource leak on an exceptional path
  (RESOURCE_LEAK)

TokenLoad
- CID 68697 (#1 of 1): Resource leak (RESOURCE_LEAK)

RecordGroupLengthRange
- CID 68696 (#1 of 1): Resource leak (RESOURCE_LEAK)

RecordManagerGeneratorMojo
- CID 68691 (#1 of 1): Resource leak (RESOURCE_LEAK)

APIServlet
- CID 68687 (#1 of 1): Resource leak (RESOURCE_LEAK)

Change-Id: I8927126f505481e83dd5b9e6e5ccd75bb67d8188
Reviewed-on: https://asterix-gerrit.ics.uci.edu/715
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: abdullah alamoudi <bamousaa@gmail.com>
diff --git a/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/APIServlet.java b/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/APIServlet.java
index 2f998bb..ba8644a 100644
--- a/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/APIServlet.java
+++ b/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/APIServlet.java
@@ -171,38 +171,38 @@
             resourcePath = requestURI;
         }
 
-        InputStream is = APIServlet.class.getResourceAsStream(resourcePath);
-        if (is == null) {
-            response.sendError(HttpServletResponse.SC_NOT_FOUND);
-            return;
+        try (InputStream is = APIServlet.class.getResourceAsStream(resourcePath)) {
+            if (is == null) {
+                response.sendError(HttpServletResponse.SC_NOT_FOUND);
+                return;
+            }
+
+            // Special handler for font files and .png resources
+            if (resourcePath.endsWith(".png")) {
+
+                BufferedImage img = ImageIO.read(is);
+                OutputStream outputStream = response.getOutputStream();
+                String formatName = "png";
+                response.setContentType("image/png");
+                ImageIO.write(img, formatName, outputStream);
+                outputStream.close();
+                return;
+            }
+
+            response.setCharacterEncoding("utf-8");
+            InputStreamReader isr = new InputStreamReader(is);
+            StringBuilder sb = new StringBuilder();
+            BufferedReader br = new BufferedReader(isr);
+            String line = br.readLine();
+
+            while (line != null) {
+                sb.append(line);
+                line = br.readLine();
+            }
+
+            PrintWriter out = response.getWriter();
+            out.println(sb.toString());
         }
-
-        // Special handler for font files and .png resources
-        if (resourcePath.endsWith(".png")) {
-
-            BufferedImage img = ImageIO.read(is);
-            OutputStream outputStream = response.getOutputStream();
-            String formatName = "png";
-            response.setContentType("image/png");
-            ImageIO.write(img, formatName, outputStream);
-            outputStream.close();
-            return;
-
-        }
-
-        response.setCharacterEncoding("utf-8");
-        InputStreamReader isr = new InputStreamReader(is);
-        StringBuilder sb = new StringBuilder();
-        BufferedReader br = new BufferedReader(isr);
-        String line = br.readLine();
-
-        while (line != null) {
-            sb.append(line);
-            line = br.readLine();
-        }
-
-        PrintWriter out = response.getWriter();
-        out.println(sb.toString());
     }
 
     private static boolean isSet(String requestParameter) {
diff --git a/asterix-app/src/main/java/org/apache/asterix/app/external/FeedLoadManager.java b/asterix-app/src/main/java/org/apache/asterix/app/external/FeedLoadManager.java
index 5a590b4..b6be1e7 100644
--- a/asterix-app/src/main/java/org/apache/asterix/app/external/FeedLoadManager.java
+++ b/asterix-app/src/main/java/org/apache/asterix/app/external/FeedLoadManager.java
@@ -222,7 +222,6 @@
     public int getOutflowRate(FeedConnectionId connectionId, FeedRuntimeType runtimeType) {
         int rVal;
         String key = "" + connectionId + ":" + runtimeType;
-        feedMetrics.get(key);
         Pair<Integer, Integer> value = feedMetrics.get(key);
         if (value == null) {
             rVal = UNKNOWN;
diff --git a/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java b/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 8f9b5b0..f667bd8 100644
--- a/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ b/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -141,7 +141,7 @@
         long resourceID = getResourceIDfromResourcePath(resourcePath);
 
         DatasetInfo dsInfo = datasetInfos.get(did);
-        IndexInfo iInfo = dsInfo.indexes.get(resourceID);
+        IndexInfo iInfo = dsInfo == null ? null : dsInfo.indexes.get(resourceID);
 
         if (dsInfo == null || iInfo == null) {
             throw new HyracksDataException("Index with resource ID " + resourceID + " does not exist.");
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedRuntimeInputHandler.java b/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedRuntimeInputHandler.java
index c4f7543..3370118 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedRuntimeInputHandler.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedRuntimeInputHandler.java
@@ -70,7 +70,7 @@
     private final IFeedManager feedManager;
     private boolean bufferingEnabled;
     private IFrameWriter coreOperator;
-    private MonitoredBuffer mBuffer;
+    private final MonitoredBuffer mBuffer;
     private DataBucketPool pool;
     private FrameCollection frameCollection;
     private Mode mode;
@@ -186,7 +186,8 @@
                 if (fpa.spillToDiskOnCongestion()) {
                     if (frame != null) {
                         spiller.processMessage(frame);
-                    } // TODO handle the else case
+                    } // TODO handle the else casec
+
                 } else {
                     discarder.processMessage(frame);
                 }
@@ -366,19 +367,17 @@
 
     @Override
     public void close() {
-        if (mBuffer != null) {
-            boolean disableMonitoring = !this.mode.equals(Mode.STALL);
-            if (frameCollection != null) {
-                feedManager.getFeedMemoryManager().releaseMemoryComponent(frameCollection);
-            }
-            if (pool != null) {
-                feedManager.getFeedMemoryManager().releaseMemoryComponent(pool);
-            }
-            mBuffer.close(false, disableMonitoring);
-            if (LOGGER.isLoggable(Level.INFO)) {
-                LOGGER.info("Closed input side handler for " + this.runtimeId + " disabled monitoring "
-                        + disableMonitoring + " Mode for runtime " + this.mode);
-            }
+        boolean disableMonitoring = !this.mode.equals(Mode.STALL);
+        if (frameCollection != null) {
+            feedManager.getFeedMemoryManager().releaseMemoryComponent(frameCollection);
+        }
+        if (pool != null) {
+            feedManager.getFeedMemoryManager().releaseMemoryComponent(pool);
+        }
+        mBuffer.close(false, disableMonitoring);
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.info("Closed input side handler for " + this.runtimeId + " disabled monitoring "
+                    + disableMonitoring + " Mode for runtime " + this.mode);
         }
     }
 
@@ -424,9 +423,7 @@
         if (LOGGER.isLoggable(Level.INFO)) {
             LOGGER.info("Reset number of partitions to " + nPartitions + " for " + this.runtimeId);
         }
-        if (mBuffer != null) {
-            mBuffer.reset();
-        }
+        mBuffer.reset();
     }
 
     public FeedConnectionId getConnectionId() {
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMessageOperatorNodePushable.java b/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMessageOperatorNodePushable.java
index 36c11e9..a92544b 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMessageOperatorNodePushable.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMessageOperatorNodePushable.java
@@ -168,7 +168,6 @@
             }
         }
 
-        commitResponseMessage.getIntakePartition();
         SubscribableFeedRuntimeId sid = new SubscribableFeedRuntimeId(connectionId.getFeedId(), FeedRuntimeType.INTAKE,
                 partition);
         IngestionRuntime ingestionRuntime = (IngestionRuntime) feedManager.getFeedSubscriptionManager()
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java b/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
index d41179f..66b520f 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java
@@ -185,20 +185,18 @@
         boolean stalled = inputSideHandler.getMode().equals(Mode.STALL);
         boolean end = inputSideHandler.getMode().equals(Mode.END);
         try {
-            if (inputSideHandler != null) {
-                if (!(stalled || end)) {
-                    inputSideHandler.nextFrame(null); // signal end of data
-                    while (!inputSideHandler.isFinished()) {
-                        synchronized (coreOperator) {
-                            if (inputSideHandler.isFinished()) {
-                                break;
-                            }
-                            coreOperator.wait();
+            if (!(stalled || end)) {
+                inputSideHandler.nextFrame(null); // signal end of data
+                while (!inputSideHandler.isFinished()) {
+                    synchronized (coreOperator) {
+                        if (inputSideHandler.isFinished()) {
+                            break;
                         }
+                        coreOperator.wait();
                     }
-                } else {
-                    inputSideHandler.setFinished(true);
                 }
+            } else {
+                inputSideHandler.setFinished(true);
             }
             coreOperator.close();
             System.out.println("CLOSED " + coreOperator + " STALLED ?" + stalled + " ENDED " + end);
@@ -211,9 +209,7 @@
             } else {
                 System.out.println("NOT DEREGISTERING " + this.feedRuntime.getRuntimeId());
             }
-            if (inputSideHandler != null) {
-                inputSideHandler.close();
-            }
+            inputSideHandler.close();
             if (LOGGER.isLoggable(Level.INFO)) {
                 LOGGER.info("Ending Operator  " + this.feedRuntime.getRuntimeId());
             }
diff --git a/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java b/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java
index 6b4b6ba..d4d9a18 100644
--- a/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java
+++ b/asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java
@@ -78,22 +78,27 @@
                 IDataFlowController recordDataFlowController = null;
                 IRecordReaderFactory<?> recordReaderFactory = (IRecordReaderFactory<?>) dataSourceFactory;
                 IRecordReader<?> recordReader = recordReaderFactory.createRecordReader(ctx, partition);
-                recordReader.configure(configuration);
-                IRecordDataParserFactory<?> recordParserFactory = (IRecordDataParserFactory<?>) dataParserFactory;
-                IRecordDataParser<?> dataParser = recordParserFactory.createRecordParser(ctx);
-                dataParser.configure(configuration, recordType);
-                if (indexingOp) {
-                    recordDataFlowController = new IndexingDataFlowController(dataParser, recordReader);
-                } else if (isFeed) {
-                    recordDataFlowController = new FeedRecordDataFlowController(feedLogManager, dataParser,
-                            recordReader);
-                } else {
-                    recordDataFlowController = new RecordDataFlowController(dataParser, recordReader);
+                try {
+                    recordReader.configure(configuration);
+                    IRecordDataParserFactory<?> recordParserFactory = (IRecordDataParserFactory<?>) dataParserFactory;
+                    IRecordDataParser<?> dataParser = recordParserFactory.createRecordParser(ctx);
+                    dataParser.configure(configuration, recordType);
+                    if (indexingOp) {
+                        recordDataFlowController = new IndexingDataFlowController(dataParser, recordReader);
+                    } else if (isFeed) {
+                        recordDataFlowController = new FeedRecordDataFlowController(feedLogManager, dataParser,
+                                recordReader);
+                    } else {
+                        recordDataFlowController = new RecordDataFlowController(dataParser, recordReader);
+                    }
+                    recordDataFlowController.configure(configuration, ctx);
+                    recordDataFlowController
+                            .setTupleForwarder(DataflowUtils.getTupleForwarder(configuration, feedLogManager));
+                    return recordDataFlowController;
+                } catch (Exception e) {
+                    recordReader.close();
+                    throw e;
                 }
-                recordDataFlowController.configure(configuration, ctx);
-                recordDataFlowController
-                        .setTupleForwarder(DataflowUtils.getTupleForwarder(configuration, feedLogManager));
-                return recordDataFlowController;
             case STREAM:
                 IStreamFlowController streamDataFlowController = null;
                 if (isFeed) {
diff --git a/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/recordgroup/RecordGroupLengthRange.java b/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/recordgroup/RecordGroupLengthRange.java
index db62783..872d1f4 100644
--- a/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/recordgroup/RecordGroupLengthRange.java
+++ b/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/recordgroup/RecordGroupLengthRange.java
@@ -33,8 +33,7 @@
 
     public RecordGroupLengthRange(int noGroups, SimilarityFilters fuzzyFilters, String lengthstatsPath) {
         super(noGroups, fuzzyFilters);
-        try {
-            DataInputStream in = new DataInputStream(new FileInputStream(lengthstatsPath.toString()));
+        try (DataInputStream in = new DataInputStream(new FileInputStream(lengthstatsPath))) {
             min = in.readInt();
             max = in.readInt();
             groupSize = (int) Math.ceil((max - min + 1f) / noGroups);
diff --git a/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/tokenorder/TokenLoad.java b/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/tokenorder/TokenLoad.java
index ceb6ba0..3578d94 100644
--- a/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/tokenorder/TokenLoad.java
+++ b/asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/tokenorder/TokenLoad.java
@@ -41,10 +41,9 @@
     }
 
     public void loadTokenRank(int factor) {
-        try {
-            BufferedReader fis = new BufferedReader(
-            // new FileReader(path.toString())
-                    new InputStreamReader(new FileInputStream(path), "UTF-8"));
+        try (BufferedReader fis = new BufferedReader(
+                // new FileReader(path.toString())
+                new InputStreamReader(new FileInputStream(path), "UTF-8"))) {
             String token = null;
             while ((token = fis.readLine()) != null) {
                 rank.add(token);
diff --git a/asterix-installer/src/main/java/org/apache/asterix/installer/command/HelpCommand.java b/asterix-installer/src/main/java/org/apache/asterix/installer/command/HelpCommand.java
index a9c0592..e8a93be 100644
--- a/asterix-installer/src/main/java/org/apache/asterix/installer/command/HelpCommand.java
+++ b/asterix-installer/src/main/java/org/apache/asterix/installer/command/HelpCommand.java
@@ -64,6 +64,7 @@
                 break;
             case UNINSTALL:
                 helpMessage = new UninstallCommand().getUsageDescription();
+                break;
             case ALTER:
                 helpMessage = new AlterCommand().getUsageDescription();
                 break;
diff --git a/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/org/apache/asterix/recordmanagergenerator/RecordManagerGeneratorMojo.java b/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/org/apache/asterix/recordmanagergenerator/RecordManagerGeneratorMojo.java
index bf981aa..d7479bc 100644
--- a/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/org/apache/asterix/recordmanagergenerator/RecordManagerGeneratorMojo.java
+++ b/asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/org/apache/asterix/recordmanagergenerator/RecordManagerGeneratorMojo.java
@@ -23,6 +23,7 @@
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.FileWriter;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
 import java.util.HashMap;
@@ -86,17 +87,18 @@
         typeMap = new HashMap<String, RecordType>();
 
         for (int i = 0; i < inputFiles.length; ++i) {
-            try {
-                getLog().info("reading " + inputFiles[i].toString());
-                Reader read = new FileReader(inputFiles[i]);
+            getLog().info("reading " + inputFiles[i].toString());
+            try (Reader read = new FileReader(inputFiles[i])) {
                 RecordType type = RecordType.read(read);
                 // always add allocId to enable tracking of allocations
                 type.addField("alloc id", RecordType.Type.SHORT, null);
                 type.addToMap(typeMap);
             } catch (FileNotFoundException fnfe) {
-                throw new MojoExecutionException("cound not find type description file " + inputFiles[i], fnfe);
+                throw new MojoExecutionException("could not find type description file " + inputFiles[i], fnfe);
             } catch (JSONException jse) {
-                throw new MojoExecutionException("cound not parse type description file " + inputFiles[i], jse);
+                throw new MojoExecutionException("could not parse type description file " + inputFiles[i], jse);
+            } catch (IOException e) {
+                throw new MojoExecutionException("error closing type description file " + inputFiles[i], e);
             }
         }
     }
diff --git a/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java b/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java
index 07773d8..a34bd40 100644
--- a/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java
+++ b/asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java
@@ -131,7 +131,7 @@
         int fIndex;
         int probeFieldHash = fieldNameHashFunction.hash(bytes, start, length);
         int i = Arrays.binarySearch(hashCodeIndexPairs, ((long) probeFieldHash) << 32);
-        i = (i < 0) ? (i = -1 * (i + 1)) : i;
+        i = (i < 0) ? -1 * (i + 1) : i;
 
         while (i < hashCodeIndexPairs.length && (int) (hashCodeIndexPairs[i] >>> 32) == probeFieldHash) {
             fIndex = (int) hashCodeIndexPairs[i];
diff --git a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
index cb7ba8c..e59c04f 100644
--- a/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
+++ b/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java
@@ -199,7 +199,7 @@
         }
     }
 
-    protected int probeHashMap(AbstractAsterixListIterator probeIter, int probeListSize, int buildListSize)
+    protected int probeHashMap(AbstractAsterixListIterator probeIter, int buildListSize, int probeListSize)
             throws HyracksDataException {
         // Probe phase: Probe items from second list, and compute intersection size.
         int intersectionSize = 0;