Changeset e8792002a292…
Parent 1d21f02417e3…
by Quentin Schroeder <quentin@fogcreek.com>
Changes to one file · Browse files at e8792002a292 Showing diff from parent 1d21f02417e3 Diff from another changeset...
|
|
@@ -13,76 +13,107 @@ # 2.9.x. It simply hits the URLs that are provided via the Queue Stats page to reenqueue all failed tasks
# as well as all currently running tasks (since they can get stuck running sometimes). It should be used
# when the page at http://localhost:56785/ indicates that the queue is choking.
-# Requirements: This script must be run on the same server that is hosting the Kiln Queue.
+# Requirements: PowerShell v2.0
# Parameters: destroyFailures - A switch to destroy all failures instead of reenqueuing them.
-param( [switch]$destroyFailures );
+
+param( [string]$qs_host = "localhost", # This will almost always have to be run directly from the server
+ [switch]$destroyFailures, # Add this switch parameter to destroy all failed tasks
+ [switch]$retryFailures, # Add this switch parameter to reenqueue all failed tasks
+ [switch]$destroyRunning, # Add this switch parameter to destroyed all currently running tasks
+ [switch]$retryRunning # Add this switch parameter to reenqueue all currently running tasks
+ )
function main() {
- # This will almost always have to be run directly from the server
- $qs_host = "localhost";
+ if ($destroyFailures -and $retryFailures)
+ {
+ write-host "Cannot choose to both destroy AND retry failed tasks, please select only one option."
+ }
- write-host ("Grabbing queue stats from http://{0}:56785/stats.json" -f $qs_host);
- $response = (New-Object System.Net.WebClient).DownloadString("http://{0}:56785/stats.json" -f $qs_host);
+ if ($destroyRunning -and $retryRunning)
+ {
+ write-host "Cannot choose to both destroy AND retry running tasks, please select only one option."
+ }
+
+
+ write-host ("Reading queue stats from http://{0}:56785/stats.json" -f $qs_host)
+ $response = (New-Object System.Net.WebClient).DownloadString("http://{0}:56785/stats.json" -f $qs_host)
if ($?) {write-host " Stats retrieved successfully.`n"}
- # $stats = $response | ConvertFrom-JSON; # This needs Powershell 3.0, so we parse it to XML instead
$stats = Convert-JsonToXml($response)
- $failures = $stats.root.failures;
- $runningTasks = $stats.root.runningTasks;
- $runningCount = $runningTasks.childnodes.count;
- $failCount = $failures.childnodes.count;
+ $failures = $stats.root.failures
+ $runningTasks = $stats.root.runningTasks
+ $runningCount = $runningTasks.childnodes.count
+ $failCount = $failures.childnodes.count
- write-host "Reenqueueing $failCount failures...";
+ write-host "Found $failCount failures..."
$i = 0
- if ($failCount -gt 0) {
+ if (($failCount -gt 0) -and ($destroyFailures -or $retryFailures)) {
foreach ($failure in $failures.item) {
# Try both formats of the JSON (changed for 2.9.58)
if ($failure."#text")
{
- $failure = $failure."#text";
+ $failure = $failure."#text"
}
elseif ($failure.id."#text")
{
- $failure = $failure.id."#text";
+ $failure = $failure.id."#text"
}
else
{
- $i += 1;
- write-host "`n$i/$failCount (NOT FOUND)...";
+ $i += 1
+ write-host "`n$i/$failCount (NOT FOUND)..."
continue
}
- $i += 1;
- write-host "`n$i/$failCount ($failure)...";
- Reenqueue-Task $qs_host $failure $destroyFailures;
+ $i += 1
+ write-host "`n$i/$failCount ($failure)..."
+ Process-Task $qs_host $failure $destroyFailures
}
}
- write-host "`nReenqueueing $runningCount running tasks...";
+
+ write-host "`n-------`n"
+
+
+ write-host "Found $runningCount running tasks..."
$i = 0
- if ($runningCount -gt 0) {
+ if (($runningCount -gt 0) -and ($destroyRunning -or $retryRunning)) {
foreach ($runningTask in $runningTasks.item) {
- if ($newer) {$runningTask = $runningTask.hash."#text"; }
- else { $runningTask = $runningTask.id."#text"; }
- $i += 1;
- write-host "`n$i/$runningCount ($runningTask)...";
- Reenqueue-Task $qs_host $runningTask;
+ # Try both formats of the JSON (changed for 2.9.58)
+ if ($runningTask.id."#text")
+ {
+ $runningTask = $runningTask.id."#text"
+ }
+ elseif ($runningTask.hash."#text")
+ {
+ $runningTask = $runningTask.hash."#text"
+ }
+ else
+ {
+ $i += 1
+ write-host "`n$i/$runningCount (NOT FOUND)..."
+ continue
+ }
+ $i += 1
+ write-host "`n$i/$runningCount ($runningTask)..."
+ Process-Task $qs_host $runningTask $destroyRunning
}
}
}
-function Reenqueue-Task ($qs_host, $task, $destroy = $false) {
-
- $URI = "http://{0}:56785/reenqueue?id={1}" -f ($qs_host, $task);
+function Process-Task ($qs_host, $task, $destroy = $false)
+{
+ if (!($destroy)) { write-host "Retrying task!" }
+ $URI = "http://{0}:56785/reenqueue?id={1}" -f ($qs_host, $task)
if ($destroy) {
- write-host "DESTROYING TASK $task!";
- $URI = "http://{0}:56785/destroy?id={1}" -f ($qs_host, $task);
+ write-host "Destroying task!"
+ $URI = "http://{0}:56785/destroy?id={1}" -f ($qs_host, $task)
}
- Execute-HTTPPostCommand $URI "a=1";
+ Execute-HTTPPostCommand $URI "a=1"
if (!($?)) {
- write-host "$task failed!";
+ write-host "Error!"
}
}
@@ -136,7 +167,7 @@
try
{
- [System.Net.WebResponse] $resp = $webRequest.GetResponse();
+ [System.Net.WebResponse] $resp = $webRequest.GetResponse()
}
catch [Net.WebException]
{
@@ -145,11 +176,11 @@
- $rs = $resp.GetResponseStream();
- [System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs;
- [string] $results = $sr.ReadToEnd();
+ $rs = $resp.GetResponseStream()
+ [System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs
+ [string] $results = $sr.ReadToEnd()
- return $results;
+ return $results
}
@@ -157,5 +188,5 @@
-# Do the work of reenqueuing everything
-main;
\ No newline at end of file+ # Do everything
+main
\ No newline at end of file |
Loading...