rename redis stats, move validation on enqueue, fix logout
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 20 Jun 2011 14:50:56 +0000 (16:50 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 20 Jun 2011 14:50:56 +0000 (16:50 +0200)
persistant_worker.pl

index 2c0911d..82339cd 100755 (executable)
@@ -80,17 +80,12 @@ foreach my $ip ( keys %$poll ) {
                if ( exists $crm->{logout} ) {
                        $zte->logout;
                        $redis->sadd("$variant.$ip.logout", $self->datetime_now);
-                       return { logout => 'ok' };
+                       return "logout ok"; # XXX return scalar!
                }
 
                my $port     = $crm->{SHELF_SLOT_PORT} || die "no SHELF_SLOT_PORT";
                my $username = $crm->{USERNAME}        || die "no USERNAME";
 
-               if ( ! $port ) {
-                       $redis->sadd("$variant.invalid.SHELF_SLOT_PORT" => $username );
-                       return "invalid port $port";
-               }
-
                my $hash;
                eval { $hash = $zte->hash( $port ) };
 
@@ -147,23 +142,29 @@ $driver->add_job({
                my $redis = Redis->new;
                $redis->del( $_ ) foreach $redis->keys("$variant.*");
 
-               $redis->set( "$variant.time.start" => $self->datetime_now );
+               $redis->set( "$variant.poll.start" => $self->datetime_now );
 
                foreach my $user ( @$crm ) {
-                       my $ip   = $user->{IP_UREDAJA};
-                       my $port = $user->{SHELF_SLOT_PORT};
+                       # required CRM fields for worker
+                       my $ip   = $user->{IP_UREDAJA}      || next;
+                       my $port = $user->{SHELF_SLOT_PORT} || next;
+                       my $username = $user->{USERNAME}    || next;
 
                        if ( $ip !~ /$RE{net}{IPv4}/ ) {
                                $redis->sadd("$variant.invalid.IP_UREDAJA" => $ip);
                                next;
                        } elsif ( $port !~ m{\d+(/\d+)+} ) {
-                               $redis->sadd("$variant.$ip.invalid.PORT" => $port);
+                               $redis->sadd("$variant.$ip.invalid.SHELF_SLOT_PORT" => $port);
+                               next;
+                       } elsif ( ! $username ) {
+                               $redis->sadd("$variant.$ip.invalid.USERNAME" => $port);
                                next;
                        } elsif ( $seen->{ $ip }->{ $port }++ ) {
-                               $redis->sadd("$variant.$ip.duplicate" => $port);
+                               $redis->sadd("$variant.$ip.invalid.duplicate" => $port);
                                next;
                        }
-                       $redis->incr("$variant.queued");
+
+                       $redis->incr("$variant.poll.queued");
                        $redis->sadd("$variant.$ip.queued" => $port);
 
                        my $name = $variant . '_' . $ip;
@@ -181,7 +182,7 @@ $driver->add_job({
                warn "# wait";
                $taskset->wait;
 
-               $redis->set( "$variant.time.finish" => $self->datetime_now );
+               $redis->set( "$variant.poll.finish" => $self->datetime_now );
                warn "# seen ", dump($seen);
 
                my $ips = scalar keys %$seen;