Skip to content

Commit

Permalink
[JENKINS-41795] Report event origins
Browse files Browse the repository at this point in the history
  • Loading branch information
stephenc committed Feb 7, 2017
1 parent d176a40 commit 54ca22c
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 43 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -66,7 +66,7 @@

<properties>
<jenkins.version>1.642.3</jenkins.version>
<scm-api.version>2.0.2</scm-api.version>
<scm-api.version>2.0.3-20170207.105042-1</scm-api.version>
</properties>

<repositories>
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/jenkins/branch/BranchEventCause.java
Expand Up @@ -42,9 +42,11 @@ public final class BranchEventCause extends Cause {
private transient MultiBranchProject<?, ?> multiBranchProject;

private final long timestamp;
private final String origin;

BranchEventCause(SCMEvent<?> event) {
timestamp = event.getTimestamp();
origin = event.getOrigin();
}

/**
Expand All @@ -62,6 +64,10 @@ public Date getTimestamp() {
return new Date(timestamp);
}

public String getOrigin() {
return origin;
}

/**
* {@inheritDoc}
*/
Expand Down
68 changes: 45 additions & 23 deletions src/main/java/jenkins/branch/MultiBranchProject.java
Expand Up @@ -1071,9 +1071,10 @@ public void onSCMHeadEvent(final SCMHeadEvent<?> event) {
TaskListener global = globalEventsListener();
String eventClass = event.getClass().getName();
String eventType = event.getType().name();
String eventOrigin = event.getOrigin();
long eventTimestamp = event.getTimestamp();
global.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
System.currentTimeMillis(), eventClass, eventType,
global.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
System.currentTimeMillis(), eventClass, eventType, eventOrigin,
eventTimestamp);
LOGGER.log(Level.FINE, "{0} {1} {2,date} {2,time}: onSCMHeadEvent",
new Object[]{
Expand All @@ -1085,18 +1086,34 @@ public void onSCMHeadEvent(final SCMHeadEvent<?> event) {
// to ensure that other sources do not want to take ownership and also to ensure that the dead branch
// strategy is enforced correctly
if (SCMEvent.Type.CREATED == event.getType()) {
matchCount = processHeadCreate(event, global, eventClass, eventType, eventTimestamp, matchCount);
matchCount = processHeadCreate(
event,
global,
eventClass,
eventType,
eventOrigin,
eventTimestamp,
matchCount
);
} else if (SCMEvent.Type.UPDATED == event.getType() || SCMEvent.Type.REMOVED == event.getType()) {
matchCount = processHeadUpdate(event, global, eventClass, eventType, eventTimestamp, matchCount);
matchCount = processHeadUpdate(
event,
global,
eventClass,
eventType,
eventOrigin,
eventTimestamp,
matchCount
);
}
global.getLogger().format("[%tc] Finished processing %s %s event with timestamp %tc. Matched %d.%n",
System.currentTimeMillis(), eventClass, eventType,
global.getLogger().format("[%tc] Finished processing %s %s event from %s with timestamp %tc. Matched %d.%n",
System.currentTimeMillis(), eventClass, eventType, eventOrigin,
eventTimestamp, matchCount);

}

private int processHeadCreate(SCMHeadEvent<?> event, TaskListener global, String eventClass, String eventType,
long eventTimestamp, int matchCount) {
String eventOrigin, long eventTimestamp, int matchCount) {
Set<String> sourceIds = new HashSet<>();
for (MultiBranchProject<?, ?> p : Jenkins.getActiveInstance().getAllItems(MultiBranchProject.class)) {
sourceIds.clear();
Expand Down Expand Up @@ -1218,8 +1235,8 @@ private int processHeadCreate(SCMHeadEvent<?> event, TaskListener global, String
listener = new LogTaskListener(LOGGER, Level.FINE);
}
long start = System.currentTimeMillis();
listener.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
start, eventClass, eventType, eventTimestamp);
listener.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
start, eventClass, eventType, eventOrigin, eventTimestamp);
ChildObserver childObserver = p.createEventsChildObserver();
try {
for (SCMSource source : p.getSCMSources()) {
Expand All @@ -1242,15 +1259,17 @@ p.new SCMHeadObserverImpl(
e.printStackTrace(listener.error(e.getMessage()));
} finally {
long end = System.currentTimeMillis();
listener.getLogger().format("[%tc] %s %s event processed in %s%n",
end, eventClass, eventType, Util.getTimeSpanString(end - start));
listener.getLogger().format("[%tc] %s %s event from %s with timestamp %tc processed in %s%n",
end, eventClass, eventType, eventOrigin, eventTimestamp,
Util.getTimeSpanString(end - start));
}
}
}
return matchCount;
}

private int processHeadUpdate(SCMHeadEvent<?> event, TaskListener global, String eventClass, String eventType,
String eventOrigin,
long eventTimestamp, int matchCount) {
Map<SCMSource, SCMHead> matches = new IdentityHashMap<>();
Set<String> candidateNames = new HashSet<>();
Expand Down Expand Up @@ -1443,8 +1462,8 @@ private int processHeadUpdate(SCMHeadEvent<?> event, TaskListener global, String
listener = new LogTaskListener(LOGGER, Level.FINE);
}
long start = System.currentTimeMillis();
listener.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
start, eventClass, eventType, eventTimestamp);
listener.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
start, eventClass, eventType, eventOrigin, eventTimestamp);
ChildObserver childObserver = p.createEventsChildObserver();
try {
for (Map.Entry<SCMSource, SCMHead> m : matches.entrySet()) {
Expand Down Expand Up @@ -1490,8 +1509,9 @@ p.new SCMHeadObserverImpl(
e.printStackTrace(listener.error(e.getMessage()));
} finally {
long end = System.currentTimeMillis();
listener.getLogger().format("[%tc] %s %s event processed in %s%n",
end, eventClass, eventType, Util.getTimeSpanString(end - start));
listener.getLogger().format("[%tc] %s %s event from %s with timestamp %tc processed in %s%n",
end, eventClass, eventType, eventOrigin, eventTimestamp,
Util.getTimeSpanString(end - start));
}
} else {
// didn't match an existing branch, maybe the criteria now match against an updated branch
Expand Down Expand Up @@ -1520,8 +1540,8 @@ p.new SCMHeadObserverImpl(
listener = new LogTaskListener(LOGGER, Level.FINE);
}
long start = System.currentTimeMillis();
listener.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
start, eventClass, eventType, eventTimestamp);
listener.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
start, eventClass, eventType, eventOrigin, eventTimestamp);
ChildObserver childObserver = p.createEventsChildObserver();
try {
for (SCMSource source : p.getSCMSources()) {
Expand All @@ -1545,8 +1565,10 @@ p.new SCMHeadObserverImpl(
e.printStackTrace(listener.error(e.getMessage()));
} finally {
long end = System.currentTimeMillis();
listener.getLogger().format("[%tc] %s %s event processed in %s%n",
end, eventClass, eventType, Util.getTimeSpanString(end - start));
listener.getLogger().format(
"[%tc] %s %s event from %s with timestamp %tc processed in %s%n",
end, eventClass, eventType, eventOrigin, eventTimestamp,
Util.getTimeSpanString(end - start));
}
}
}
Expand All @@ -1560,9 +1582,9 @@ p.new SCMHeadObserverImpl(
@Override
public void onSCMSourceEvent(SCMSourceEvent<?> event) {
TaskListener global = globalEventsListener();
global.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
global.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp());
event.getOrigin(), event.getTimestamp());
int matchCount = 0;
// not interested in creation as that is an event for org folders
// not interested in removal as that is an event for org folders
Expand Down Expand Up @@ -1630,9 +1652,9 @@ public void onSCMSourceEvent(SCMSourceEvent<?> event) {
}
}
}
global.getLogger().format("[%tc] Finished processing %s %s event with timestamp %tc. Matched %d.%n",
global.getLogger().format("[%tc] Finished processing %s %s event from %s with timestamp %tc. Matched %d.%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp(), matchCount);
event.getOrigin(), event.getTimestamp(), matchCount);
}

}
Expand Down
42 changes: 24 additions & 18 deletions src/main/java/jenkins/branch/OrganizationFolder.java
Expand Up @@ -892,9 +892,9 @@ public TaskListener globalEventsListener() {
@Override
public void onSCMHeadEvent(SCMHeadEvent<?> event) {
TaskListener global = globalEventsListener();
global.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
global.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp());
event.getOrigin(), event.getTimestamp());
int matchCount = 0;
if (CREATED == event.getType() || UPDATED == event.getType()) {
for (OrganizationFolder p : Jenkins.getActiveInstance().getAllItems(OrganizationFolder.class)) {
Expand Down Expand Up @@ -934,24 +934,27 @@ public void onSCMHeadEvent(SCMHeadEvent<?> event) {
}
ChildObserver childObserver = p.createEventsChildObserver();
long start = System.currentTimeMillis();
listener.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
start, event.getClass().getName(), event.getType().name(), event.getTimestamp());
listener.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
start, event.getClass().getName(), event.getType().name(), event.getOrigin(),
event.getTimestamp());
try {
navigator.visitSources(p.new SCMSourceObserverImpl(listener, childObserver, event), event);
} catch (IOException | InterruptedException e) {
e.printStackTrace(listener.error(e.getMessage()));
} finally {
long end = System.currentTimeMillis();
listener.getLogger().format("[%tc] %s %s event processed in %s%n",
listener.getLogger().format(
"[%tc] %s %s event from %s with timestamp %tc processed in %s%n",
end, event.getClass().getName(), event.getType().name(),
event.getOrigin(), event.getTimestamp(),
Util.getTimeSpanString(end - start));
}
}
}
}
global.getLogger().format("[%tc] Finished processing %s %s event with timestamp %tc. Matched %d.%n",
global.getLogger().format("[%tc] Finished processing %s %s event from %s with timestamp %tc. Matched %d.%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp(), matchCount);
event.getOrigin(), event.getTimestamp(), matchCount);

}

Expand All @@ -961,9 +964,9 @@ public void onSCMHeadEvent(SCMHeadEvent<?> event) {
@Override
public void onSCMNavigatorEvent(SCMNavigatorEvent<?> event) {
TaskListener global = globalEventsListener();
global.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
global.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp());
event.getOrigin(), event.getTimestamp());
int matchCount = 0;
if (UPDATED == event.getType()) {
Set<SCMNavigator> matches = new HashSet<>();
Expand Down Expand Up @@ -1021,9 +1024,9 @@ public void onSCMNavigatorEvent(SCMNavigatorEvent<?> event) {
}
}
}
global.getLogger().format("[%tc] Finished processing %s %s event with timestamp %tc. Matched %d.%n",
global.getLogger().format("[%tc] Finished processing %s %s event from %s with timestamp %tc. Matched %d.%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp(), matchCount);
event.getOrigin(), event.getTimestamp(), matchCount);
}

/**
Expand All @@ -1032,9 +1035,9 @@ public void onSCMNavigatorEvent(SCMNavigatorEvent<?> event) {
@Override
public void onSCMSourceEvent(SCMSourceEvent<?> event) {
TaskListener global = globalEventsListener();
global.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
global.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp());
event.getOrigin(), event.getTimestamp());
int matchCount = 0;
if (CREATED == event.getType()) {
for (OrganizationFolder p : Jenkins.getActiveInstance().getAllItems(OrganizationFolder.class)) {
Expand All @@ -1056,8 +1059,9 @@ public void onSCMSourceEvent(SCMSourceEvent<?> event) {
}
ChildObserver childObserver = p.createEventsChildObserver();
long start = System.currentTimeMillis();
listener.getLogger().format("[%tc] Received %s %s event with timestamp %tc%n",
start, event.getClass().getName(), event.getType().name(), event.getTimestamp());
listener.getLogger().format("[%tc] Received %s %s event from %s with timestamp %tc%n",
start, event.getClass().getName(), event.getType().name(),
event.getOrigin(), event.getTimestamp());
try {
for (SCMNavigator n : p.getSCMNavigators()) {
if (event.isMatch(n)) {
Expand All @@ -1072,17 +1076,19 @@ public void onSCMSourceEvent(SCMSourceEvent<?> event) {
e.printStackTrace(listener.error(e.getMessage()));
} finally {
long end = System.currentTimeMillis();
listener.getLogger().format("[%tc] %s %s event processed in %s%n",
listener.getLogger().format(
"[%tc] %s %s event from %s with timestamp %tc processed in %s%n",
end, event.getClass().getName(), event.getType().name(),
event.getOrigin(), event.getTimestamp(),
Util.getTimeSpanString(end - start));
}

}
}
}
global.getLogger().format("[%tc] Finished processing %s %s event with timestamp %tc. Matched %d.%n",
global.getLogger().format("[%tc] Finished processing %s %s event from %s with timestamp %tc. Matched %d.%n",
System.currentTimeMillis(), event.getClass().getName(), event.getType().name(),
event.getTimestamp(), matchCount);
event.getOrigin(), event.getTimestamp(), matchCount);

}
}
Expand Down
Expand Up @@ -28,10 +28,12 @@ THE SOFTWARE.
<j:set var="url" value="${it.indexingUrl}"/>
<j:choose>
<j:when test="${url != null}">
<a href="${rootURL}/${url}events">${%blurb(it.timestamp)}</a>
<a href="${rootURL}/${url}events" title="${%origin(it.origin)}">${%blurb(it.timestamp)}</a>
</j:when>
<j:otherwise>
<span title="${%origin(it.origin)}">
${%blurb(it.timestamp)}
</span>
</j:otherwise>
</j:choose>
</j:jelly>
@@ -1 +1,2 @@
blurb=Branch event at {0,time} on {0,date}
origin=Origin: {0}

0 comments on commit 54ca22c

Please sign in to comment.