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

View File

@ -51,11 +51,15 @@ abstract class StandardGitConnection implements IRemoteSource
{ {
$this->preUpdate(); $this->preUpdate();
$db->beginTransaction();
$repos = $this->listAndUpdateRepositories($db); $repos = $this->listAndUpdateRepositories($db);
$db->commitTransaction();
$anyChanged = false; $anyChanged = false;
foreach ($repos as $repo) foreach ($repos as $repo)
{
$db->beginTransaction();
{ {
$branches = $this->listAndUpdateBranches($db, $repo); $branches = $this->listAndUpdateBranches($db, $repo);
$db->setUpdateDateOnRepository($repo); $db->setUpdateDateOnRepository($repo);
@ -87,13 +91,19 @@ abstract class StandardGitConnection implements IRemoteSource
if ($repo_changed) $db->setChangeDateOnRepository($repo); if ($repo_changed) $db->setChangeDateOnRepository($repo);
if ($repo_changed) $anyChanged = true; if ($repo_changed) $anyChanged = true;
} }
$db->commitTransaction();
}
if ($anyChanged) if ($anyChanged)
{ {
$db->beginTransaction();
$db->deleteDanglingCommitdata($this->name); $db->deleteDanglingCommitdata($this->name);
$db->commitTransaction();
} }
$db->beginTransaction();
$this->postUpdate(); $this->postUpdate();
$db->commitTransaction();
} }
/** /**