diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-01-03 01:00:01 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-01-03 03:45:39 +0200 |
commit | 849ed1cb3792af468999a312449faf3e599e67c1 (patch) | |
tree | 04456d38b803e29e44302b7f44e0525e1395cd77 /server.lua | |
parent | 15ea19da7079cb4c2019b53dae62d5cf6562ce63 (diff) | |
download | aconf-849ed1cb3792af468999a312449faf3e599e67c1.tar.bz2 aconf-849ed1cb3792af468999a312449faf3e599e67c1.tar.xz |
deferred final commit for configurable backend addresses
Diffstat (limited to 'server.lua')
-rw-r--r-- | server.lua | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -1,5 +1,5 @@ --[[ -Copyright (c) 2012-2013 Kaarle Ritvanen +Copyright (c) 2012-2014 Kaarle Ritvanen See LICENSE file for license details --]] @@ -8,6 +8,7 @@ local mnode = acf.model.node local isinstance = acf.object.isinstance local json = require('cjson') +local posix = require('posix') local stringy = require('stringy') @@ -37,7 +38,11 @@ return function(env) else res = '' end return code, headers, coroutine.wrap( - function() coroutine.yield(res) end + function() + coroutine.yield(res) + posix.close(uwsgi.connection_fd()) + acf.commit() + end ) end @@ -77,7 +82,16 @@ return function(env) return wrap(400, nil, 'Invalid transaction ID') end end - local txn = acf.start_txn(parent_txn, true) + + local function new_txn(defer_validation) + return acf.start_txn{ + allow_commit_defer=true, + defer_validation=defer_validation, + parent=parent_txn + } + end + + local txn = new_txn(true) local function fetch_user(name) user = name and txn:fetch('/auth/users')[name] @@ -247,7 +261,7 @@ return function(env) session.last_txn_id = session.last_txn_id + 1 local txn_id = session.last_txn_id - session.txns[txn_id] = acf.start_txn(parent_txn) + session.txns[txn_id] = new_txn() return 204, {['X-ACF-Transaction-ID']=txn_id} end |