MCPcopy Index your code
hub / github.com/Tencent/CodeAnalysis / __retry_checkout

Method __retry_checkout

client/task/sourcemgr.py:367–406  ·  view source on GitHub ↗

拉取代码到一个新的目录;如果失败,删除代码目录再重新拉取 :param scm_mgr: :return:

(self, scm_mgr)

Source from the content-addressed store, hash-verified

365 self.__retry_checkout(sm)
366
367 def __retry_checkout(self, scm_mgr):
368 """
369 拉取代码到一个新的目录;如果失败,删除代码目录再重新拉取
370 :param scm_mgr:
371 :return:
372 """
373 # 上报进度
374 SourceReporter(self.task_type, self.params).checkout_report()
375
376 interval = 30 # 重试间隔(单位: 秒)
377 retry_max = 2 # 重试次数
378 retry_cnt = 0 # 重试计数
379 while True:
380 try:
381 scm_mgr.get_scm_client().checkout(
382 revision=self.params["scm_revision"],
383 enable_submodules=self.enable_submodules,
384 enable_lfs=self.enable_lfs
385 )
386 if retry_cnt != 0:
387 logger.info("checkout succeed after %d retries.", retry_cnt)
388 return
389 except ScmCommandError as err:
390 logger.warning("checkout fails on error: %s" % str(err))
391 if retry_cnt < retry_max:
392 # 先清理代码目录
393 if self.params["scm_type"] in ["git", "tgit"]:
394 PathMgr().rmpath(self.params["source_dir"])
395 elif self.params["scm_type"] == "svn":
396 scm_mgr.get_scm_client().cleanup()
397
398 # 准备重试
399 retry_cnt += 1
400 interval = interval * retry_cnt # 重试间隔递增,第一次间隔30s,第二次60s
401 logger.warning("retry after %s seconds..." % interval)
402 time.sleep(interval)
403 continue
404 else:
405 logger.warning("checkout still fails after %s retries!" % retry_cnt)
406 raise
407
408
409class SourceMiddleInfo(object):

Callers 3

__checkout_dataMethod · 0.95
__retry_updateMethod · 0.95

Calls 7

SourceReporterClass · 0.85
checkout_reportMethod · 0.80
get_scm_clientMethod · 0.80
warningMethod · 0.80
checkoutMethod · 0.45
infoMethod · 0.45
cleanupMethod · 0.45

Tested by

no test coverage detected