Changeset View
Changeset View
Standalone View
Standalone View
src/applications/fact/daemon/PhabricatorFactDaemon.php
Show First 20 Lines • Show All 64 Lines • ▼ Show 20 Lines | public function setEngines(array $engines) { | ||||
$this->engines = $engines; | $this->engines = $engines; | ||||
return $this; | return $this; | ||||
} | } | ||||
public function processIterator($iterator) { | public function processIterator($iterator) { | ||||
$result = null; | $result = null; | ||||
$datapoints = array(); | $datapoints = array(); | ||||
$count = 0; | |||||
foreach ($iterator as $key => $object) { | foreach ($iterator as $key => $object) { | ||||
$phid = $object->getPHID(); | $phid = $object->getPHID(); | ||||
$this->log(pht('Processing %s...', $phid)); | $this->log(pht('Processing %s...', $phid)); | ||||
$datapoints[$phid] = $this->newDatapoints($object); | $object_datapoints = $this->newDatapoints($object); | ||||
if (count($datapoints) > 1024) { | $count += count($object_datapoints); | ||||
$datapoints[$phid] = $object_datapoints; | |||||
if ($count > 1024) { | |||||
$this->updateDatapoints($datapoints); | $this->updateDatapoints($datapoints); | ||||
$datapoints = array(); | $datapoints = array(); | ||||
$count = 0; | |||||
} | } | ||||
$result = $key; | $result = $key; | ||||
} | } | ||||
if ($datapoints) { | if ($count) { | ||||
$this->updateDatapoints($datapoints); | $this->updateDatapoints($datapoints); | ||||
$datapoints = array(); | $datapoints = array(); | ||||
$count = 0; | |||||
} | } | ||||
return $result; | return $result; | ||||
} | } | ||||
private function newDatapoints(PhabricatorLiskDAO $object) { | private function newDatapoints(PhabricatorLiskDAO $object) { | ||||
$facts = array(); | $facts = array(); | ||||
foreach ($this->engines as $engine) { | foreach ($this->engines as $engine) { | ||||
Show All 11 Lines | foreach ($map as $phid => $facts) { | ||||
assert_instances_of($facts, 'PhabricatorFactIntDatapoint'); | assert_instances_of($facts, 'PhabricatorFactIntDatapoint'); | ||||
} | } | ||||
$phids = array_keys($map); | $phids = array_keys($map); | ||||
if (!$phids) { | if (!$phids) { | ||||
return; | return; | ||||
} | } | ||||
$fact_keys = array(); | $fact_keys = array(); | ||||
$objects = array(); | $objects = array(); | ||||
foreach ($map as $phid => $facts) { | foreach ($map as $phid => $facts) { | ||||
foreach ($facts as $fact) { | foreach ($facts as $fact) { | ||||
$fact_keys[$fact->getKey()] = true; | $fact_keys[$fact->getKey()] = true; | ||||
$object_phid = $fact->getObjectPHID(); | $object_phid = $fact->getObjectPHID(); | ||||
$objects[$object_phid] = $object_phid; | $objects[$object_phid] = $object_phid; | ||||
$dimension_phid = $fact->getDimensionPHID(); | $dimension_phid = $fact->getDimensionPHID(); | ||||
if ($dimension_phid !== null) { | if ($dimension_phid !== null) { | ||||
$objects[$dimension_phid] = $dimension_phid; | $objects[$dimension_phid] = $dimension_phid; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
$key_map = id(new PhabricatorFactKeyDimension()) | $key_map = id(new PhabricatorFactKeyDimension()) | ||||
->newDimensionMap(array_keys($fact_keys)); | ->newDimensionMap(array_keys($fact_keys), true); | ||||
$object_map = id(new PhabricatorFactObjectDimension()) | $object_map = id(new PhabricatorFactObjectDimension()) | ||||
->newDimensionMap(array_keys($objects)); | ->newDimensionMap(array_keys($objects), true); | ||||
$table = new PhabricatorFactIntDatapoint(); | $table = new PhabricatorFactIntDatapoint(); | ||||
$conn = $table->establishConnection('w'); | $conn = $table->establishConnection('w'); | ||||
$table_name = $table->getTableName(); | $table_name = $table->getTableName(); | ||||
$sql = array(); | $sql = array(); | ||||
foreach ($map as $phid => $facts) { | foreach ($map as $phid => $facts) { | ||||
foreach ($facts as $fact) { | foreach ($facts as $fact) { | ||||
▲ Show 20 Lines • Show All 47 Lines • Show Last 20 Lines |