Class DelayRecipients
java.lang.Object
ecmwf.ecpds.master.plugin.http.controller.monitoring.DelayRecipients
ECMWF Product Data Store (OpenECPDS) Project
Works out who is concerned by a delay: the destinations receiving a (product, cycle) combination, using the same data
as the destinations table at the bottom of /do/monitoring, and their contact emails.
- Since:
- 2026-10-12
- Version:
- 8.2.0
- Author:
- Laurent Gougeon - syi@ecmwf.int, ECMWF.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordThe result of a resolution. -
Method Summary
Modifier and TypeMethodDescriptionGets the available cycles for each product, from the monitoring data.Gets the generation status for each known product and cycle, as shown on the summary page.Gets the generation status of the most urgent cycle for each product.Gets, for each known product and cycle, the most urgent step offset: the smallest minutes before schedule across its steps, as listed on the summary page (completed steps use their completion time).minutesBeforeSchedulePerProduct(Map<String, Long> perCycle) Finds the most urgent cycle for each product.static DelayRecipients.Resultresolve(Collection<String> cells, boolean includeNonMonitored) Resolves the destinations and emails for a selection of cells.Gets each type's worst generation status for each product and cycle, from the present steps shown on the summary page.
-
Method Details
-
cyclesPerProduct
Gets the available cycles for each product, from the monitoring data. Products whose generic (all-types) Product Description disables Delay Notification are left out.- Returns:
- the sorted cycles, keyed by product name
- Throws:
Exception- if the monitoring data cannot be read
-
typesPerCycle
Gets each type's worst generation status for each product and cycle, from the present steps shown on the summary page. As with the cycle status, a fully completed type is counted as OK.- Returns:
- generation statuses keyed by "product@cycle", then by type (sorted)
- Throws:
Exception- if the monitoring data cannot be read
-
minutesBeforeSchedulePerCycle
Gets, for each known product and cycle, the most urgent step offset: the smallest minutes before schedule across its steps, as listed on the summary page (completed steps use their completion time). The cycle's overall offset (earliest step schedule) is used when no step is known.- Returns:
- minutes before schedule keyed by "product@cycle"
- Throws:
Exception- if the monitoring data cannot be read
-
minutesBeforeSchedulePerProduct
Finds the most urgent cycle for each product. A negative value means that at least one cycle has a step past its schedule; cycles without a schedule are ignored.- Parameters:
perCycle- the minutes before schedule keyed by "product@cycle"- Returns:
- shortest minutes before schedule, keyed by product name
-
generationStatusPerCycle
-
generationStatusPerProduct
public static Map<String,Integer> generationStatusPerProduct(Map<String, Long> perCycleMinutes, Map<String, Integer> perCycleStatus) Gets the generation status of the most urgent cycle for each product.- Parameters:
perCycleMinutes- the minutes before schedule keyed by "product@cycle"perCycleStatus- the generation status keyed by "product@cycle"- Returns:
- generation status keyed by product name
-
resolve
public static DelayRecipients.Result resolve(Collection<String> cells, boolean includeNonMonitored) throws Exception Resolves the destinations and emails for a selection of cells.- Parameters:
cells- the cells, as "product@time" keysincludeNonMonitored- also include the destinations not showing in the monitor- Returns:
- the destinations and emails
- Throws:
Exception- if the data cannot be read
-