This reverts commit 66c98f51f56761786f55aec5ab0fcd90e3fa4594.
Change-Id: I45f03e1793472792260e89fe5683a5c40fd99b7f
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/4374
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: gerrit-photon <photon-checkins@vmware.com>
... | ... |
@@ -7,14 +7,13 @@ from Queue import PriorityQueue |
7 | 7 |
from SpecData import SPECS |
8 | 8 |
|
9 | 9 |
class Scheduler(object): |
10 |
- |
|
10 |
+ |
|
11 | 11 |
lock=threading.Lock() |
12 | 12 |
listOfAlreadyBuiltPackages=[] |
13 | 13 |
listOfPackagesToBuild=[] |
14 | 14 |
listOfPackagesCurrentlyBuilding=[] |
15 | 15 |
sortedList=[] |
16 |
- listOfPackagesNextToBuild=[] |
|
17 |
- queueOfPackagesNextToBuild=PriorityQueue() |
|
16 |
+ listOfPackagesNextToBuild=PriorityQueue() |
|
18 | 17 |
listOfFailedPackages=[] |
19 | 18 |
alldependencyGraph = {} |
20 | 19 |
dependencyGraph = {} |
... | ... |
@@ -24,14 +23,14 @@ class Scheduler(object): |
24 | 24 |
logger=None |
25 | 25 |
event=None |
26 | 26 |
stopScheduling=False |
27 |
- |
|
27 |
+ |
|
28 | 28 |
@staticmethod |
29 | 29 |
def setEvent(event): |
30 | 30 |
Scheduler.event=event |
31 |
- |
|
31 |
+ |
|
32 | 32 |
@staticmethod |
33 | 33 |
def setLog(logName,logPath): |
34 |
- Scheduler.logger = Logger.getLogger(logName, logPath) |
|
34 |
+ Scheduler.logger = Logger.getLogger(logName, logPath) |
|
35 | 35 |
|
36 | 36 |
@staticmethod |
37 | 37 |
def getBuildRequiredPackages(package): |
... | ... |
@@ -108,7 +107,12 @@ class Scheduler(object): |
108 | 108 |
|
109 | 109 |
@staticmethod |
110 | 110 |
def setPriorities(): |
111 |
- Scheduler.parseWeights() |
|
111 |
+ if constants.packageWeightsPath == None: |
|
112 |
+ Scheduler.logger.info("Priority Scheduler disabled") |
|
113 |
+ Scheduler.isPriorityScheduler = 0 |
|
114 |
+ else: |
|
115 |
+ Scheduler.parseWeights() |
|
116 |
+ |
|
112 | 117 |
for package in Scheduler.sortedList: |
113 | 118 |
Scheduler.dependencyGraph[package] = {} |
114 | 119 |
Scheduler.alldependencyGraph[package] = {} |
... | ... |
@@ -129,41 +133,37 @@ class Scheduler(object): |
129 | 129 |
Scheduler.logger.info("set Priorities: Priority of all packages") |
130 | 130 |
Scheduler.logger.info(Scheduler.priorityMap) |
131 | 131 |
|
132 |
+ |
|
132 | 133 |
@staticmethod |
133 | 134 |
def setParams(sortedList,listOfAlreadyBuiltPackages): |
134 |
- if constants.packageWeightsPath == None: |
|
135 |
- Scheduler.logger.info("Priority Scheduler disabled") |
|
136 |
- Scheduler.isPriorityScheduler = 0 |
|
137 | 135 |
Scheduler.sortedList=sortedList |
138 | 136 |
Scheduler.listOfAlreadyBuiltPackages=listOfAlreadyBuiltPackages |
139 | 137 |
for x in Scheduler.sortedList: |
140 | 138 |
if x not in Scheduler.listOfAlreadyBuiltPackages or x in constants.testForceRPMS: |
141 | 139 |
Scheduler.listOfPackagesToBuild.append(x) |
142 | 140 |
Scheduler.listOfPackagesCurrentlyBuilding=[] |
143 |
- Scheduler.queueOfPackagesNextToBuild=[] |
|
141 |
+ Scheduler.listOfPackagesNextToBuild=[] |
|
144 | 142 |
Scheduler.listOfFailedPackages=[] |
145 |
- if Scheduler.isPriorityScheduler == 1: |
|
146 |
- Scheduler.setPriorities() |
|
147 |
- |
|
143 |
+ Scheduler.setPriorities() |
|
144 |
+ |
|
148 | 145 |
@staticmethod |
149 | 146 |
def getRequiredPackages(package): |
150 | 147 |
listRequiredRPMPackages=[] |
151 | 148 |
listRequiredRPMPackages.extend(SPECS.getData().getBuildRequiresForPackage(package)) |
152 | 149 |
listRequiredRPMPackages.extend(SPECS.getData().getRequiresAllForPackage(package)) |
153 |
- |
|
150 |
+ |
|
154 | 151 |
listRequiredPackages=[] |
155 | 152 |
|
156 | 153 |
for pkg in listRequiredRPMPackages: |
157 | 154 |
basePkg=SPECS.getData().getSpecName(pkg) |
158 | 155 |
if basePkg not in listRequiredPackages: |
159 | 156 |
listRequiredPackages.append(basePkg) |
160 |
- |
|
157 |
+ |
|
161 | 158 |
return listRequiredPackages |
162 |
- |
|
159 |
+ |
|
163 | 160 |
@staticmethod |
164 | 161 |
def __getListNextPackagesReadyToBuild(): |
165 |
- queueOfPackagesNextToBuild=PriorityQueue() |
|
166 |
- listOfPackagesNextToBuild=[] |
|
162 |
+ listOfPackagesNextToBuild=PriorityQueue() |
|
167 | 163 |
Scheduler.logger.info("Checking for next possible packages to build") |
168 | 164 |
for pkg in Scheduler.listOfPackagesToBuild: |
169 | 165 |
if pkg in Scheduler.listOfPackagesCurrentlyBuilding: |
... | ... |
@@ -178,13 +178,9 @@ class Scheduler(object): |
178 | 178 |
Scheduler.logger.info(reqPkg+" is not available. So we cannot build "+ pkg +" at this moment.") |
179 | 179 |
break |
180 | 180 |
if canBuild: |
181 |
+ listOfPackagesNextToBuild.put((-Scheduler.priorityMap[pkg], pkg)) |
|
181 | 182 |
Scheduler.logger.info("Adding "+ pkg +" to the schedule list") |
182 |
- if Scheduler.isPriorityScheduler: |
|
183 |
- queueOfPackagesNextToBuild.put((-Scheduler.priorityMap[pkg], pkg)) |
|
184 |
- return queueOfPackagesNextToBuild |
|
185 |
- else: |
|
186 |
- listOfPackagesNextToBuild.append(pkg) |
|
187 |
- return listOfPackagesNextToBuild |
|
183 |
+ return listOfPackagesNextToBuild |
|
188 | 184 |
|
189 | 185 |
@staticmethod |
190 | 186 |
def getNextPackageToBuild(): |
... | ... |
@@ -200,75 +196,62 @@ class Scheduler(object): |
200 | 200 |
if Scheduler.event is not None: |
201 | 201 |
Scheduler.event.set() |
202 | 202 |
|
203 |
- if 0 == Scheduler.isPriorityScheduler: |
|
204 |
- if Scheduler.listOfPackagesNextToBuild is None or len(Scheduler.listOfPackagesNextToBuild) == 0: |
|
205 |
- listOfPackagesNextToBuild=Scheduler.__getListNextPackagesReadyToBuild() |
|
206 |
- Scheduler.listOfPackagesNextToBuild=listOfPackagesNextToBuild |
|
207 |
- |
|
208 |
- if Scheduler.listOfPackagesNextToBuild is None or len(Scheduler.listOfPackagesNextToBuild) == 0: |
|
209 |
- Scheduler.logger.info("Released scheduler lock") |
|
210 |
- Scheduler.lock.release() |
|
211 |
- return None |
|
212 |
- |
|
213 |
- package=Scheduler.listOfPackagesNextToBuild.pop(0) |
|
214 |
- |
|
215 |
- if len(Scheduler.listOfPackagesNextToBuild) > 0: |
|
216 |
- ThreadPool.ThreadPool.activateWorkerThreads(len(Scheduler.listOfPackagesNextToBuild)) |
|
217 |
- else: |
|
218 |
- try: |
|
219 |
- if Scheduler.queueOfPackagesNextToBuild.qsize() == 0: |
|
220 |
- queueOfPackagesNextToBuild = Scheduler.__getListNextPackagesReadyToBuild() |
|
221 |
- Scheduler.queueOfPackagesNextToBuild = queueOfPackagesNextToBuild |
|
222 |
- except: |
|
223 |
- if len(Scheduler.queueOfPackagesNextToBuild) == 0: |
|
224 |
- queueOfPackagesNextToBuild = Scheduler.__getListNextPackagesReadyToBuild() |
|
225 |
- Scheduler.queueOfPackagesNextToBuild = queueOfPackagesNextToBuild |
|
226 |
- |
|
227 |
- if Scheduler.queueOfPackagesNextToBuild: |
|
228 |
- if Scheduler.queueOfPackagesNextToBuild.qsize() == 0: |
|
229 |
- Scheduler.logger.info("Released scheduler lock") |
|
230 |
- Scheduler.lock.release() |
|
231 |
- return None |
|
232 |
- |
|
233 |
- packageTup=Scheduler.queueOfPackagesNextToBuild.get() |
|
234 |
- |
|
235 |
- if packageTup[0] == 0: |
|
236 |
- queueOfPackagesNextToBuild = Scheduler.__getListNextPackagesReadyToBuild() |
|
237 |
- Scheduler.queueOfPackagesNextToBuild = queueOfPackagesNextToBuild |
|
238 |
- packageTup = Scheduler.queueOfPackagesNextToBuild.get() |
|
239 |
- |
|
240 |
- package = packageTup[1] |
|
241 |
- Scheduler.logger.info("PackagesNextToBuild " + str(packageTup)) |
|
242 |
- if Scheduler.queueOfPackagesNextToBuild.qsize() > 0: |
|
243 |
- ThreadPool.ThreadPool.activateWorkerThreads(Scheduler.queueOfPackagesNextToBuild.qsize()) |
|
203 |
+ try: |
|
204 |
+ if Scheduler.listOfPackagesNextToBuild.qsize() == 0: |
|
205 |
+ listOfPackagesNextToBuild = Scheduler.__getListNextPackagesReadyToBuild() |
|
206 |
+ Scheduler.listOfPackagesNextToBuild = listOfPackagesNextToBuild |
|
207 |
+ except: |
|
208 |
+ if len(Scheduler.listOfPackagesNextToBuild) == 0: |
|
209 |
+ listOfPackagesNextToBuild = Scheduler.__getListNextPackagesReadyToBuild() |
|
210 |
+ Scheduler.listOfPackagesNextToBuild = listOfPackagesNextToBuild |
|
211 |
+ |
|
212 |
+ if Scheduler.listOfPackagesNextToBuild.qsize() == 0: |
|
213 |
+ Scheduler.logger.info("Released scheduler lock") |
|
214 |
+ Scheduler.lock.release() |
|
215 |
+ return None |
|
244 | 216 |
|
217 |
+ packageTup=Scheduler.listOfPackagesNextToBuild.get() |
|
218 |
+ |
|
219 |
+ if packageTup[0] == 0 and Scheduler.isPriorityScheduler == 1: |
|
220 |
+ listOfPackagesNextToBuild = Scheduler.__getListNextPackagesReadyToBuild() |
|
221 |
+ Scheduler.listOfPackagesNextToBuild = listOfPackagesNextToBuild |
|
222 |
+ if Scheduler.listOfPackagesNextToBuild.qsize() == 0: |
|
223 |
+ Scheduler.logger.info("Released scheduler lock") |
|
224 |
+ Scheduler.lock.release() |
|
225 |
+ return None |
|
226 |
+ packageTup = Scheduler.listOfPackagesNextToBuild.get() |
|
227 |
+ |
|
228 |
+ package = packageTup[1] |
|
229 |
+ Scheduler.logger.info("PackagesNextToBuild " + str(packageTup)) |
|
230 |
+ if Scheduler.listOfPackagesNextToBuild.qsize() > 0: |
|
231 |
+ ThreadPool.ThreadPool.activateWorkerThreads(Scheduler.listOfPackagesNextToBuild.qsize()) |
|
245 | 232 |
Scheduler.logger.info("Released scheduler lock") |
246 | 233 |
Scheduler.lock.release() |
247 | 234 |
Scheduler.listOfPackagesCurrentlyBuilding.append(package) |
248 | 235 |
Scheduler.listOfPackagesToBuild.remove(package) |
249 | 236 |
return package |
250 |
- |
|
237 |
+ |
|
251 | 238 |
#can be synchronized TODO |
252 | 239 |
@staticmethod |
253 | 240 |
def notifyPackageBuildCompleted(package): |
254 | 241 |
if package in Scheduler.listOfPackagesCurrentlyBuilding: |
255 | 242 |
Scheduler.listOfPackagesCurrentlyBuilding.remove(package) |
256 | 243 |
Scheduler.listOfAlreadyBuiltPackages.append(package) |
257 |
- |
|
258 |
- |
|
244 |
+ |
|
245 |
+ |
|
259 | 246 |
#can be synchronized TODO |
260 | 247 |
@staticmethod |
261 | 248 |
def notifyPackageBuildFailed(package): |
262 | 249 |
if package in Scheduler.listOfPackagesCurrentlyBuilding: |
263 | 250 |
Scheduler.listOfPackagesCurrentlyBuilding.remove(package) |
264 | 251 |
Scheduler.listOfFailedPackages.append(package) |
265 |
- |
|
252 |
+ |
|
266 | 253 |
@staticmethod |
267 | 254 |
def isAllPackagesBuilt(): |
268 | 255 |
if len(Scheduler.listOfPackagesToBuild) == 0 : |
269 | 256 |
return True |
270 | 257 |
return False |
271 |
- |
|
258 |
+ |
|
272 | 259 |
@staticmethod |
273 | 260 |
def isAnyPackagesFailedToBuild(): |
274 | 261 |
if len(Scheduler.listOfFailedPackages) != 0: |