arvados-cli 0.1.20150224142231 → 0.1.20150227192315
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/crunch-job +56 -34
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fee9adf2c5e05f6708bcac31dde6f59bf2fe0247
|
4
|
+
data.tar.gz: 32b1e5d39a1e99b697efdb7c4a46f071c241ef4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a53ba2e71b329d22e97800f5aca9bd765f63e4155d17c4ca1883b0939dbc411a29591fa33fee741c04975b9ee4533a3b2ab0bd8814f237e29b549e32f49639e6
|
7
|
+
data.tar.gz: aab8e8575cb748acb045b39ad2d24ba0ef503468e3a503c3529fc98eb21ea44334dfc8a22eecc3615649af496b40142ad03661386c3cba4746ea8c7db5ff5966
|
data/bin/crunch-job
CHANGED
@@ -941,7 +941,7 @@ if (!$collated_output) {
|
|
941
941
|
Log (undef, "Failed to write output collection");
|
942
942
|
}
|
943
943
|
else {
|
944
|
-
Log(undef, "output
|
944
|
+
Log(undef, "job output $collated_output");
|
945
945
|
$Job->update_attributes('output' => $collated_output);
|
946
946
|
}
|
947
947
|
|
@@ -1037,7 +1037,6 @@ sub reapchildren
|
|
1037
1037
|
if (!$temporary_fail || $Jobstep->{'failures'} >= 3) {
|
1038
1038
|
# Give up on this task, and the whole job
|
1039
1039
|
$main::success = 0;
|
1040
|
-
$main::please_freeze = 1;
|
1041
1040
|
}
|
1042
1041
|
# Put this task back on the todo queue
|
1043
1042
|
push @jobstep_todo, $jobstepid;
|
@@ -1056,7 +1055,9 @@ sub reapchildren
|
|
1056
1055
|
$Jobstep->{'arvados_task'}->{finished_at} = strftime "%Y-%m-%dT%H:%M:%SZ", gmtime($Jobstep->{finishtime});
|
1057
1056
|
$Jobstep->{'arvados_task'}->save;
|
1058
1057
|
process_stderr ($jobstepid, $task_success);
|
1059
|
-
Log ($jobstepid, "output
|
1058
|
+
Log ($jobstepid, sprintf("task output (%d bytes): %s",
|
1059
|
+
length($Jobstep->{'arvados_task'}->{output}),
|
1060
|
+
$Jobstep->{'arvados_task'}->{output}));
|
1060
1061
|
|
1061
1062
|
close $reader{$jobstepid};
|
1062
1063
|
delete $reader{$jobstepid};
|
@@ -1252,16 +1253,19 @@ sub process_stderr
|
|
1252
1253
|
sub fetch_block
|
1253
1254
|
{
|
1254
1255
|
my $hash = shift;
|
1255
|
-
my
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1256
|
+
my $keep;
|
1257
|
+
if (!open($keep, "-|", "arv-get", "--retries", retry_count(), $hash)) {
|
1258
|
+
Log(undef, "fetch_block run error from arv-get $hash: $!");
|
1259
|
+
return undef;
|
1260
|
+
}
|
1261
|
+
my $output_block = "";
|
1260
1262
|
while (1) {
|
1261
1263
|
my $buf;
|
1262
1264
|
my $bytes = sysread($keep, $buf, 1024 * 1024);
|
1263
1265
|
if (!defined $bytes) {
|
1264
|
-
|
1266
|
+
Log(undef, "fetch_block read error from arv-get: $!");
|
1267
|
+
$output_block = undef;
|
1268
|
+
last;
|
1265
1269
|
} elsif ($bytes == 0) {
|
1266
1270
|
# sysread returns 0 at the end of the pipe.
|
1267
1271
|
last;
|
@@ -1271,6 +1275,10 @@ sub fetch_block
|
|
1271
1275
|
}
|
1272
1276
|
}
|
1273
1277
|
close $keep;
|
1278
|
+
if ($?) {
|
1279
|
+
Log(undef, "fetch_block arv-get exited " . exit_status_s($?));
|
1280
|
+
$output_block = undef;
|
1281
|
+
}
|
1274
1282
|
return $output_block;
|
1275
1283
|
}
|
1276
1284
|
|
@@ -1283,50 +1291,64 @@ sub create_output_collection
|
|
1283
1291
|
Log (undef, "collate");
|
1284
1292
|
|
1285
1293
|
my ($child_out, $child_in);
|
1286
|
-
my $pid = open2($child_out, $child_in, 'python', '-c',
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
);
|
1294
|
+
my $pid = open2($child_out, $child_in, 'python', '-c', q{
|
1295
|
+
import arvados
|
1296
|
+
import sys
|
1297
|
+
print (arvados.api("v1").collections().
|
1298
|
+
create(body={"manifest_text": sys.stdin.read()}).
|
1299
|
+
execute(num_retries=int(sys.argv[1]))["portable_data_hash"])
|
1300
|
+
}, retry_count());
|
1294
1301
|
|
1295
1302
|
my $task_idx = -1;
|
1303
|
+
my $manifest_size = 0;
|
1296
1304
|
for (@jobstep)
|
1297
1305
|
{
|
1298
1306
|
++$task_idx;
|
1299
|
-
next unless exists $_->{'arvados_task'}->{'output'};
|
1300
1307
|
my $output = $_->{'arvados_task'}->{output};
|
1301
|
-
if ($output
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
print $child_in $outblock;
|
1308
|
+
next if (!defined($output));
|
1309
|
+
my $next_write;
|
1310
|
+
if ($output =~ /^[0-9a-f]{32}(\+\S+)*$/) {
|
1311
|
+
$next_write = fetch_block($output);
|
1312
|
+
} else {
|
1313
|
+
$next_write = $output;
|
1308
1314
|
}
|
1309
|
-
|
1310
|
-
|
1315
|
+
if (defined($next_write)) {
|
1316
|
+
if (!defined(syswrite($child_in, $next_write))) {
|
1317
|
+
# There's been an error writing. Stop the loop.
|
1318
|
+
# We'll log details about the exit code later.
|
1319
|
+
last;
|
1320
|
+
} else {
|
1321
|
+
$manifest_size += length($next_write);
|
1322
|
+
}
|
1323
|
+
} else {
|
1311
1324
|
my $uuid = $_->{'arvados_task'}->{'uuid'};
|
1312
1325
|
Log (undef, "Error retrieving '$output' output by task $task_idx ($uuid)");
|
1313
1326
|
$main::success = 0;
|
1314
1327
|
}
|
1315
1328
|
}
|
1316
|
-
$child_in
|
1329
|
+
close($child_in);
|
1330
|
+
Log(undef, "collated output manifest text to send to API server is $manifest_size bytes with access tokens");
|
1317
1331
|
|
1318
1332
|
my $joboutput;
|
1319
1333
|
my $s = IO::Select->new($child_out);
|
1320
1334
|
if ($s->can_read(120)) {
|
1321
|
-
sysread($child_out, $joboutput,
|
1322
|
-
|
1323
|
-
|
1335
|
+
sysread($child_out, $joboutput, 1024 * 1024);
|
1336
|
+
waitpid($pid, 0);
|
1337
|
+
if ($?) {
|
1338
|
+
Log(undef, "output collection creation exited " . exit_status_s($?));
|
1339
|
+
$joboutput = undef;
|
1340
|
+
} else {
|
1341
|
+
chomp($joboutput);
|
1342
|
+
}
|
1324
1343
|
} else {
|
1325
1344
|
Log (undef, "timed out while creating output collection");
|
1345
|
+
foreach my $signal (2, 2, 2, 15, 15, 9) {
|
1346
|
+
kill($signal, $pid);
|
1347
|
+
last if waitpid($pid, WNOHANG) == -1;
|
1348
|
+
sleep(1);
|
1349
|
+
}
|
1326
1350
|
}
|
1327
|
-
|
1328
|
-
# ignore further output.
|
1329
|
-
waitpid($pid, 0);
|
1351
|
+
close($child_out);
|
1330
1352
|
|
1331
1353
|
return $joboutput;
|
1332
1354
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arvados-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20150227192315
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arvados Authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: arvados
|
@@ -178,7 +178,7 @@ dependencies:
|
|
178
178
|
- - "<"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 1.0.0
|
181
|
-
description: Arvados command line tools, git commit
|
181
|
+
description: Arvados command line tools, git commit 62fea2a463eb0d8c3aef84a56ba84561a196666b
|
182
182
|
email: gem-dev@curoverse.com
|
183
183
|
executables:
|
184
184
|
- arv
|