Return-Path: Delivered-To: apmail-lucene-dev-archive@www.apache.org Received: (qmail 40601 invoked from network); 27 Apr 2010 07:27:54 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 27 Apr 2010 07:27:54 -0000 Received: (qmail 34295 invoked by uid 500); 27 Apr 2010 07:27:53 -0000 Delivered-To: apmail-lucene-dev-archive@lucene.apache.org Received: (qmail 34253 invoked by uid 500); 27 Apr 2010 07:27:53 -0000 Mailing-List: contact dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@lucene.apache.org Delivered-To: mailing list dev@lucene.apache.org Received: (qmail 34246 invoked by uid 99); 27 Apr 2010 07:27:53 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Apr 2010 07:27:53 +0000 X-ASF-Spam-Status: No, hits=-1352.9 required=10.0 tests=ALL_TRUSTED,AWL X-Spam-Check-By: apache.org Received: from [140.211.11.22] (HELO thor.apache.org) (140.211.11.22) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Apr 2010 07:27:52 +0000 Received: from thor (localhost [127.0.0.1]) by thor.apache.org (8.13.8+Sun/8.13.8) with ESMTP id o3R7RVoh023548 for ; Tue, 27 Apr 2010 07:27:32 GMT Message-ID: <28360109.27701272353251896.JavaMail.jira@thor> Date: Tue, 27 Apr 2010 03:27:31 -0400 (EDT) From: "Andrzej Bialecki (JIRA)" To: dev@lucene.apache.org Subject: [jira] Commented: (LUCENE-2373) Change StandardTermsDictWriter to work with streaming and append-only filesystems MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/LUCENE-2373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12861281#action_12861281 ] Andrzej Bialecki commented on LUCENE-2373: ------------------------------------------- Aggregated comments... Mike: I'd hate to add yet another file just for this purpose. Long-term it's perhaps worth it. Short-term for HDFS use case it would be enough to provide a method to write a header and a trailer. Codecs that can seek/overwrite would just use the header, codecs that can't would use both. Codecs that operate on filesystems with unreliable fileLength could write a sync marker before the trailer, and there could be a back-tracking mechanism that starts from the reported fileLength and then tries to find the sync marker (reading back, and/or ahead). Shai: hm, but this would require a separate file that stores the header, right? Lance: yes. The original use case I had in mind was HDFS (Hadoop File System) which already implements on-the-fly checksums. If we go the way that Mike suggested, i.e. implementing a separate codec, then this should be a simple addition. We could also perhaps structure this as a codec wrapper so that this capability can be applied to other codecs too. > Change StandardTermsDictWriter to work with streaming and append-only filesystems > --------------------------------------------------------------------------------- > > Key: LUCENE-2373 > URL: https://issues.apache.org/jira/browse/LUCENE-2373 > Project: Lucene - Java > Issue Type: Improvement > Components: Index > Reporter: Andrzej Bialecki > Fix For: 3.1 > > > Since early 2.x times Lucene used a skip/seek/write trick to patch the length of the terms dict into a place near the start of the output data file. This however made it impossible to use Lucene with append-only filesystems such as HDFS. > In the post-flex trunk the following code in StandardTermsDictWriter initiates this: > {code} > // Count indexed fields up front > CodecUtil.writeHeader(out, CODEC_NAME, VERSION_CURRENT); > out.writeLong(0); // leave space for end index pointer > {code} > and completes this in close(): > {code} > out.seek(CodecUtil.headerLength(CODEC_NAME)); > out.writeLong(dirStart); > {code} > I propose to change this layout so that this pointer is stored simply at the end of the file. It's always 8 bytes long, and we known the final length of the file from Directory, so it's a single additional seek(length - 8) to read it, which is not much considering the benefits. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org For additional commands, e-mail: dev-help@lucene.apache.org