gittip/www.gittip.com — pull request #1547 by zwn (2013-10-05 11:43:26+00:00)
Title: Alter homepage caching not to cause InternalError.

The change is based on the following test. You need two separate
connections to the db. On the first run:

create table a (i int4);
insert into a (i) values(1);
begin;
delete from a;

Now on the second connection run:

select * from a;

That does not block and returns "1". The thing is that we can freely
update the table "a" in a transaction and not block parallel reading
of the original data in the table.

Open question: Does Heroku have some autovacuming on? If not we should
turn it on or the homepage tables will grow beyond bounds (the deleted
data is expunged only by a vacuum run - or at least that is what they write in
"PostgreSQL 9.0 High Performace" book :tongue:).

Hopefully this could solve #1526, #1407 and #1168.
Ready for review and/or merge.