X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=index%2Fzebraapi.c;h=6e2e3a8cb2bb40fec6072f26712ea9122ff514f7;hb=4ac7ffc88f998c27874b19511a3294e0addfc4ec;hp=817b8035a9d1872e6eebd2b29f7700a3383f48aa;hpb=e2f07a294e07cb1a8b9659afd2d834a26ee2baed;p=idzebra-moved-to-github.git diff --git a/index/zebraapi.c b/index/zebraapi.c index 817b803..6e2e3a8 100644 --- a/index/zebraapi.c +++ b/index/zebraapi.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2002, Index Data * All rights reserved. * - * $Id: zebraapi.c,v 1.47 2002-03-15 20:11:36 adam Exp $ + * $Id: zebraapi.c,v 1.50 2002-03-27 07:53:13 adam Exp $ */ #include @@ -65,11 +65,11 @@ ZebraHandle zebra_open (ZebraService zs) zh->errString = 0; zh->trans_no = 0; - 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; @@ -102,6 +102,9 @@ ZebraService zebra_start (const char *configName) zh->registerState = -1; zh->registerChange = 0; + zh->seqno = 0; + zh->last_val = 0; + if (!(zh->res = res_open (zh->configName))) { logf (LOG_WARN, "Failed to read resources `%s'", zh->configName); @@ -459,6 +462,8 @@ void zebra_search_rpn (ZebraHandle zh, ODR stream, ODR decode, 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, @@ -692,17 +697,22 @@ int zebra_string_norm (ZebraHandle zh, unsigned reg_id, } -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; @@ -712,6 +722,7 @@ void zebra_get_state (char *val, int *seqno) fscanf (f, "%c %d", val, seqno); fclose (f); } + xfree (fname); } static int zebra_begin_read (ZebraHandle zh) @@ -729,17 +740,17 @@ 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) + if (seqno != zh->service->seqno) { - yaz_log (LOG_LOG, "reopen seqno cur/old %d/%d", seqno, zh->seqno); + yaz_log (LOG_LOG, "reopen seqno cur/old %d/%d", seqno, zh->service->seqno); dirty = 1; } - else if (zh->last_val != val) + else if (zh->service->last_val != val) { - yaz_log (LOG_LOG, "reopen last cur/old %d/%d", val, zh->last_val); + yaz_log (LOG_LOG, "reopen last cur/old %d/%d", val, zh->service->last_val); dirty = 1; } if (!dirty) @@ -750,8 +761,8 @@ static int zebra_begin_read (ZebraHandle zh) else zebra_lock_r (zh->lock_normal); - zh->last_val = val; - zh->seqno = seqno; + zh->service->last_val = val; + zh->service->seqno = seqno; zebra_register_deactivate (zh); @@ -804,7 +815,7 @@ void zebra_begin_trans (ZebraHandle zh) 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"); @@ -835,10 +846,10 @@ void zebra_begin_trans (ZebraHandle zh) abort(); return; } - zebra_set_state ('d', seqno); + zebra_set_state (zh, 'd', seqno); zebra_register_activate (zh, 1, rval ? 1 : 0); - zh->seqno = seqno; + zh->service->seqno = seqno; } void zebra_end_trans (ZebraHandle zh) @@ -858,7 +869,7 @@ void zebra_end_trans (ZebraHandle zh) 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")); @@ -867,7 +878,7 @@ void zebra_end_trans (ZebraHandle zh) } if (!rval) seqno++; - zebra_set_state ('o', seqno); + zebra_set_state (zh, 'o', seqno); zebra_unlock (zh->lock_shadow); zebra_unlock (zh->lock_normal); @@ -919,13 +930,13 @@ void zebra_commit (ZebraHandle zh) 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); @@ -935,7 +946,7 @@ void zebra_commit (ZebraHandle zh) logf (LOG_LOG, "commit clean"); bf_commitClean (bfs, rval); seqno++; - zebra_set_state ('o', seqno); + zebra_set_state (zh, 'o', seqno); } else { @@ -958,7 +969,7 @@ void zebra_init (ZebraHandle zh) bf_reset (bfs); bfs_destroy (bfs); - zebra_set_state ('o', 0); + zebra_set_state (zh, 'o', 0); } void zebra_compact (ZebraHandle zh)