searchengine/cpix/cpix/src/multiIdxDb.cpp
changeset 23 d4d56f5e7c55
parent 0 671dee74050a
--- a/searchengine/cpix/cpix/src/multiIdxDb.cpp	Mon Sep 20 12:35:47 2010 +0530
+++ b/searchengine/cpix/cpix/src/multiIdxDb.cpp	Tue Oct 05 13:15:12 2010 +0530
@@ -310,6 +310,7 @@
                     end = originators_.end();
                 for (; i != end; ++i)
                     {
+                    bool readerValid = true;
                         IReaderOwner
                             & ro(i->second.readerOwner());
 
@@ -318,15 +319,26 @@
 
                         // idx is locked now (lock information is in
                         // msr)
+                        lucene::index::IndexReader* idxReader = NULL;
+                        try
+                        {                                        
+                        idxReader = ro.getReader(&msr, &version);
+                        readerValid = idxReader->indexExists();
+                        }
+                        catch(...)
+                            {
+                            readerValid = false;
+                            }                     
 
-                        readers.push_back(ro.getReader(&msr,
-                                                       &version));
-
+                        if(true == readerValid)
+                        {
+                        readers.push_back(idxReader);
                         if (version != i->second.version())
                             {
-                                i->second.setVersion(version);
-                                hasAnyOriginatorChanged = true;
+                            i->second.setVersion(version);
+                            hasAnyOriginatorChanged = true;
                             }
+                        }
                     }
 
                 if (hasAnyOriginatorChanged)
@@ -611,6 +623,7 @@
                          Version               * version,
                          Cpt::MultiSyncRegion  * msr)
     {
+       
         cleanup();
 
         // TODO
@@ -632,21 +645,37 @@
 
         for (; i != end; ++i)
             {
+// Connection in MassStorage mode and formating MMC may invalidate the Reader.
+// Added Check for validation of the reader.			
+            bool readerValid = true;
                 IReaderOwner
                     & ro(i->second.readerOwner());
 
                 Version
                     idxDbVersion;
-
+                lucene::index::IndexReader* idxReader = NULL;
+                try
+                {                                
+                    idxReader = ro.getReader(msr,&idxDbVersion);
+                    readerValid = idxReader->indexExists();
                 // idx is locked now (lock information is in msr)
-                searchers_.push_back(new IndexSearcher(ro.getReader(msr,
-                                                                    &idxDbVersion)));
-
-                if (idxDbVersion != i->second.version())
+                }
+                catch(...)
+                {
+                    readerValid = false;                  
+                }
+                
+                if(readerValid == true)
                     {
-                        i->second.setVersion(idxDbVersion);
-                        hasAnyOriginatorChanged = true;
-                    }
+                        searchers_.push_back(new IndexSearcher(idxReader));
+                       
+                        if (idxDbVersion != i->second.version())
+                        {
+                            i->second.setVersion(idxDbVersion);
+                            hasAnyOriginatorChanged = true;
+                        }                      
+                   
+                    }               
             }
 
         if (hasAnyOriginatorChanged)