Make the verify OT&E action more performant

As previously written, it loaded up all history entries into memory and then
processed them. This was OOMing for some registrars on sandbox who had performed
a large number of testing actions, most of them long OT&E was passed.

This commit changes the verify OT&E action to stream the history entries in
batches, ordered by when they were made, and then terminates once all tests have
passed. This prevents OOMing because only a single batch of history entries need
reside in memory at once.

This does necessitate the creation of a new composite Datastore index on
HistoryEntry, so we'll need to run the ResaveAllHistoryEntriesAction in sandbox
after this change is deployed before the new verify OT&E code will work.

Note that the "history viewer" is long dead, but that the pre-existing index
on HistoryEntries is still used for many other purposes.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=223163337
This commit is contained in:
mcilwain 2018-11-28 07:30:47 -08:00 committed by jianglai
parent 4416601a1d
commit c2ee453745
4 changed files with 60 additions and 25 deletions

View file

@ -36,7 +36,12 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
/** Command to verify that a registrar has passed OT&E. */
/**
* Command to verify that a registrar has passed OT&E.
*
* <p>Outputted stats may be truncated at the point where all tests passed to avoid unnecessarily
* loading lots of data.
*/
@Parameters(
separators = " =",
commandDescription = "Verify passage of OT&E for specified (or all) registrars")