my @succeed_packages;
my $cur_offset = getCurOffset("tizen-unified-status", $partition);
my $packageNum = @{$packages_level{$cur_level}};
+ my %packages = map {$_ => 1} @{$packages_level{$cur_level}};
+ my $fail_num = 0;
+ my $succeed_num = 0;
+ my $curIndex = 0;
info("current offset: $cur_offset");
- while(@fail_packages + @succeed_packages < $packageNum ) {
+ while($fail_num + $succeed_num < $packageNum ) {
my $messages = $consumer->fetch(
'tizen-unified-status',
$partition,
foreach my $message ( @$messages ) {
if ( $message->valid ) {
$cur_offset = $message->next_offset;
+ if(!exists($packages{$message->key})) {
+ next;
+ }
+ $curIndex++;
if($message->payload eq "failed") {
push(@fail_packages, $message->key);
- info("package: $message->key build failed");
+ print "[".$curIndex."/".$packageNum."] package: ".$message->key." build failed\n";
+ $fail_num++;
} else {
push(@succeed_packages, $message->key);
- info("package: $message->key build success");
+ print "[".$curIndex."/".$packageNum."] package: ".$message->key." build success\n";
+ $succeed_num++;
}
} else {
info($message->error);
}
}
- debug("wait for next 0.5s to check");
- sleep(1); # sleep 0.5s for next check
+ debug("wait for next 1s to check");
+ sleep(1); # sleep 1s for next check
}
return @fail_packages;
}
# if build with cluster, not build local
if ($enable_cluster == 1) {
try {
- $connection = Kafka::Connection->new( host => '109.123.100.144' );
+ $connection = Kafka::Connection->new( host => '109.123.100.144', timeout => 3 );
$producer = Kafka::Producer->new( Connection => $connection );
$consumer = Kafka::Consumer->new( Connection => $connection );
} catch {
# when a level packages building return status are all succeed,
# then go to next level packages.
while(defined $packages_level{$cur_level}) {
- writeToKafka($cur_level);
- @fail_packages = readFromKafka($cur_level);
- if( @fail_packages ) {
- foreach my $p ( @fail_packages ) {
- print "$p ";
- }
- print "\n";
- error("these @fail_packages packages build failed");
- }
- else {
- info("@{$packages_level{$cur_level}} packages build succeed");
+ try {
+ info("current level: $cur_level");
+ writeToKafka($cur_level);
+ @fail_packages = readFromKafka($cur_level);
+ if( @fail_packages ) {
+ foreach my $p ( @fail_packages ) {
+ print "$p ";
+ }
+ print "\n";
+ error("these @fail_packages packages build failed");
+ }
+ else {
+ info("@{$packages_level{$cur_level}} packages build succeed");
+ }
+ $cur_level++;
+ } catch {
+ my $error = $_;
+ if ( blessed( $error ) && $error->isa( 'Kafka::Exception' ) ) {
+ warn 'Error: (', $error->code, ') ', $error->message, "\n";
+ exit;
+ } else {
+ die $error;
+ }
}
- $cur_level++;
}
exit $ret;
}