* Copyright (C) 1995-2002, Index Data
* All rights reserved.
*
- * $Id: zebraapi.c,v 1.46 2002-02-20 23:07:54 adam Exp $
+ * $Id: zebraapi.c,v 1.49 2002-03-21 10:25:42 adam Exp $
*/
#include <assert.h>
zh->seqno = 0;
zh->last_val = 0;
- zh->lock_normal = zebra_lock_create ("norm.LCK", 0);
- zh->lock_shadow = zebra_lock_create ("shadow.LCK", 0);
+ zh->lock_normal = zebra_lock_create (res_get(zs->res, "lockDir"),
+ "norm.LCK", 0);
+ zh->lock_shadow = zebra_lock_create (res_get(zs->res, "lockDir"),
+ "shadow.LCK", 0);
zh->key_buf = 0;
zh->admin_databaseName = 0;
}
if (rw)
{
- zs->matchDict = dict_open (zs->bfs, GMATCH_DICT, 50, 1, 0);
+ zs->matchDict = dict_open (zs->bfs, GMATCH_DICT, 20, 1, 0);
}
- if (!(zs->dict = dict_open (zs->bfs, FNAME_DICT, 80, rw, 0)))
+ if (!(zs->dict = dict_open (zs->bfs, FNAME_DICT, 40, rw, 0)))
{
logf (LOG_WARN, "dict_open");
return -1;
logf(LOG_APP,"SEARCH:%d:",zh->hits);
}
+
+
void zebra_records_retrieve (ZebraHandle zh, ODR stream,
const char *setname, Z_RecordComposition *comp,
oid_value input_format, int num_recs,
}
-void zebra_set_state (int val, int seqno)
+void zebra_set_state (ZebraHandle zh, int val, int seqno)
{
+ char *fname = zebra_mk_fname (res_get(zh->service->res, "lockDir"),
+ "state.LCK");
long p = getpid();
- FILE *f = fopen ("state.LCK", "w");
+ FILE *f = fopen (fname, "w");
fprintf (f, "%c %d %ld\n", val, seqno, p);
fclose (f);
+ xfree (fname);
}
-void zebra_get_state (char *val, int *seqno)
+void zebra_get_state (ZebraHandle zh, char *val, int *seqno)
{
- FILE *f = fopen ("state.LCK", "r");
+ char *fname = zebra_mk_fname (res_get(zh->service->res, "lockDir"),
+ "state.LCK");
+ FILE *f = fopen (fname, "r");
*val = 'o';
*seqno = 0;
fscanf (f, "%c %d", val, seqno);
fclose (f);
}
+ xfree (fname);
}
static int zebra_begin_read (ZebraHandle zh)
return 0;
}
- zebra_get_state (&val, &seqno);
+ zebra_get_state (zh, &val, &seqno);
if (val == 'd')
val = 'o';
if (seqno != zh->seqno)
zebra_lock_w (zh->lock_shadow);
}
- zebra_get_state (&val, &seqno);
+ zebra_get_state (zh, &val, &seqno);
if (val == 'c')
{
yaz_log (LOG_LOG, "previous transaction didn't finish commit");
abort();
return;
}
- zebra_set_state ('d', seqno);
+ zebra_set_state (zh, 'd', seqno);
zebra_register_activate (zh, 1, rval ? 1 : 0);
zh->seqno = seqno;
zebra_register_deactivate (zh);
- zebra_get_state (&val, &seqno);
+ zebra_get_state (zh, &val, &seqno);
if (val != 'd')
{
BFiles bfs = bfs_create (res_get (zh->service->res, "shadow"));
}
if (!rval)
seqno++;
- zebra_set_state ('o', seqno);
+ zebra_set_state (zh, 'o', seqno);
zebra_unlock (zh->lock_shadow);
zebra_unlock (zh->lock_normal);
bfs = bfs_create (res_get (zh->service->res, "register"));
- zebra_get_state (&val, &seqno);
+ zebra_get_state (zh, &val, &seqno);
if (rval && *rval)
bf_cache (bfs, rval);
if (bf_commitExists (bfs))
{
- zebra_set_state ('c', seqno);
+ zebra_set_state (zh, 'c', seqno);
logf (LOG_LOG, "commit start");
bf_commitExec (bfs);
logf (LOG_LOG, "commit clean");
bf_commitClean (bfs, rval);
seqno++;
- zebra_set_state ('o', seqno);
+ zebra_set_state (zh, 'o', seqno);
}
else
{
bf_reset (bfs);
bfs_destroy (bfs);
- zebra_set_state ('o', 0);
+ zebra_set_state (zh, 'o', 0);
}
void zebra_compact (ZebraHandle zh)