Skip to content
Snippets Groups Projects
Commit da1269ba authored by Benoit Lavenier's avatar Benoit Lavenier
Browse files

ES: subscriptions: add log when start/end execution

parent 886e6e71
No related branches found
No related tags found
No related merge requests found
...@@ -84,19 +84,19 @@ public class PluginSettings extends AbstractLifecycleComponent<PluginSettings> { ...@@ -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 * @return
*/ */
public int getEmailSubscriptionsExecuteDayOfWeek() { 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 * @return
*/ */
public int getEmailSubscriptionsExecuteHour() { 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 -- */ /* -- delegate methods -- */
......
...@@ -131,10 +131,6 @@ public class SubscriptionService extends AbstractService { ...@@ -131,10 +131,6 @@ public class SubscriptionService extends AbstractService {
return this; return this;
} }
// Startup Start
threadPool.schedule(() -> executeEmailSubscriptions(EmailSubscription.Frequency.daily));
// Daily execution // Daily execution
threadPool.scheduler().scheduleAtFixedRate( threadPool.scheduler().scheduleAtFixedRate(
() -> executeEmailSubscriptions(EmailSubscription.Frequency.daily), () -> executeEmailSubscriptions(EmailSubscription.Frequency.daily),
...@@ -152,12 +148,15 @@ public class SubscriptionService extends AbstractService { ...@@ -152,12 +148,15 @@ public class SubscriptionService extends AbstractService {
public void executeEmailSubscriptions(final EmailSubscription.Frequency frequency) { 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(); final String senderPubkey = pluginSettings.getNodePubkey();
int from = 0; int from = 0;
int size = 10; int size = 10;
boolean hasMore = true; boolean hasMore = true;
long executionCount=0;
while (hasMore) { while (hasMore) {
List<SubscriptionRecord> subscriptions = subscriptionRecordDao.getSubscriptions(from, size, senderPubkey, EmailSubscription.TYPE); List<SubscriptionRecord> subscriptions = subscriptionRecordDao.getSubscriptions(from, size, senderPubkey, EmailSubscription.TYPE);
...@@ -171,16 +170,21 @@ public class SubscriptionService extends AbstractService { ...@@ -171,16 +170,21 @@ public class SubscriptionService extends AbstractService {
final String senderName = (profileTitles != null && profileTitles.containsKey(senderPubkey)) ? profileTitles.get(senderPubkey) : final String senderName = (profileTitles != null && profileTitles.containsKey(senderPubkey)) ? profileTitles.get(senderPubkey) :
ModelUtils.minifyPubkey(senderPubkey); ModelUtils.minifyPubkey(senderPubkey);
subscriptions.parallelStream() executionCount += subscriptions.stream()
.map(record -> decryptEmailSubscription((EmailSubscription)record)) .map(record -> decryptEmailSubscription((EmailSubscription)record))
.filter(record -> (record != null && record.getContent().getFrequency() == frequency)) .filter(record -> (record != null && record.getContent().getFrequency() == frequency))
.map(record -> processEmailSubscription(record, senderPubkey, senderName, profileTitles)) .map(record -> processEmailSubscription(record, senderPubkey, senderName, profileTitles))
.filter(Objects::nonNull) .filter(Objects::nonNull)
.forEach(this::saveExecution); .map(this::saveExecution)
.count();
hasMore = CollectionUtils.size(subscriptions) >= size; hasMore = CollectionUtils.size(subscriptions) >= size;
from += 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 -- */ /* -- protected methods -- */
...@@ -347,7 +351,7 @@ public class SubscriptionService extends AbstractService { ...@@ -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);
Preconditions.checkNotNull(execution.getRecipient()); Preconditions.checkNotNull(execution.getRecipient());
Preconditions.checkNotNull(execution.getRecordType()); Preconditions.checkNotNull(execution.getRecordType());
...@@ -368,6 +372,7 @@ public class SubscriptionService extends AbstractService { ...@@ -368,6 +372,7 @@ public class SubscriptionService extends AbstractService {
else { else {
subscriptionExecutionDao.update(execution.getId(), json, false/*not wait*/); subscriptionExecutionDao.update(execution.getId(), json, false/*not wait*/);
} }
return execution;
} }
private String toJson(Record record) { private String toJson(Record record) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment