Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F319890
file
No One
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
hach-que
Feb 26 2015, 2:55 AM
2015-02-26 02:55:42 (UTC+0)
Size
2 KB
Referenced Files
None
Subscribers
None
file
View Options
#!/usr/bin/env php
<?php
$root
=
dirname
(
dirname
(
dirname
(
__FILE__
)));
require_once
$root
.
'/scripts/__init_script__.php'
;
$args
=
new
PhutilArgumentParser
(
$argv
);
$args
->
setSynopsis
(
<<<EOSYNOPSIS
**release_unworked_tasks.php** [__options__]
Release all unworked tasks that are currently leased
on this machine. This script should only be used when
recovering from a MySQL failure.
EOSYNOPSIS
);
$args
->
parseStandardArguments
();
$args
->
parse
(
array
(
array
(
'name'
=>
'release'
,
'help'
=>
'Actually release leases'
,
),
));
list
(
$stdout
,
$stderr
)
=
id
(
new
ExecFuture
(
'ps aux | grep PhabricatorTaskmasterDaemon | awk
\'
{print $2}
\'
'
))
->
resolvex
();
$valid_pids_str
=
phutil_split_lines
(
$stdout
);
$valid_pids
=
array
();
foreach
(
$valid_pids_str
as
$s
)
{
$valid_pids
[]
=
(
int
)
$s
;
}
$host
=
php_uname
(
'n'
);
$host
=
id
(
new
PhutilUTF8StringTruncator
())
->
setMaximumBytes
(
32
)
->
setTerminator
(
'...'
)
->
truncateString
(
$host
);
$table
=
new
PhabricatorWorkerActiveTask
();
$conn_w
=
$table
->
establishConnection
(
'w'
);
$rows
=
queryfx_all
(
$conn_w
,
'SELECT id, leaseOwner FROM %T WHERE leaseOwner LIKE %~'
,
$table
->
getTableName
(),
$host
);
$leases_to_release
=
array
();
foreach
(
$rows
as
$row
)
{
$valid
=
false
;
foreach
(
$valid_pids
as
$pid
)
{
$pid_match
=
$pid
.
':'
;
$pid_match_len
=
strlen
(
$pid_match
);
if
(
substr
(
$row
[
'leaseOwner'
],
0
,
$pid_match_len
)
===
$pid_match
)
{
$valid
=
true
;
break
;
}
}
if
(!
$valid
)
{
$leases_to_release
[]
=
$row
;
}
}
if
(
$args
->
getArg
(
'release'
))
{
echo
'Releasing leases...'
.
"
\n
"
;
foreach
(
$leases_to_release
as
$lease
)
{
echo
'Releasing '
.
$lease
[
'id'
].
"
\n
"
;
queryfx
(
$conn_w
,
'UPDATE %T SET leaseExpires = 0 WHERE id = %d'
,
$table
->
getTableName
(),
$lease
[
'id'
]);
}
echo
'Complete!'
.
"
\n
"
;
}
else
{
echo
'Performing dry-run (use --release to actually release leases):'
.
"
\n
"
;
foreach
(
$leases_to_release
as
$lease
)
{
echo
'Would release lease '
.
$lease
[
'id'
].
", owner "
.
$lease
[
'leaseOwner'
].
"
\n
"
;
}
}
exit
(
0
);
File Metadata
Details
Attached
Mime Type
text/plain; charset=utf-8
Storage Engine
amazon-s3
Storage Format
Raw Data
Storage Handle
phabricator/6x/ts/dmhp7oefh45yktjk
Default Alt Text
file (2 KB)
Attached To
Mode
P1730 (An Untitled Masterwork)
Attached
Detach File
Event Timeline
Log In to Comment