X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Frecords.c;h=c38091e81c40ae18786976ae4400057dc84254e8;hb=7598c76f1a4989a91003bd4fbd90f30a7c7255ef;hp=c09339b2bf921fad7ef446a810bb59556424950e;hpb=980ed96922282e7d6e20df51c14a7bb6e97246e8;p=idzebra-moved-to-github.git diff --git a/index/records.c b/index/records.c index c09339b..c38091e 100644 --- a/index/records.c +++ b/index/records.c @@ -1,8 +1,5 @@ -/* $Id: records.c,v 1.2 2007-11-23 13:59:14 adam Exp $ - Copyright (C) 1995-2007 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1995-2008 Index Data Zebra is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -69,6 +66,8 @@ struct records_info { int cache_cur; int cache_max; + int compression_chunk_size; + Zebra_mutex mutex; struct records_head { @@ -288,8 +287,9 @@ Records rec_open(BFiles bfs, int rw, int compression_method) p->compression_method = compression_method; p->rw = rw; p->tmp_size = 1024; - p->recindex = recindex_open(bfs, rw); p->tmp_buf = (char *) xmalloc(p->tmp_size); + p->compression_chunk_size = 0; + p->recindex = recindex_open(bfs, rw, 0 /* 1=isamb for recindex */); r = recindex_read_head(p->recindex, p->tmp_buf); switch (r) { @@ -336,6 +336,7 @@ Records rec_open(BFiles bfs, int rw, int compression_method) recindex_get_fname(p->recindex), version, REC_VERSION); ret = ZEBRA_FAIL; } + p->compression_chunk_size = 90000; /* good for BZIP2 */ break; } for (i = 0; isize[j]; } - if (used > 90000) + if (used > p->compression_chunk_size) ret = rec_cache_flush(p, 1); } assert(p->cache_cur < p->cache_max);