The purpose of these changes is to verify that a situation is not occurring.
Currently, a situation could theoretically arise where a lock expires for
one thread, a new thread gets a new lock on the same key, and the old thread
then completes. The out of order deletion of the lock would cause a cascade
effect, and the lock would then be entirely ineffective for all threads
until there is no contention on the lock anymore for the expiration period.
Presently, if this situation occurs it does so silently since no error would be
thrown.
Since caches are used all over the place, there are plenty of different
stack traces that can throw this exception. This prevents us from
getting hundreds of emailed exception reports when a cache server goes
down.
Since the number of votes is usually in the tens of millions currently,
get_count turned out to take far too long for reasonable RPC timeouts.
Instead of just boosting the timeout, this uses xget to page through the
columns instead and just counts them manually client side.
Unfortunately this is harder on C* and the network, but since we're only
using this in the awards stats job which runs daily it should be OK.
Double checking in the click app and in the processing scripts was
difficult. Just trust the click app and assume any request that got
a 302 response is valid.
Previously the receiving user's name was just black text. The recent
change to link the name to the profile page made regular users and
mods look too similar, causing confusion.
Some advertisers set their ad's url to an intermediate tracker so
they can independently track clicks. This results in a series of
redirects like this:
reddit tracker > intermediate tracker > final destination
The ad's url is communicated to the reddit tracker through a query
parameter which is urlencoded on reddit.com and then unquoted when
being handled by the reddit tracker. This unquoting causes problems
if there is an intermediate tracker with its own query string
that needs to be urlencoded. This commit adds handling for those query
strings.
Grant URI: https://oauth.reddit.com/grants/installed_client
This minor extension grant allows non-confidential
OAuth2 clients to request user-less OAuth2 tokens.
Consumers should provide a unique ID, and re-use that ID
for subsequent token requests from the same device. ID
generation is left up to the client.
This is separate from client_credentials so that the
client_credentials grant can conform to the official spec.
Installed apps are considered "public" as part of the
OAuth2 spec (unable to keep a secret). Don't
show a secret for such apps on the /prefs/apps page,
and don't check the secret as part of client identification
for such apps.