|
From: <ha...@us...> - 2007-08-24 00:51:43
|
Revision: 1723
http://cogkit.svn.sourceforge.net/cogkit/?rev=1723&view=rev
Author: hategan
Date: 2007-08-23 17:51:42 -0700 (Thu, 23 Aug 2007)
Log Message:
-----------
some failures didn't properly clean up
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/LateBindingScheduler.java
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/WeightedHostScoreScheduler.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/LateBindingScheduler.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/LateBindingScheduler.java 2007-08-24 00:50:52 UTC (rev 1722)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/LateBindingScheduler.java 2007-08-24 00:51:42 UTC (rev 1723)
@@ -9,8 +9,10 @@
*/
package org.globus.cog.karajan.scheduler;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
@@ -297,6 +299,9 @@
}
protected void failTask(Task t, String message, Exception e) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Failing task " + t + " because of " + message, e);
+ }
Status s = new StatusImpl();
s.setPrevStatusCode(t.getStatus().getStatusCode());
s.setStatusCode(Status.FAILED);
@@ -305,6 +310,8 @@
t.setStatus(s);
fireJobStatusChangeEvent(t, s);
}
+
+ private List contactTran = new ArrayList();
void submitUnbound(Task t) throws NoFreeResourceException {
try {
@@ -312,6 +319,7 @@
return;
}
checkTaskLoadConditions(t);
+ contactTran.clear();
Service[] services = new Service[t.getRequiredServices()];
Contact[] contacts;
Object constraints = getConstraints(t);
@@ -319,6 +327,7 @@
contacts = (Contact[]) constraints;
if (contacts == null) {
contacts = new Contact[] { this.getNextContact(t) };
+ contactTran.add(contacts[0]);
}
}
else {
@@ -326,13 +335,15 @@
for (int i = 0; i < t.getRequiredServices(); i++) {
if (t.getService(i) == null) {
contacts[i] = this.getNextContact(t);
+ contactTran.add(contacts[i]);
}
}
}
-
+
for (int i = 0; i < services.length; i++) {
if (contacts[i] != null && contacts[i].isVirtual()) {
contacts[i] = resolveContact(t, contacts[i]);
+ contactTran.add(contacts[i]);
}
try {
services[i] = t.getService(i);
@@ -357,11 +368,15 @@
((JobSpecification) t.getSpecification()).setAttribute("project", project);
}
}
-
+
submitBoundToServices(t, contacts, services);
logger.debug("No host specified");
}
catch (NoFreeResourceException e) {
+ Iterator i = contactTran.iterator();
+ while (i.hasNext()) {
+ releaseContact((Contact) i.next());
+ }
throw e;
}
catch (Exception e) {
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/WeightedHostScoreScheduler.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/WeightedHostScoreScheduler.java 2007-08-24 00:50:52 UTC (rev 1722)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/scheduler/WeightedHostScoreScheduler.java 2007-08-24 00:51:42 UTC (rev 1723)
@@ -109,7 +109,7 @@
wh.setDelayedDelta(wh.getDelayedDelta() + factor);
}
- protected double factor(double score, double factor) {
+ protected final double factor(double score, double factor) {
return score + factor;
}
@@ -186,10 +186,13 @@
if (logger.isDebugEnabled()) {
logger.debug("Next contact: " + selected);
}
+
sorted.changeLoad(selected, 1);
selected.setDelayedDelta(successFactor);
return selected.getHost();
}
+
+
public synchronized void releaseContact(Contact contact) {
if (logger.isDebugEnabled()) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|