google-nomulus/java/google/registry/model
larryruili 3d5a6b808c Change loadActiveApplicationsByDomainName to non-transactional
We can easily end up enlisting too many entity groups (separate
DomainApplications) in a TransactionalFlow when loading all applications
tracked by the DomainApplicationIndex. This makes the load operation
transactionless, to avoid overenlisting.

Potential problems:
1. We fail to prevent landrush applications, if a single sunrise application
exists. This is likely fine, except for a brief moment in Sunrush when a
sunrise application is made immediately prior to a landrush application. The
result is we accept an invalid application- which can be mediated manually.

2. We fail to prevent a domain create for a domain with an open application.
This is a little more sinister, but also unlikely unless someone submits an
application immediately before someone tries to create the same domain (sans
application?)

3. We return an invalid DomainCheck response (instead of 'pending allocation').
Not the worst outcome.

4. We reduce the AuctionStatusCommand and GetApplicationIdsCommand to
eventual consistency. Since they're internal tools, that's not too big a deal.

A better solution:
DomainApplications really should just be normalized under a virtualEntityGroup
by fullyQualifiedDomainName, or a hash-bucket like EppResources are. The
DomainApplication -> DomainBase -> EppResource hierarchy seems to be purely for
code reuse, at the cost of Datastore consistency. This would, however, require
quite some refactoring, and a custom resave operation across all
DomainApplications.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=169395586
2017-10-04 16:16:44 -04:00
..
annotations Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
billing Mark registrar credit model classes as incomplete 2017-03-27 13:15:06 -04:00
common Remove long-dead LogsExportCursor and PersistedRangeLong 2017-09-20 10:27:17 -04:00
contact Remove all vestiges of memcache 2017-06-14 10:28:24 -04:00
domain Add support for a domain delete superuser EPP extension 2017-09-12 15:51:50 -04:00
eppcommon Refactor out creation of server TRIDs so they can be tested 2017-04-13 10:55:47 -04:00
eppinput Add support for a domain delete superuser EPP extension 2017-09-12 15:51:50 -04:00
eppoutput Notify registrars of async contact/host deletions 2017-04-26 10:33:55 -04:00
host Remove all vestiges of memcache 2017-06-14 10:28:24 -04:00
index Change loadActiveApplicationsByDomainName to non-transactional 2017-10-04 16:16:44 -04:00
mark Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ofy Remove all vestiges of memcache 2017-06-14 10:28:24 -04:00
poll Notify registrars of async contact/host deletions 2017-04-26 10:33:55 -04:00
pricing Return all applicable reserved list entries associated with a label 2017-03-13 11:22:56 -04:00
rde Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
registrar Make Registrar load methods return Optionals instead of Nullables 2017-08-01 16:58:59 -04:00
registry Allow multiple DNS writers on TLDs 2017-08-01 17:10:33 -04:00
reporting Record domain transaction for domain transfers 2017-08-29 17:17:07 -04:00
server Check if lock owner is finished on lock acquisition 2017-09-20 10:27:17 -04:00
smd Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
tmch Add retry to claims list load 2017-08-01 17:09:10 -04:00
transfer Add support for a domain transfer request superuser EPP extension 2017-09-12 15:51:50 -04:00
translators Capitalize the Bloom in Bloom filter in comments 2017-03-21 15:30:30 -04:00
BackupGroupRoot.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
BUILD Define Stackdriver metrics for premium and reserved lists 2017-03-21 14:55:00 -04:00
Buildable.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
CacheUtils.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
CreateAutoTimestamp.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
EntityClasses.java Remove long-dead LogsExportCursor and PersistedRangeLong 2017-09-20 10:27:17 -04:00
EppResource.java Remove migration @OnLoad for EppResource StatusValue LINKED 2017-05-23 17:22:49 -04:00
EppResourceUtils.java Remove all vestiges of memcache 2017-06-14 10:28:24 -04:00
ImmutableObject.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
Jsonifiable.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
JsonMapBuilder.java Update copyright year on all license headers 2017-02-02 16:27:22 -05:00
ModelUtils.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
package-info.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00
SchemaVersion.java Replace deprecated "assignableFrom" with Guava 20 "subtypeOf" 2017-02-02 16:51:43 -05:00
UpdateAutoTimestamp.java Refer to Datastore everywhere correctly by its capitalized form 2017-02-17 12:12:12 -05:00