From da1269ba30935422bb7369adc0c267aaee54fdfe Mon Sep 17 00:00:00 2001
From: blavenie <benoit.lavenier@e-is.pro>
Date: Tue, 11 Apr 2017 09:28:39 +0200
Subject: [PATCH] ES: subscriptions: add log when start/end execution

---
 .../subscription/PluginSettings.java          |  8 +++----
 .../service/SubscriptionService.java          | 21 ++++++++++++-------
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java
index f6e36663..8bd0c1ee 100644
--- a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java
+++ b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java
@@ -84,19 +84,19 @@ public class PluginSettings extends AbstractLifecycleComponent<PluginSettings> {
     }
 
     /**
-     * Day of the week to trigger weekly email subscription (default: 1)
+     * Day of the week to trigger weekly email subscription (default: 2 = monday)
      * @return
      */
     public int getEmailSubscriptionsExecuteDayOfWeek() {
-        return settings.getAsInt("duniter.subscription.email.dayOfWeek", 1);
+        return settings.getAsInt("duniter.subscription.email.dayOfWeek", 2);
     }
 
     /**
-     * Hour in day to trigger daily email subscription (default: 4 AM)
+     * Hour in day to trigger daily email subscription (default: 3 AM)
      * @return
      */
     public int getEmailSubscriptionsExecuteHour() {
-        return settings.getAsInt("duniter.subscription.email.hourOfDay", 4) /*4 hour in the morning*/;
+        return settings.getAsInt("duniter.subscription.email.hourOfDay", 3);
     }
 
     /* -- delegate methods -- */
diff --git a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java
index 18c31276..266c713c 100644
--- a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java
+++ b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java
@@ -131,10 +131,6 @@ public class SubscriptionService extends AbstractService {
             return this;
         }
 
-
-        // Startup Start
-        threadPool.schedule(() -> executeEmailSubscriptions(EmailSubscription.Frequency.daily));
-
         // Daily execution
         threadPool.scheduler().scheduleAtFixedRate(
                 () -> executeEmailSubscriptions(EmailSubscription.Frequency.daily),
@@ -152,12 +148,15 @@ public class SubscriptionService extends AbstractService {
 
     public void executeEmailSubscriptions(final EmailSubscription.Frequency frequency) {
 
+        long now = System.currentTimeMillis();
+        logger.info(String.format("Executing %s email subscription...", frequency.name()));
+
         final String senderPubkey = pluginSettings.getNodePubkey();
 
         int from = 0;
         int size = 10;
-
         boolean hasMore = true;
+        long executionCount=0;
         while (hasMore) {
             List<SubscriptionRecord> subscriptions = subscriptionRecordDao.getSubscriptions(from, size, senderPubkey, EmailSubscription.TYPE);
 
@@ -171,16 +170,21 @@ public class SubscriptionService extends AbstractService {
             final String senderName = (profileTitles != null && profileTitles.containsKey(senderPubkey)) ? profileTitles.get(senderPubkey) :
                 ModelUtils.minifyPubkey(senderPubkey);
 
-            subscriptions.parallelStream()
+            executionCount += subscriptions.stream()
                     .map(record -> decryptEmailSubscription((EmailSubscription)record))
                     .filter(record -> (record != null && record.getContent().getFrequency() == frequency))
                     .map(record -> processEmailSubscription(record, senderPubkey, senderName, profileTitles))
                     .filter(Objects::nonNull)
-                    .forEach(this::saveExecution);
+                    .map(this::saveExecution)
+                    .count();
 
             hasMore = CollectionUtils.size(subscriptions) >= size;
             from += size;
         }
+
+        logger.info(String.format("Executing %s email subscription... [OK] (%s executions in %s ms)",
+                frequency.name(), executionCount, System.currentTimeMillis()-now));
+
     }
 
     /* -- protected methods -- */
@@ -347,7 +351,7 @@ public class SubscriptionService extends AbstractService {
         }
     }
 
-    protected void saveExecution(SubscriptionExecution execution) {
+    protected SubscriptionExecution saveExecution(SubscriptionExecution execution) {
         Preconditions.checkNotNull(execution);
         Preconditions.checkNotNull(execution.getRecipient());
         Preconditions.checkNotNull(execution.getRecordType());
@@ -368,6 +372,7 @@ public class SubscriptionService extends AbstractService {
         else {
             subscriptionExecutionDao.update(execution.getId(), json, false/*not wait*/);
         }
+        return execution;
     }
 
     private String toJson(Record record) {
-- 
GitLab