From cfd2983058e7b9b8598e4c89c7b218cc783444c3 Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Fri, 30 Jun 2017 17:02:59 +0200 Subject: [PATCH] F #4809: Pre-allocate lastoid to prevent stale id's in the pool in case of leader failure --- src/pool/PoolSQL.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pool/PoolSQL.cc b/src/pool/PoolSQL.cc index 8730e64f6b..74f2db2451 100644 --- a/src/pool/PoolSQL.cc +++ b/src/pool/PoolSQL.cc @@ -137,6 +137,8 @@ int PoolSQL::allocate(PoolObjectSQL *objsql, string& error_str) objsql->oid = ++lastOID; + _set_lastOID(lastOID, db, table); + rc = objsql->insert(db, error_str); if ( rc != 0 ) @@ -151,9 +153,9 @@ int PoolSQL::allocate(PoolObjectSQL *objsql, string& error_str) delete objsql; - if( rc != -1 ) + if( rc == -1 ) { - _set_lastOID(lastOID, db, table); + _set_lastOID(--lastOID, db, table); } unlock();