714: def ensure_reader_open(get_latest = true)
715: raise "tried to use a closed index" if not @open
716: if @reader
717: if get_latest
718: latest = false
719: begin
720: latest = @reader.latest?
721: rescue Lock::LockError => le
722: sleep(@options[:lock_retry_time])
723: latest = @reader.latest?
724: end
725: if not latest
726: @searcher.close if @searcher
727: @reader.close
728: return @reader = IndexReader.new(@dir)
729: end
730: end
731: else
732: if @writer
733: @writer.close
734: @writer = nil
735: end
736: return @reader = IndexReader.new(@dir)
737: end
738: return false
739: end