diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2015-02-17 17:25:57 +0000 |
|---|---|---|
| committer | <> | 2015-03-17 16:26:24 +0000 |
| commit | 780b92ada9afcf1d58085a83a0b9e6bc982203d1 (patch) | |
| tree | 598f8b9fa431b228d29897e798de4ac0c1d3d970 /src/lock/lock_region.c | |
| parent | 7a2660ba9cc2dc03a69ddfcfd95369395cc87444 (diff) | |
| download | berkeleydb-master.tar.gz | |
Diffstat (limited to 'src/lock/lock_region.c')
| -rw-r--r-- | src/lock/lock_region.c | 43 |
1 files changed, 31 insertions, 12 deletions
diff --git a/src/lock/lock_region.c b/src/lock/lock_region.c index 1aae1815..ecc7ba47 100644 --- a/src/lock/lock_region.c +++ b/src/lock/lock_region.c @@ -1,7 +1,7 @@ /*- * See the file LICENSE for redistribution information. * - * Copyright (c) 1996, 2012 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2015 Oracle and/or its affiliates. All rights reserved. * * $Id$ */ @@ -120,13 +120,15 @@ __lock_open(env) } /* - * A process joining the region may have reset the lock and transaction - * timeouts. + * Lock and transaction timeouts will be ignored when joining the + * environment, so print a warning if either was set. */ - if (dbenv->lk_timeout != 0) - region->lk_timeout = dbenv->lk_timeout; - if (dbenv->tx_timeout != 0) - region->tx_timeout = dbenv->tx_timeout; + if (dbenv->lk_timeout != 0 && region->lk_timeout != dbenv->lk_timeout) + __db_msg(env, DB_STR("2058", +"Warning: Ignoring DB_SET_LOCK_TIMEOUT when joining the environment.")); + if (dbenv->tx_timeout != 0 && region->tx_timeout != dbenv->tx_timeout) + __db_msg(env, DB_STR("2059", +"Warning: Ignoring DB_SET_TXN_TIMEOUT when joining the environment.")); LOCK_REGION_UNLOCK(env); region_locked = 0; @@ -396,13 +398,30 @@ __lock_env_refresh(env) R_ADDR(reginfo, lr->locker_mem_off)); } - /* Detach from the region. */ - ret = __env_region_detach(env, reginfo, 0); + ret = __lock_region_detach(env, lt); - /* Discard DB_LOCKTAB. */ - __os_free(env, lt); - env->lk_handle = NULL; + return (ret); +} + +/* + * __lock_region_detach -- + * + * PUBLIC: int __lock_region_detach __P((ENV *, DB_LOCKTAB *)); + */ +int +__lock_region_detach(env, lt) + ENV *env; + DB_LOCKTAB *lt; +{ + int ret; + ret = 0; + if (lt != NULL) { + ret = __env_region_detach(env, <->reginfo, 0); + /* Discard DB_LOCKTAB. */ + __os_free(env, lt); + env->lk_handle = NULL; + } return (ret); } |
