1
0

Added more fine-granular transactions to EGG2

This commit is contained in:
Mike Schwörer 2022-10-16 20:42:12 +02:00
parent 8186165019
commit 81bbdd1aef
Signed by: Mikescher
GPG Key ID: D3C7172E0A70F8CF
2 changed files with 35 additions and 25 deletions

View File

@ -62,7 +62,6 @@ class ExtendedGitGraph2 implements ILogger
try
{
$this->db->open();
$this->db->beginTransaction();
$this->proclog("Start incremental data update");
$this->proclog();
@ -76,11 +75,12 @@ class ExtendedGitGraph2 implements ILogger
$this->proclog();
}
$this->db->beginTransaction();
$this->db->deleteOldSources(array_map(function (IRemoteSource $v){ return $v->getName(); }, $this->sources));
$this->db->commitTransaction();
$this->proclog("Update finished.");
$this->db->commitTransaction();
$this->proclog("Data written.");
$this->db->close();

View File

@ -51,49 +51,59 @@ abstract class StandardGitConnection implements IRemoteSource
{
$this->preUpdate();
$db->beginTransaction();
$repos = $this->listAndUpdateRepositories($db);
$db->commitTransaction();
$anyChanged = false;
foreach ($repos as $repo)
{
$branches = $this->listAndUpdateBranches($db, $repo);
$db->setUpdateDateOnRepository($repo);
$repo_changed = false;
foreach ($branches as $branch)
$db->beginTransaction();
{
if ($branch->HeadFromAPI === $branch->Head)
$branches = $this->listAndUpdateBranches($db, $repo);
$db->setUpdateDateOnRepository($repo);
$repo_changed = false;
foreach ($branches as $branch)
{
if ($branch->HeadFromAPI === $branch->Head)
{
$db->setUpdateDateOnBranch($branch);
$this->logger->proclog("Branch: [" . $this->name . "|" . $repo->Name . "|" . $branch->Name . "] is up to date");
continue;
}
$commits = $this->listAndUpdateCommits($db, $repo, $branch);
$db->setUpdateDateOnBranch($branch);
$this->logger->proclog("Branch: [" . $this->name . "|" . $repo->Name . "|" . $branch->Name . "] is up to date");
continue;
if (count($commits) === 0)
{
$this->logger->proclog("Branch: [" . $this->name . "|" . $repo->Name . "|" . $branch->Name . "] has no new commits");
continue;
}
$this->logger->proclog("Found " . count($commits) . " new commits in Branch: [" . $this->name . "|" . $repo->Name . "|" . $branch->Name . "]");
$repo_changed = true;
$db->setChangeDateOnBranch($branch);
}
$commits = $this->listAndUpdateCommits($db, $repo, $branch);
$db->setUpdateDateOnBranch($branch);
if (count($commits) === 0)
{
$this->logger->proclog("Branch: [" . $this->name . "|" . $repo->Name . "|" . $branch->Name . "] has no new commits");
continue;
}
$this->logger->proclog("Found " . count($commits) . " new commits in Branch: [" . $this->name . "|" . $repo->Name . "|" . $branch->Name . "]");
$repo_changed = true;
$db->setChangeDateOnBranch($branch);
if ($repo_changed) $db->setChangeDateOnRepository($repo);
if ($repo_changed) $anyChanged = true;
}
if ($repo_changed) $db->setChangeDateOnRepository($repo);
if ($repo_changed) $anyChanged = true;
$db->commitTransaction();
}
if ($anyChanged)
{
$db->beginTransaction();
$db->deleteDanglingCommitdata($this->name);
$db->commitTransaction();
}
$db->beginTransaction();
$this->postUpdate();
$db->commitTransaction();
}
/**