X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Frecords.c;h=c38091e81c40ae18786976ae4400057dc84254e8;hb=a741f3ed46c75118dd042c30b375c9cea923b33e;hp=c39ac40db368656e04bb78a5192947f92d5c2e8e;hpb=503ad800671bf46891e5a39c2a3a17544d577721;p=idzebra-moved-to-github.git diff --git a/index/records.c b/index/records.c index c39ac40..c38091e 100644 --- a/index/records.c +++ b/index/records.c @@ -1,8 +1,5 @@ -/* $Id: records.c,v 1.3 2007-11-28 11:16:32 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 { @@ -289,6 +288,7 @@ Records rec_open(BFiles bfs, int rw, int compression_method) p->rw = rw; p->tmp_size = 1024; 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);