Merge "updater: Defer the creation of the new data writer."
This commit is contained in:
@@ -1603,29 +1603,6 @@ static Value* PerformBlockImageUpdate(const char* name, State* state,
|
||||
}
|
||||
}
|
||||
|
||||
if (params.canwrite) {
|
||||
params.nti.za = za;
|
||||
params.nti.entry = new_entry;
|
||||
params.nti.brotli_compressed = android::base::EndsWith(new_data_fn->data, ".br");
|
||||
if (params.nti.brotli_compressed) {
|
||||
// Initialize brotli decoder state.
|
||||
params.nti.brotli_decoder_state = BrotliDecoderCreateInstance(nullptr, nullptr, nullptr);
|
||||
}
|
||||
params.nti.receiver_available = true;
|
||||
|
||||
pthread_mutex_init(¶ms.nti.mu, nullptr);
|
||||
pthread_cond_init(¶ms.nti.cv, nullptr);
|
||||
pthread_attr_t attr;
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
||||
|
||||
int error = pthread_create(¶ms.thread, &attr, unzip_new_data, ¶ms.nti);
|
||||
if (error != 0) {
|
||||
PLOG(ERROR) << "pthread_create failed";
|
||||
return StringValue("");
|
||||
}
|
||||
}
|
||||
|
||||
static constexpr size_t kTransferListHeaderLines = 4;
|
||||
std::vector<std::string> lines = android::base::Split(transfer_list_value->data, "\n");
|
||||
if (lines.size() < kTransferListHeaderLines) {
|
||||
@@ -1668,9 +1645,32 @@ static Value* PerformBlockImageUpdate(const char* name, State* state,
|
||||
if (res == -1) {
|
||||
return StringValue("");
|
||||
}
|
||||
|
||||
params.createdstash = res;
|
||||
|
||||
// Set up the new data writer.
|
||||
if (params.canwrite) {
|
||||
params.nti.za = za;
|
||||
params.nti.entry = new_entry;
|
||||
params.nti.brotli_compressed = android::base::EndsWith(new_data_fn->data, ".br");
|
||||
if (params.nti.brotli_compressed) {
|
||||
// Initialize brotli decoder state.
|
||||
params.nti.brotli_decoder_state = BrotliDecoderCreateInstance(nullptr, nullptr, nullptr);
|
||||
}
|
||||
params.nti.receiver_available = true;
|
||||
|
||||
pthread_mutex_init(¶ms.nti.mu, nullptr);
|
||||
pthread_cond_init(¶ms.nti.cv, nullptr);
|
||||
pthread_attr_t attr;
|
||||
pthread_attr_init(&attr);
|
||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
||||
|
||||
int error = pthread_create(¶ms.thread, &attr, unzip_new_data, ¶ms.nti);
|
||||
if (error != 0) {
|
||||
LOG(ERROR) << "pthread_create failed: " << strerror(error);
|
||||
return StringValue("");
|
||||
}
|
||||
}
|
||||
|
||||
// When performing an update, save the index and cmdline of the current command into the
|
||||
// last_command_file.
|
||||
// Upon resuming an update, read the saved index first; then
|
||||
|
||||
Reference in New Issue
Block a user