X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Frecords.c;h=ad11f22983bd6f97374e6e1867dfc0b93a9b7fe2;hb=641b06ee918ab2d4f899177b7412507d7969b4c6;hp=c09339b2bf921fad7ef446a810bb59556424950e;hpb=980ed96922282e7d6e20df51c14a7bb6e97246e8;p=idzebra-moved-to-github.git diff --git a/index/records.c b/index/records.c index c09339b..ad11f22 100644 --- a/index/records.c +++ b/index/records.c @@ -1,5 +1,5 @@ -/* $Id: records.c,v 1.2 2007-11-23 13:59:14 adam Exp $ - Copyright (C) 1995-2007 +/* $Id: records.c,v 1.4 2008-03-05 09:18:51 adam Exp $ + Copyright (C) 1995-2008 Index Data ApS This file is part of the Zebra server. @@ -69,6 +69,8 @@ struct records_info { int cache_cur; int cache_max; + int compression_chunk_size; + Zebra_mutex mutex; struct records_head { @@ -288,8 +290,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 +339,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);