2017-02-17 2 views
1

Ich habe ein JIRA-Listener-Plugin, das Problemereignisse erfasst, prüft, ob es sich um ein Ereignis "erstelltes Problem" handelt, und eine Aktion ausführt. Aus irgendeinem Grund scheint eine bestimmte Codezeile mehrere Male vor dem Anhalten zu laufen (das weiß ich, da bestimmte Logging-Meldungen mehrmals angezeigt werden, die nur einmal angezeigt werden sollten). Hier ist die jist von dem, was ich spreche:JIRA Plugin, das mehrmals hintereinander eine Zeile Code ausführt

onCreatedEvent(IssueEvent event) { 
    Issue issue = event.getIssue(); 
    if (event.getEventTypeId().equals(EventType.ISSUE_CREATED_ID) { 
     // Build needed object (custom class) -> this is the line running multiple times 
     BetterIssue betterIssue = BetterIssueFactory.setIssue(issue).build(); 
     BetterIssueDAO.createBetterIssue(betterIssue); 
     // More code below... 
    } 
} 

Idee von dem, was BetterIssueFactory wie folgt aussieht:

public abstract BetterIssueFactory() { 
    private static Issue issue; 
    public static void build() { 
     // Grabs data from JIRA issue using ComponentAccessor... 
    } 
    public void setIssue(Issue issue) { 
     this.issue = issue; 
    } 
    // More code... 
} 

Meine Vermutung ist, dass die DAO (die einen SQL-Server zugreift und legt dieses Objekt in Eine Tabelle) hält diese Codezeile irgendwie davon ab, ordnungsgemäß ausgeführt zu werden, bis die Abfrage vollständig ausgeführt wurde. HINWEIS: Kein Code, den ich gepostet habe, öffnet einen separaten Thread, um dies zu tun. Dies wird alles nacheinander ausgeführt (es sei denn, PreparedStatement.execute/executeQuery öffnet einen neuen Thread).

Antwort

0

Sieht aus wie mein ursprüngliches Prädikat von doppeltem Code ausgeführt wurde, war falsch. Ich habe nicht gesehen, wo der Code mehrfach ausgeführt werden konnte, wenn eine bestimmte Bedingung falsch war. Schließen, weil die erste Frage falsch ist.

Verwandte Themen