in sync/meta.py [0:0]
def exit_mut(self) -> None:
ref_name = self.process_name.path()
message = "Gecko sync update"
retry = 0
MAX_RETRY = 5
err = None
while retry < MAX_RETRY:
newrelic.agent.record_custom_event("metadata_update", params={})
self.repo.remotes.origin.fetch()
self.pygit2_repo.create_reference(ref_name,
self.pygit2_repo.revparse_single(
"origin/%s" % self.branch).id,
True)
commit_builder = CommitBuilder(self.repo,
message,
ref=ref_name)
with commit_builder as builder:
self.metadata.writer = GitWriter(builder)
self.metadata.write()
assert commit_builder.commit is not None
if not commit_builder.commit.is_empty():
logger.info("Pushing metadata commit %s" % commit_builder.commit.sha1)
remote_ref = self.get_remote_ref()
try:
self.repo.remotes.origin.push(f"{ref_name}:refs/heads/{remote_ref}")
except git.GitCommandError:
err = sys.exc_info()
else:
if self.create_pr:
self.github.create_pull(message,
"Update from bug %s" % self.process_name.obj_id,
self.branch,
remote_ref)
err = None
break
retry += 1
else:
break
if err:
newrelic.agent.record_exception(*err, params={
"ref_name": ref_name
})
else:
self.pygit2_repo.references.delete(ref_name)
self.metadata.writer = NullWriter()