Each login attempt is maintained as a separate attribute value to avoid the potential for data loss as a result of replication propagation delay. If a record of all login attempts were maintained within a single JSON object, the object written on one server would not reflect concurrent attempts made on other servers, and replication would only use what it perceives to be the most recent value rather than attempting to merge the values.

It is still possible that information about one or more attempts made around the same time could be lost. This includes the following cases:
  • If the server is not configured to collapse information about multiple similar attempts, then it will not be able to record information about multiple similar attempts made within the same millisecond, because that would result in duplicate attribute values.
  • If the server is configured to collapse information about multiple similar attempts, then concurrent modifications (especially on different servers) could cause the additional-attempt-count value to be incremented to the same value on each of those servers. If the concurrent attempts happened within the same millisecond, then only one of them would be preserved and any others would be lost. If the attempts did not occur within the same millisecond, then we may be able to infer the correct value during internal processing, but there may still be corner cases in which the server could lose information about one or more attempts.