On Thu, Oct 2, 2014 at 6:00 PM, Peter Geoghegan <pg@heroku.com> wrote:
>> Granted, it's something that's not easily automatable, whereas a nowait is.
>>
>> However, rather than nowait, I'd prefer "cancellable" semantics, that
>> would cancel voluntarily if any other transaction requests a
>> conflicting lock, like autovacuum does.
>
> I think the problem you'll have with NOWAIT is: you have an error from
> having to wait...what now? Do you restart? I imagine this would
> frequently result in what is effectively lock starvation. Any old
> AccessShareLock-er is going to make our migration tool restart. We'll
> never finish.
I've done that manually (throw the DDL, and cancel if it takes more
than a couple of seconds) on modest but relatively busy servers with
quite some success.