##// END OF EJS Templates
fixed #850 Whoosh indexer should use the default revision flag to make index
marcink -
r3916:ba08786c beta
parent child Browse files
Show More
@@ -41,6 +41,7 b' sys.path.append(project_path)'
41 41
42 42 from rhodecode.config.conf import INDEX_EXTENSIONS
43 43 from rhodecode.model.scm import ScmModel
44 from rhodecode.model.db import Repository
44 45 from rhodecode.lib.utils2 import safe_unicode, safe_str
45 46 from rhodecode.lib.indexers import SCHEMA, IDX_NAME, CHGSETS_SCHEMA, \
46 47 CHGSET_IDX_NAME
@@ -98,17 +99,29 b' class WhooshIndexingDaemon(object):'
98 99 self.initial = True
99 100 if not os.path.isdir(self.index_location):
100 101 os.makedirs(self.index_location)
101 log.info('Cannot run incremental index since it does not'
102 ' yet exist running full build')
102 log.info('Cannot run incremental index since it does not '
103 'yet exist running full build')
103 104 elif not exists_in(self.index_location, IDX_NAME):
104 log.info('Running full index build as the file content'
105 ' index does not exist')
105 log.info('Running full index build as the file content '
106 'index does not exist')
106 107 elif not exists_in(self.index_location, CHGSET_IDX_NAME):
107 log.info('Running full index build as the changeset'
108 ' index does not exist')
108 log.info('Running full index build as the changeset '
109 'index does not exist')
109 110 else:
110 111 self.initial = False
111 112
113 def _get_index_revision(self, repo):
114 db_repo = Repository.get_by_repo_name(repo.name)
115 landing_rev = 'tip'
116 if db_repo:
117 landing_rev = db_repo.landing_rev
118 return landing_rev
119
120 def _get_index_changeset(self, repo):
121 index_rev = self._get_index_revision(repo)
122 cs = repo.get_changeset(index_rev)
123 return cs
124
112 125 def get_paths(self, repo):
113 126 """
114 127 recursive walk in root dir and return a set of all path in that dir
@@ -116,8 +129,8 b' class WhooshIndexingDaemon(object):'
116 129 """
117 130 index_paths_ = set()
118 131 try:
119 tip = repo.get_changeset('tip')
120 for _topnode, _dirs, files in tip.walk('/'):
132 cs = self._get_index_changeset(repo)
133 for _topnode, _dirs, files in cs.walk('/'):
121 134 for f in files:
122 135 index_paths_.add(jn(safe_str(repo.path), safe_str(f.path)))
123 136
@@ -128,7 +141,8 b' class WhooshIndexingDaemon(object):'
128 141
129 142 def get_node(self, repo, path):
130 143 n_path = path[len(repo.path) + 1:]
131 node = repo.get_changeset().get_node(n_path)
144 cs = self._get_index_changeset(repo)
145 node = cs.get_node(n_path)
132 146 return node
133 147
134 148 def get_node_mtime(self, node):
@@ -222,7 +236,8 b' class WhooshIndexingDaemon(object):'
222 236 :param repo: instance of vcs repo
223 237 """
224 238 i_cnt = iwc_cnt = 0
225 log.debug('building index for [%s]' % repo.path)
239 log.debug('building index for %s @revision:%s' % (repo.path,
240 self._get_index_revision(repo)))
226 241 for idx_path in self.get_paths(repo):
227 242 i, iwc = self.add_doc(file_idx_writer, idx_path, repo, repo_name)
228 243 i_cnt += i
@@ -276,7 +291,7 b' class WhooshIndexingDaemon(object):'
276 291 repo_name, repo, start_id)
277 292 writer_is_dirty = True
278 293 log.debug('indexed %s changesets for repo %s' % (
279 indexed_total, repo_name)
294 indexed_total, repo_name)
280 295 )
281 296 finally:
282 297 if writer_is_dirty:
@@ -284,7 +299,6 b' class WhooshIndexingDaemon(object):'
284 299 writer.commit(merge=True)
285 300 log.debug('>>> FINISHED REBUILDING CHANGESET INDEX <<<')
286 301 else:
287 writer.cancel
288 302 log.debug('>> NOTHING TO COMMIT TO CHANGESET INDEX<<')
289 303
290 304 def update_file_index(self):
General Comments 0
You need to be logged in to leave comments. Login now