You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/06/03 07:11:40 UTC

[camel] branch master updated: CAMEL-13601 - Fix camel-jira client close and add logging https://issues.apache.org/jira/browse/CAMEL-13601

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 3fa4b36  CAMEL-13601 - Fix camel-jira client close and add logging https://issues.apache.org/jira/browse/CAMEL-13601
3fa4b36 is described below

commit 3fa4b3630d573bb177fedacfe2364dd5354cc454
Author: Claudio Miranda <cl...@claudius.com.br>
AuthorDate: Thu May 30 17:18:52 2019 -0300

    CAMEL-13601 - Fix camel-jira client close and add logging
    https://issues.apache.org/jira/browse/CAMEL-13601
---
 .../apache/camel/component/jira/JiraEndpoint.java  |  4 ++-
 .../jira/consumer/AbstractJiraConsumer.java        |  4 +--
 .../jira/consumer/NewCommentsConsumer.java         | 37 ++++++++++++++--------
 .../component/jira/consumer/NewIssuesConsumer.java |  7 ++--
 parent/pom.xml                                     |  2 +-
 5 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
index f26758c..7c0eca8 100644
--- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
+++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
@@ -111,7 +111,9 @@ public class JiraEndpoint extends DefaultEndpoint {
     @Override
     protected void doStop() throws Exception {
         super.doStop();
-        client.close();
+        if (client != null) {
+            client.close();
+        }
     }
 
     @Override
diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/AbstractJiraConsumer.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/AbstractJiraConsumer.java
index b789be9..909dee2 100644
--- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/AbstractJiraConsumer.java
+++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/AbstractJiraConsumer.java
@@ -47,7 +47,7 @@ public abstract class AbstractJiraConsumer extends ScheduledPollConsumer {
 
     // Ignore maxResults if it's <= 0.
     protected List<Issue> getIssues(String jql, int start, int maxPerQuery, int maxResults) {
-        LOG.info("Indexing current JIRA issues...");
+        LOG.debug("Start indexing current JIRA issues...");
 
         List<Issue> issues = new ArrayList<>();
         while (true) {
@@ -66,7 +66,7 @@ public abstract class AbstractJiraConsumer extends ScheduledPollConsumer {
 
             start += maxPerQuery;
         }
-
+        LOG.debug("End indexing current JIRA issues. {} issues indexed.", issues.size());
         return issues;
     }
 
diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewCommentsConsumer.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewCommentsConsumer.java
index 5a0985d..45b5e46 100644
--- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewCommentsConsumer.java
+++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewCommentsConsumer.java
@@ -16,8 +16,8 @@
  */
 package org.apache.camel.component.jira.consumer;
 
+import java.util.ArrayList;
 import java.util.List;
-import java.util.Stack;
 
 import com.atlassian.jira.rest.client.api.domain.Comment;
 import com.atlassian.jira.rest.client.api.domain.Issue;
@@ -43,15 +43,15 @@ public class NewCommentsConsumer extends AbstractJiraConsumer {
 
     public NewCommentsConsumer(JiraEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
-        LOG.info("JIRA NewCommentsConsumer: Indexing current issue comments...");
-        getComments(false);
     }
 
     @Override
     protected int poll() throws Exception {
-        Stack<Comment> newComments = getComments(true);
-        while (!newComments.empty()) {
-            Comment newComment = newComments.pop();
+        List<Comment> newComments = getComments();
+        int max = newComments.size() - 1;
+        // retrieve from last to first item LIFO
+        for (int i = max; i > -1; i--) {
+            Comment newComment = newComments.get(i);
             Exchange e = getEndpoint().createExchange();
             e.getIn().setBody(newComment);
             getProcessor().process(e);
@@ -59,22 +59,33 @@ public class NewCommentsConsumer extends AbstractJiraConsumer {
         return newComments.size();
     }
 
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+        // read the actual comments, the next poll outputs only the new comments added after the route start
+        getComments();
+    }
+
     // In the end, we want *new* comments oldest to newest.
-    private Stack<Comment> getComments(boolean loadComments) {
-        Stack<Comment> newComments = new Stack<>();
+    @SuppressWarnings("ConstantConditions")
+    private List<Comment> getComments() {
+        LOG.debug("Start: Jira NewCommentsConsumer: retrieving issue comments. Last comment id: {}", lastCommentId);
+        List<Comment> newComments = new ArrayList<>();
         List<Issue> issues = getIssues();
         for (Issue issue : issues) {
             Issue fullIssue = client().getIssueClient().getIssue(issue.getKey()).claim();
             for (Comment comment : fullIssue.getComments()) {
-                //noinspection ConstantConditions
                 if (comment.getId() > lastCommentId) {
-                    lastCommentId = comment.getId();
-                    if (loadComments) {
-                        newComments.push(comment);
-                    }
+                    newComments.add(comment);
                 }
             }
         }
+        for (Comment c: newComments) {
+            if (c.getId() > lastCommentId) {
+                lastCommentId = c.getId();
+            }
+        }
+        LOG.debug("End: Jira NewCommentsConsumer: retrieving issue comments. {} new comments since last run.", newComments.size());
         return newComments;
     }
 }
diff --git a/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewIssuesConsumer.java b/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewIssuesConsumer.java
index e06667b..9cb123c 100644
--- a/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewIssuesConsumer.java
+++ b/components/camel-jira/src/main/java/org/apache/camel/component/jira/consumer/NewIssuesConsumer.java
@@ -32,14 +32,17 @@ import org.apache.camel.component.jira.JiraEndpoint;
 public class NewIssuesConsumer extends AbstractJiraConsumer {
 
     private final String jql;
-
     private long latestIssueId = -1;
 
     public NewIssuesConsumer(JiraEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
-
         jql = endpoint.getJql() + " ORDER BY key desc";
+    }
 
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+        // read the actual issues, the next poll outputs only the new issues added after the route start
         // grab only the top
         List<Issue> issues = getIssues(jql, 0, 1, 1);
         // in case there aren't any issues...
diff --git a/parent/pom.xml b/parent/pom.xml
index 5e60511..6f355dd 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -384,7 +384,7 @@
         <jgroups-raft-jgroups-version>4.0.15.Final</jgroups-raft-jgroups-version>
         <jgroups-raft-leveldbjni-version>1.8</jgroups-raft-leveldbjni-version>
         <jgroups-raft-mapdb-version>1.0.8</jgroups-raft-mapdb-version>
-        <jira-guava-version>26.0-jre</jira-guava-version>
+        <jira-guava-version>20.0</jira-guava-version>
         <jira-rest-client-api-version>5.1.0</jira-rest-client-api-version>
         <libthrift-version>0.12.0</libthrift-version>
         <jing-bundle-version>20030619_5</jing-bundle-version>