JMAP Registry API implementation - part 11
This commit is contained in:
@@ -109,7 +109,7 @@ async fn send_email_alarm(
|
||||
.caused_by(trc::location!())?
|
||||
.build();
|
||||
|
||||
if !access_token.has_permission(Permission::CalendarAlarms) {
|
||||
if !access_token.has_permission(Permission::CalendarAlarmsSend) {
|
||||
trc::event!(
|
||||
Calendar(trc::CalendarEvent::AlarmSkipped),
|
||||
Reason = "Account does not have permission to send calendar alarms",
|
||||
|
||||
@@ -127,7 +127,7 @@ async fn store_maintenance(
|
||||
let todo =
|
||||
"make sure spam samples with their indexes and undelete items are purged as well";
|
||||
|
||||
let mut started = Instant::now();
|
||||
let started = Instant::now();
|
||||
|
||||
server
|
||||
.store()
|
||||
|
||||
@@ -24,7 +24,7 @@ use registry::{
|
||||
types::EnumImpl,
|
||||
};
|
||||
use store::write::{BatchBuilder, now};
|
||||
use trc::{Collector, MetricType, TaskManagerEvent, TelemetryEvent};
|
||||
use trc::{ClusterEvent, Collector, MetricType, TaskManagerEvent, TelemetryEvent};
|
||||
|
||||
#[derive(PartialEq, Eq)]
|
||||
struct Action {
|
||||
@@ -40,6 +40,7 @@ enum Event {
|
||||
OtelMetrics,
|
||||
CalculateMetrics,
|
||||
TrainSpamClassifier,
|
||||
RenewNodeIdLease,
|
||||
// SPDX-SnippetBegin
|
||||
// SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <hello@stalw.art>
|
||||
// SPDX-License-Identifier: LicenseRef-SEL
|
||||
@@ -88,6 +89,14 @@ pub fn spawn_task_scheduler(inner: Arc<Inner>) {
|
||||
Event::PurgeBlobStore,
|
||||
);
|
||||
|
||||
// Node ID lease renewal
|
||||
if server.core.storage.coordinator.is_enabled() {
|
||||
queue.schedule(
|
||||
Instant::now() + server.registry().refresh_node_id_interval(),
|
||||
Event::RenewNodeIdLease,
|
||||
);
|
||||
}
|
||||
|
||||
// Spam classifier training
|
||||
if let Some(train_frequency) = server
|
||||
.core
|
||||
@@ -218,6 +227,24 @@ pub fn spawn_task_scheduler(inner: Arc<Inner>) {
|
||||
}));
|
||||
}
|
||||
}
|
||||
Event::RenewNodeIdLease => {
|
||||
queue.schedule(
|
||||
Instant::now() + server.registry().refresh_node_id_interval(),
|
||||
Event::RenewNodeIdLease,
|
||||
);
|
||||
|
||||
trc::event!(
|
||||
Cluster(ClusterEvent::NodeIdRenewed),
|
||||
Id = server.registry().node_id()
|
||||
);
|
||||
|
||||
let server = server.clone();
|
||||
tokio::spawn(async move {
|
||||
if let Err(err) = server.registry().refresh_node_id_lease().await {
|
||||
trc::error!(err.details("Failed to renew node ID lease"));
|
||||
}
|
||||
});
|
||||
}
|
||||
Event::OtelMetrics => {
|
||||
if let Some(otel) = &server.core.metrics.otel {
|
||||
queue.schedule(Instant::now() + otel.interval, Event::OtelMetrics);
|
||||
@@ -546,7 +573,7 @@ impl Event {
|
||||
Event::OtelMetrics => "otelMetrics",
|
||||
Event::CalculateMetrics => "calculateMetrics",
|
||||
Event::TrainSpamClassifier => "trainSpamClassifier",
|
||||
|
||||
Event::RenewNodeIdLease => "renewNodeIdLease",
|
||||
// SPDX-SnippetBegin
|
||||
// SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <info@stalwartlabs.com>
|
||||
// SPDX-License-Identifier: LicenseRef-SEL
|
||||
|
||||
Reference in New Issue
Block a user