Class AbandonedCeremonyTimer
A ceremony is written as pending when the options are issued and flipped to
authenticated when the assertion is verified. If the user cancels, closes the sheet, or
simply gives up, nothing is ever posted back — so without this sweep the row stays pending
until the cleaner deletes it, and an abandoned ceremony is indistinguishable first from one still
in flight and then from one that never happened at all.
Only ceremonies issued for a named user are swept. A usernameless one is offered on every login page
load and left untouched as soon as the user identifies themselves, so sweeping it recorded an
abandonment for every successful sign-in — see isSpeculative(io.jans.orm.model.fido2.Fido2AuthenticationData).
The sweep is deliberately not coordinated across nodes, so abandonment is counted at least
once rather than exactly once. Two locking approaches were examined and rejected: the metrics
aggregation scheduler's cluster lock is only initialised behind that scheduler's own enabled check,
so with aggregation disabled it silently reports success on every node; and a dedicated cluster
node type would allocate an index into a base DN that other components already populate. What
bounds the error is the transition itself — it only fires from pending, so a row another
node has already claimed is not matched again and the stored value converges regardless of who
writes it. Only the emitted metric can duplicate, and only for a batch two nodes read before either
writes it back; single-node deployments are exact.
- Author:
- Janssen Project
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intCeilings one sweep, so a backlog is bounded per pass rather than read at once. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidprocess(AbandonedCeremonyEvent abandonedCeremonyEvent)
-
Field Details
-
BATCH_SIZE
public static final int BATCH_SIZECeilings one sweep, so a backlog is bounded per pass rather than read at once.- See Also:
-
-
Constructor Details
-
AbandonedCeremonyTimer
public AbandonedCeremonyTimer()
-
-
Method Details
-
initTimer
public void initTimer() -
process
-