google-nomulus/java/google/registry/model/domain
mcilwain ce136f9285 Add short-term host/contact caching for high-QPS domain mutations
After investigating common domain create/update command usage
patterns by registrars, we noticed that it is frequent for a
given registrar to reuse both hosts (using a standardized set of
nameservers) as well as contacts (e.g. for privacy/proxy
services). With these usage patterns, potential per-registrar
throughput during high volume scenarios (i.e. first moments of
General Availability) suffers from hitting hot keys in Datastore.

The solution, implemented in this CL, is to add short-term
in-memory caching for contacts and hosts, analogous to how we are
already caching Registry and Registrar entities.  These new
cached paths are only used inside domain flows to determine
existence and deleted/pending delete status of contacts and
hosts. This is a potential loss of transactional consistency, but
in practice it's hard to imagine this having negative effects, as
contacts or hosts that are in use cannot be deleted, and caching
would primarily affect widely used contacts and hosts.

Note that this caching can be turned on or off through a
configuration option, and by default would be off. We'd only want
it on when we really needed it, i.e. during a big launch.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=187093378
2018-03-06 19:05:20 -05:00
..
allocate Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
fee Validate individual fee types 2018-03-06 18:48:39 -05:00
fee06 Switch from Guava Optionals to Java 8 Optionals 2017-10-24 16:53:47 -04:00
fee11 Switch from Guava Optionals to Java 8 Optionals 2017-10-24 16:53:47 -04:00
fee12 Switch from Guava Optionals to Java 8 Optionals 2017-10-24 16:53:47 -04:00
launch Add the START_DATE_SUNRISE phase 2018-02-20 15:45:27 -05:00
metadata Format some imports using fix_imports.py 2017-10-24 16:53:47 -04:00
rgp Format some imports using fix_imports.py 2017-10-24 16:53:47 -04:00
secdns Format some imports using fix_imports.py 2017-10-24 16:53:47 -04:00
superuser Add support for a domain delete superuser EPP extension 2017-09-12 15:51:50 -04:00
token Add basic AllocationToken validation/redemption for domain creates 2018-01-19 14:28:26 -05:00
AllocationToken.java Add basic AllocationToken validation/redemption for domain creates 2018-01-19 14:28:26 -05:00
DesignatedContact.java Fix stale documentation on {ForeignKeyed,}DesignatedContact 2017-03-21 15:28:58 -04:00
DomainApplication.java Remove temporary @OnLoad used for setting period in DomainApplication 2017-06-21 09:51:28 -04:00
DomainAuthInfo.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
DomainBase.java Replace Stream.concat with Streams.concat 2017-12-27 11:35:47 -05:00
DomainCommand.java Add short-term host/contact caching for high-QPS domain mutations 2018-03-06 19:05:20 -05:00
DomainInfoData.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
DomainObjectSpec.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
DomainRenewData.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
DomainResource.java Remove unnecessary generic type arguments 2017-11-21 18:17:31 -05:00
ForeignKeyedDesignatedContact.java Fix stale documentation on {ForeignKeyed,}DesignatedContact 2017-03-21 15:28:58 -04:00
GracePeriod.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
LrpTokenEntity.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
package-info.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
Period.java Format some imports using fix_imports.py 2017-10-24 16:53:47 -04:00