Till Westmann has submitted this change and it was merged. Change subject: Coverity Fixes ......................................................................
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 <[email protected]> Reviewed-by: abdullah alamoudi <[email protected]> --- M asterix-app/src/main/java/org/apache/asterix/api/http/servlet/APIServlet.java M asterix-app/src/main/java/org/apache/asterix/app/external/FeedLoadManager.java M asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java M asterix-external-data/src/main/java/org/apache/asterix/external/feed/dataflow/FeedRuntimeInputHandler.java M asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMessageOperatorNodePushable.java M asterix-external-data/src/main/java/org/apache/asterix/external/operators/FeedMetaComputeNodePushable.java M asterix-external-data/src/main/java/org/apache/asterix/external/provider/DataflowControllerProvider.java M asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/recordgroup/RecordGroupLengthRange.java M asterix-fuzzyjoin/src/main/java/org/apache/asterix/fuzzyjoin/tokenorder/TokenLoad.java M asterix-installer/src/main/java/org/apache/asterix/installer/command/HelpCommand.java M asterix-maven-plugins/record-manager-generator-maven-plugin/src/main/java/org/apache/asterix/recordmanagergenerator/RecordManagerGeneratorMojo.java M asterix-om/src/main/java/org/apache/asterix/om/types/runtime/RuntimeRecordTypeInfo.java M asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/common/SimilarityJaccardEvaluator.java 13 files changed, 91 insertions(+), 94 deletions(-) Approvals: abdullah alamoudi: Looks good to me, approved Jenkins: Verified 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; -- To view, visit https://asterix-gerrit.ics.uci.edu/715 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8927126f505481e83dd5b9e6e5ccd75bb67d8188 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Michael Blow <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]> Gerrit-Reviewer: abdullah alamoudi <[email protected]>
