This is intended to replace Relation. Relation works by putting each individual
relationship in its own Row. This means that doing a fast_query (cross-product)
results in a large multiget that likely touches every node on the C* ring.
DenormalizedRelation instead puts all of the relationships into a single row
per thing1 and only fetches the desired columns on read. This means that most
of the time, we'll do a single-row lookup to determine what we want and the
majority of the time we will get a very fast response from the row-level bloom
filters indicating that no such relationship exists.
The row cache should be disabled for this column family as the rows will be
VERY wide.
Cassandra View class for storing account activity(the columns) by
subreddit (the keys).
Columns have a TTL of 15 minutes to expire out inactive accounts.
Note that pylons.wsgiapp uses pylons.i18n's get_lang()
and friends, instead of our modified versions in
r2.lib.translation. This means that setting 'lang' in the
conf causes it to try and 'help' us by looking up PO files
in r2/i18n. Changing the ini files to use 'site_lang' as the
key gets around that.
Updates javascript to use min bid defined in the app config instead of using a
hard-coded value, and allows admin to override min bid.
Updates validation code to allow admin to override min bid on the back end.
Previously, only old-style SHA-1 passwords were upgraded on login. Now,
if we change the bcrypt work factor, bcrypted passwords will also get
the upgrade treatment.
The base LiveList set up is similar to LiveConfig; it sets a watch and
will get notified by ZooKeeper when the data changes. Sometimes we don't
need data very frequently, if at all, and would rather eschew the watch
for a pull based model (asking ZK for the data only when needed.) This
is particularly helpful if we're doing write-only changes to a
datastructure read only in one place (such as a queue processor).
This buys us two things: one fewer memcache roundtrip per request to
determine if the IP is throttled or not, and the ability to use CIDR for
specifying blocks.
Google's ipaddress-py library as currently being modified (6f231f50aace)
for inclusion in the Python stdlib is included here to help us
manipulate CIDR ranges etc.
The reddit PPA version of Cassandra no longer auto-starts on install
because that was really obnoxious in production. We'll have to make
sure to start the service after installing it.