#define MAXKEYLEN 64
#define DEFAULT_LOGFILE_AUTOREMOVE 1
-#define DEFAULT_CACHESIZE (8 * 1024)
+#define DEFAULT_CACHESIZE (8 * 1024) /* KB, so 8 MB */
+#define DEFAULT_MAXLOCKS 5000
+#define DEFAULT_MAXLOCKOBJS 5000
#define DEFAULT_FLUSH_FREQUENCY 1000
#define DEFAULT_FLUSH_INTERVAL 1800
#define DEFAULT_USOCK_FILE "usock"
{
dbp->logfile_autoremove = DEFAULT_LOGFILE_AUTOREMOVE;
dbp->cachesize = DEFAULT_CACHESIZE;
+ dbp->maxlocks = DEFAULT_MAXLOCKS;
+ dbp->maxlockobjs = DEFAULT_MAXLOCKOBJS;
dbp->flush_frequency = DEFAULT_FLUSH_FREQUENCY;
dbp->flush_interval = DEFAULT_FLUSH_INTERVAL;
if (make_pathname(dbp->usock_file, dir, DEFAULT_USOCK_FILE, usock_maxlen()) < 0) {
} else if (! strcmp(key, "cachesize")) {
params.cachesize = parse_int(val);
LOG(log_info, logtype_cnid, "db_param: setting cachesize to %d", params.cachesize);
+ } else if (! strcmp(key, "maxlocks")) {
+ params.maxlocks = parse_int(val);
+ LOG(log_info, logtype_cnid, "db_param: setting maxlocks to %d", params.maxlocks);
+ } else if (! strcmp(key, "maxlockobjs")) {
+ params.maxlockobjs = parse_int(val);
+ LOG(log_info, logtype_cnid, "db_param: setting maxlockobjs to %d", params.maxlockobjs);
} else if (! strcmp(key, "flush_frequency")) {
params.flush_frequency = parse_int(val);
LOG(log_info, logtype_cnid, "db_param: setting flush_frequency to %d", params.flush_frequency);
/*
- * $Id: db_param.h,v 1.6 2009-12-21 07:32:01 franklahm Exp $
- *
* Copyright (C) Joerg Lenneis 2003
+ * Copyright (C) Frank Lahm 2010
* All Rights Reserved. See COPYING.
*/
char *dir;
int logfile_autoremove;
int cachesize; /* in KB */
+ int maxlocks;
+ int maxlockobjs;
int flush_interval;
int flush_frequency;
char usock_file[MAXPATHLEN + 1];
return -1;
}
+ if ((ret = dbd->db_env->set_lk_max_locks(dbd->db_env, dbp->maxlocks))) {
+ LOG(log_error, logtype_cnid, "error setting DB environment maxlocks to %i: %s",
+ 10000, db_strerror(ret));
+ dbd->db_env->close(dbd->db_env, 0);
+ dbd->db_env = NULL;
+ return -1;
+ }
+
+ if ((ret = dbd->db_env->set_lk_max_objects(dbd->db_env, dbp->maxlockobjs))) {
+ LOG(log_error, logtype_cnid, "error setting DB environment max lockobjects to %i: %s",
+ 10000, db_strerror(ret));
+ dbd->db_env->close(dbd->db_env, 0);
+ dbd->db_env = NULL;
+ return -1;
+ }
+
if ((ret = dbd->db_env->open(dbd->db_env, dbd->db_envhome, dbenv_oflags, 0))) {
LOG(log_error, logtype_cnid, "error opening DB environment after recovery: %s",
db_strerror(ret));