internal void ReWrite(SegmentInfo si) { // NOTE: norms are re-written in regular directory, not cfs System.String oldFileName = si.GetNormFileName(this.number); if (oldFileName != null && !oldFileName.EndsWith("." + IndexFileNames.NORMS_EXTENSION)) { // Mark this file for deletion. Note that we don't // actually try to delete it until the new segments files is // successfully written: Enclosing_Instance.deleter.AddPendingFile(oldFileName); } si.AdvanceNormGen(this.number); IndexOutput out_Renamed = Enclosing_Instance.Directory().CreateOutput(si.GetNormFileName(this.number)); try { out_Renamed.WriteBytes(bytes, Enclosing_Instance.MaxDoc()); } finally { out_Renamed.Close(); } this.dirty = false; }
internal void ReWrite(SegmentInfo si) { // NOTE: norms are re-written in regular directory, not cfs si.AdvanceNormGen(this.number); IndexOutput out_Renamed = Enclosing_Instance.Directory().CreateOutput(si.GetNormFileName(this.number)); try { out_Renamed.WriteBytes(bytes, Enclosing_Instance.MaxDoc()); } finally { out_Renamed.Close(); } this.dirty = false; }
// Flush all pending changes to the next generation // separate norms file. public void ReWrite(SegmentInfo si) { System.Diagnostics.Debug.Assert(refCount > 0 && (origNorm == null || origNorm.refCount > 0), "refCount=" + refCount + " origNorm=" + origNorm); // NOTE: norms are re-written in regular directory, not cfs si.AdvanceNormGen(this.number); IndexOutput out_Renamed = Enclosing_Instance.Directory().CreateOutput(si.GetNormFileName(this.number)); try { out_Renamed.WriteBytes(bytes, Enclosing_Instance.MaxDoc()); } finally { out_Renamed.Close(); } this.dirty = false; }
// Flush all pending changes to the next generation // separate norms file. public void ReWrite(SegmentInfo si) { System.Diagnostics.Debug.Assert(refCount > 0 && (origNorm == null || origNorm.refCount > 0), "refCount=" + refCount + " origNorm=" + origNorm); // NOTE: norms are re-written in regular directory, not cfs si.AdvanceNormGen(this.number); string normFileName = si.GetNormFileName(this.number); IndexOutput @out = enclosingInstance.Directory().CreateOutput(normFileName); bool success = false; try { try { @out.WriteBytes(bytes, enclosingInstance.MaxDoc()); } finally { @out.Close(); } success = true; } finally { if (!success) { try { enclosingInstance.Directory().DeleteFile(normFileName); } catch (Exception t) { // suppress this so we keep throwing the // original exception } } } this.dirty = false; }