308 OriginatorMap::iterator |
308 OriginatorMap::iterator |
309 i = originators_.begin(), |
309 i = originators_.begin(), |
310 end = originators_.end(); |
310 end = originators_.end(); |
311 for (; i != end; ++i) |
311 for (; i != end; ++i) |
312 { |
312 { |
|
313 bool readerValid = true; |
313 IReaderOwner |
314 IReaderOwner |
314 & ro(i->second.readerOwner()); |
315 & ro(i->second.readerOwner()); |
315 |
316 |
316 Version |
317 Version |
317 version; |
318 version; |
318 |
319 |
319 // idx is locked now (lock information is in |
320 // idx is locked now (lock information is in |
320 // msr) |
321 // msr) |
321 |
322 lucene::index::IndexReader* idxReader = NULL; |
322 readers.push_back(ro.getReader(&msr, |
323 try |
323 &version)); |
324 { |
324 |
325 idxReader = ro.getReader(&msr, &version); |
|
326 readerValid = idxReader->indexExists(); |
|
327 } |
|
328 catch(...) |
|
329 { |
|
330 readerValid = false; |
|
331 } |
|
332 |
|
333 if(true == readerValid) |
|
334 { |
|
335 readers.push_back(idxReader); |
325 if (version != i->second.version()) |
336 if (version != i->second.version()) |
326 { |
337 { |
327 i->second.setVersion(version); |
338 i->second.setVersion(version); |
328 hasAnyOriginatorChanged = true; |
339 hasAnyOriginatorChanged = true; |
329 } |
340 } |
|
341 } |
330 } |
342 } |
331 |
343 |
332 if (hasAnyOriginatorChanged) |
344 if (hasAnyOriginatorChanged) |
333 { |
345 { |
334 version_ = IdxDbMgr::instance()->getNextVersion(); |
346 version_ = IdxDbMgr::instance()->getNextVersion(); |
630 i = originators_.begin(), |
643 i = originators_.begin(), |
631 end = originators_.end(); |
644 end = originators_.end(); |
632 |
645 |
633 for (; i != end; ++i) |
646 for (; i != end; ++i) |
634 { |
647 { |
|
648 // Connection in MassStorage mode and formating MMC may invalidate the Reader. |
|
649 // Added Check for validation of the reader. |
|
650 bool readerValid = true; |
635 IReaderOwner |
651 IReaderOwner |
636 & ro(i->second.readerOwner()); |
652 & ro(i->second.readerOwner()); |
637 |
653 |
638 Version |
654 Version |
639 idxDbVersion; |
655 idxDbVersion; |
640 |
656 lucene::index::IndexReader* idxReader = NULL; |
|
657 try |
|
658 { |
|
659 idxReader = ro.getReader(msr,&idxDbVersion); |
|
660 readerValid = idxReader->indexExists(); |
641 // idx is locked now (lock information is in msr) |
661 // idx is locked now (lock information is in msr) |
642 searchers_.push_back(new IndexSearcher(ro.getReader(msr, |
662 } |
643 &idxDbVersion))); |
663 catch(...) |
644 |
664 { |
645 if (idxDbVersion != i->second.version()) |
665 readerValid = false; |
|
666 } |
|
667 |
|
668 if(readerValid == true) |
646 { |
669 { |
647 i->second.setVersion(idxDbVersion); |
670 searchers_.push_back(new IndexSearcher(idxReader)); |
648 hasAnyOriginatorChanged = true; |
671 |
649 } |
672 if (idxDbVersion != i->second.version()) |
|
673 { |
|
674 i->second.setVersion(idxDbVersion); |
|
675 hasAnyOriginatorChanged = true; |
|
676 } |
|
677 |
|
678 } |
650 } |
679 } |
651 |
680 |
652 if (hasAnyOriginatorChanged) |
681 if (hasAnyOriginatorChanged) |
653 { |
682 { |
654 version_ = IdxDbMgr::instance()->getNextVersion(); |
683 version_ = IdxDbMgr::instance()->getNextVersion(); |