From 3d02435e315628ba4788f5993954a45dc1c31259 Mon Sep 17 00:00:00 2001
From: Gerhard Gonter <ggonter@gmail.com>
Date: Mon, 6 Sep 2021 15:33:41 +0200
Subject: [PATCH] more activity information and changed blocks collection
 semantics to better interact with opa applicaton

---
 eprints1.pl | 39 ++++++++++++++++++++++++++++++++-------
 1 file changed, 32 insertions(+), 7 deletions(-)

diff --git a/eprints1.pl b/eprints1.pl
index f5e8c43..2e32e76 100755
--- a/eprints1.pl
+++ b/eprints1.pl
@@ -118,7 +118,7 @@ my $op_mode= 'unknown';
   my $ot2ut_context= 'ot2ut-test'; # TODO: parametrize
 # my $ot2ut_context= 'ot2ut-prod'; # TODO: parametrize
 my $oma_sleep_time= 10;
-my $MAX_BLOCK= 680;
+my $MAX_BLOCK= 690;
 
 my %map_ot2ut_roles=
 (
@@ -610,6 +610,8 @@ if ($die_nbn_already_defined)
   print "ATTN: die_nbn_already_defined=[$die_nbn_already_defined]\n";
 }
 
+activity({ activity => 'exiting' });
+
 exit(0);
 
 =head1 CONVENIENCE FUNCTIONS
@@ -2718,7 +2720,7 @@ sub oma
 
       $col_req->update({ _id => $row->{_id}}, { '$set' => { status => 'in_progress', ts_start => Util::ts::ts_ISO_gmt() }});
       my $msg= "send_block: sending objects of block $block to $ot2ut_context";
-      activity({ activity => 'send_batch', msg => $msg});
+      activity({ activity => 'send_block', msg => $msg});
       send_message($msg);
 
       my ($synced, $res)= ot2ut('block' => $block);
@@ -2779,6 +2781,8 @@ sub activity
 
   unless (defined ($col_activity))
   {
+    $db_ot2ut= IRMA::db::get_any_db($cnf, 'ot2ut_database') unless (defined ($db_ot2ut));
+
     $col_activity= $db_ot2ut->get_collection('activity');
     print __LINE__, " starting activity\n";
   }
@@ -2787,6 +2791,7 @@ sub activity
   $data->{agent}= 'oma'                   unless (exists($data->{agent}));
   $data->{e}= time()                      unless (exists($data->{e}));
   $data->{ts_gmt}= Util::ts::ts_ISO_gmt() unless (exists($data->{ts_gmt}));
+  $data->{ts}=     Util::ts::ts()         unless (exists($data->{ts}));
 
   $col_activity->update( { agent => 'oma' },  $data, { upsert => 1 } );
   $last_activity= time();
@@ -2881,7 +2886,7 @@ sub ot2ut
       send_message("ot2ut pause ended");
     }
 
-    activity({ activity => 'ot2ut', eprint_id => $eprint_id }) if ($last_activity + $activity_period <= time());
+    activity({ activity => 'ot2ut', msg => "processing $eprint_id" }); # CHECK if ($last_activity + $activity_period <= time());
 
     my $t_start= time();
 
@@ -4609,6 +4614,8 @@ sub update_policies
   my $epr= get_eprints_db($cnf);
   # print "epr: ", Dumper ($epr);
 
+  activity({ activity => 'update_policies' });
+
   my $epr_db= $epr->connect();
   # print "epr_db: ", Dumper ($epr_db);
 
@@ -4753,6 +4760,7 @@ sub policies_stats
   %doc_embargo_dates= (); # global variable, clear hash from data from previous runs
 
   $db_ot2ut= IRMA::db::get_any_db($cnf, 'ot2ut_database') unless (defined ($db_ot2ut));
+  activity({ activity => 'policies_stats' });
 
   # prepare: get info from sync database
   my $col_sync= $db_ot2ut->get_collection('sync');
@@ -5138,6 +5146,7 @@ EOX
 
   my %incomplete_blocks= ();
 
+  my $col_blk=  $db_ot2ut->get_collection('blocks');
   for (my $metablock_nr= 0; $metablock_nr <= $#metablocks; $metablock_nr++)
   {
     my $mb_othes= $metablocks[$metablock_nr]->{othes}->{cnt_total};
@@ -5147,16 +5156,24 @@ EOX
 
     print IDX "<tr>\n  <td><a href=\"$mb_html\" target=\"metablocks\">", $metablock_nr, " (${metablock_nr}xxyy)</a></td>\n  <td>", $mb_othes, "</td>\n";
 
+    $col_blk->update({ nr => $metablock_nr, level => 1, context => 'othes' },
+                     { nr => $metablock_nr, level => 1, context => 'othes', count_ok => $mb_othes, count_errors => 0 },
+                     { upsert => 1 });
+
     foreach my $context (qw(entw test prod))
     {
-      my $c= $metablocks[$metablock_nr]->{$context}->{cnt_ok};
-      my $e= $metablocks[$metablock_nr]->{$context}->{cnt_error};
+      my $c= $metablocks[$metablock_nr]->{$context}->{cnt_ok} || 0;
+      my $e= $metablocks[$metablock_nr]->{$context}->{cnt_error} || 0;
 
       my $pct= $c*100.0/$mb_othes;
       my $ck1= ($pct == 100.0) ? 'lightgreen' : 'lightblue';
       my $ck2= ($e == 0) ? 'lightgreen' : 'lightpink';
 
       printf IDX ("  <td bgcolor=\"$ck1\">%d</td><td bgcolor=\"$ck1\">%7.4f %%</td><td bgcolor=\"$ck2\">%d</td>\n", $c, $pct, $e);
+
+      $col_blk->update({ nr => $metablock_nr, level => 1, context => $context },
+                       { nr => $metablock_nr, level => 1, context => $context, count_ok => $c, count_errors => $e },
+                       { upsert => 1 });
     }
     print IDX "</tr>\n";
 
@@ -5203,10 +5220,14 @@ EOX
       my $b_othes= $block->{othes}->{cnt_total};
       print MB "<tr>\n  <td><a href=\"$b_html\" target=\"blocks\">", $block_nr, " (${block_nr}yy)</a></td>\n  <td>", $b_othes, "</td>\n";
 
+      $col_blk->update({ nr => $block_nr, level => 0, context => 'othes' },
+                       { nr => $block_nr, level => 0, context => 'othes', count_ok => $b_othes, count_errors => 0 },
+                       { upsert => 1 });
+
       foreach my $context (qw(entw test prod))
       {
-        my $c= $block->{$context}->{cnt_ok};
-        my $e= $block->{$context}->{cnt_error};
+        my $c= $block->{$context}->{cnt_ok} || 0;
+        my $e= $block->{$context}->{cnt_error} || 0;
         my $pct= $c*100.0/$b_othes;
         my $ck2= ($e == 0) ? 'lightgreen' : 'pink';
         my $ck1;
@@ -5226,6 +5247,10 @@ EOX
         }
 
         printf MB ("  <td bgcolor=\"$ck1\">%d</td><td bgcolor=\"$ck1\">%7.4f %%</td><td bgcolor=\"$ck2\">%d</td>\n", $c, $pct, $e);
+
+        $col_blk->update({ nr => $block_nr, level => 0, context => $context },
+                         { nr => $block_nr, level => 0, context => $context, count_ok => $c, count_errors => $e },
+                         { upsert => 1 });
       }
       print MB "</tr>\n";
 
-- 
GitLab