Page MenuHomePhabricator

D19138.id.diff
No OneTemporary

D19138.id.diff

diff --git a/resources/sql/autopatches/20180223.log.02.chunkformat.sql b/resources/sql/autopatches/20180223.log.02.chunkformat.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20180223.log.02.chunkformat.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_harbormaster.harbormaster_buildlog
+ ADD chunkFormat VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT};
diff --git a/resources/sql/autopatches/20180223.log.03.chunkdefault.sql b/resources/sql/autopatches/20180223.log.03.chunkdefault.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20180223.log.03.chunkdefault.sql
@@ -0,0 +1,2 @@
+UPDATE {$NAMESPACE}_harbormaster.harbormaster_buildlog
+ SET chunkFormat = 'text' WHERE chunkFormat = '';
diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuildLog.php b/src/applications/harbormaster/storage/build/HarbormasterBuildLog.php
--- a/src/applications/harbormaster/storage/build/HarbormasterBuildLog.php
+++ b/src/applications/harbormaster/storage/build/HarbormasterBuildLog.php
@@ -13,6 +13,7 @@
protected $live;
protected $filePHID;
protected $byteLength;
+ protected $chunkFormat;
private $buildTarget = self::ATTACHABLE;
private $rope;
@@ -44,7 +45,8 @@
->setBuildTargetPHID($build_target->getPHID())
->setDuration(null)
->setLive(1)
- ->setByteLength(0);
+ ->setByteLength(0)
+ ->setChunkFormat(HarbormasterBuildLogChunk::CHUNK_ENCODING_TEXT);
}
public function scheduleRebuild($force) {
@@ -73,6 +75,7 @@
'live' => 'bool',
'filePHID' => 'phid?',
'byteLength' => 'uint64',
+ 'chunkFormat' => 'text32',
),
self::CONFIG_KEY_SCHEMA => array(
'key_buildtarget' => array(
@@ -105,6 +108,11 @@
->setPageSize(8);
}
+ public function newDataIterator() {
+ return $this->newChunkIterator()
+ ->setAsString(true);
+ }
+
private function loadLastChunkInfo() {
$chunk_table = new HarbormasterBuildLogChunk();
$conn_w = $chunk_table->establishConnection('w');
@@ -188,6 +196,10 @@
$this->writeEncodedChunk($rope, $byte_limit, $mode);
}
+ $this
+ ->setChunkFormat($mode)
+ ->save();
+
$this->saveTransaction();
}
diff --git a/src/applications/harbormaster/worker/HarbormasterLogWorker.php b/src/applications/harbormaster/worker/HarbormasterLogWorker.php
--- a/src/applications/harbormaster/worker/HarbormasterLogWorker.php
+++ b/src/applications/harbormaster/worker/HarbormasterLogWorker.php
@@ -58,20 +58,23 @@
$is_force = idx($data, 'force');
if (!$log->getByteLength() || $is_force) {
- $iterator = $log->newChunkIterator()
- ->setAsString(true);
+ $iterator = $log->newDataIterator();
$byte_length = 0;
foreach ($iterator as $block) {
$byte_length += strlen($block);
}
+
$log
->setByteLength($byte_length)
->save();
}
- if ($log->canCompressLog()) {
- $log->compressLog();
+ $format_text = HarbormasterBuildLogChunk::CHUNK_ENCODING_TEXT;
+ if (($log->getChunkFormat() === $format_text) || $is_force) {
+ if ($log->canCompressLog()) {
+ $log->compressLog();
+ }
}
if ($is_force) {
@@ -79,8 +82,7 @@
}
if (!$log->getFilePHID()) {
- $iterator = $log->newChunkIterator()
- ->setAsString(true);
+ $iterator = $log->newDataIterator();
$source = id(new PhabricatorIteratorFileUploadSource())
->setName('harbormaster-log-'.$log->getID().'.log')

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 22, 9:36 AM (7 h, 57 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6774324
Default Alt Text
D19138.id.diff (3 KB)

Event Timeline