Merge pull request #931 from pagespeed/oschaaf-trunk-tracking-native-fetcher-more-fixes

native-fetcher: fixes
This commit is contained in:
Otto van der Schaaf
2015-03-05 20:35:21 +01:00
4 changed files with 18 additions and 16 deletions
-3
View File
@@ -3067,9 +3067,6 @@ ngx_int_t ps_init_child_process(ngx_cycle_t* cycle) {
}
}
if (!cfg_m->driver_factory->InitNgxUrlAsyncFetchers()) {
return NGX_ERROR;
}
cfg_m->driver_factory->StartThreads();
return NGX_OK;
}
+1 -12
View File
@@ -152,18 +152,6 @@ RewriteOptions* NgxRewriteDriverFactory::NewRewriteOptions() {
return options;
}
bool NgxRewriteDriverFactory::InitNgxUrlAsyncFetchers() {
log_ = ngx_cycle->log;
for (size_t i = 0; i < ngx_url_async_fetchers_.size(); ++i) {
// TODO(oschaaf): Can we pass the log from the server{} block here?
if (!ngx_url_async_fetchers_[i]->Init(
const_cast<ngx_cycle_t*>(ngx_cycle))) {
return false;
}
}
return true;
}
bool NgxRewriteDriverFactory::CheckResolver() {
if (use_native_fetcher_ && resolver_ == NULL) {
return false;
@@ -221,6 +209,7 @@ void NgxRewriteDriverFactory::StartThreads() {
}
void NgxRewriteDriverFactory::LoggingInit(ngx_log_t* log) {
log_ = log;
net_instaweb::log_message_handler::Install(log);
if (install_crash_handler()) {
NgxMessageHandler::InstallCrashHandler(log);
-1
View File
@@ -62,7 +62,6 @@ class NgxRewriteDriverFactory : public SystemRewriteDriverFactory {
// NgxRewriteOptions.
virtual RewriteOptions* NewRewriteOptions();
virtual ServerContext* NewDecodingServerContext();
bool InitNgxUrlAsyncFetchers();
// Check resolver configured or not.
bool CheckResolver();
+17
View File
@@ -78,6 +78,12 @@ namespace net_instaweb {
log_ = log;
pool_ = NULL;
resolver_ = resolver;
// If init fails, set shutdown_ so no fetches will be attempted.
if (!Init(const_cast<ngx_cycle_t*>(ngx_cycle))) {
shutdown_ = true;
message_handler_->Message(
kError, "NgxUrlAsyncFetcher failed to init, fetching disabled.");
}
}
NgxUrlAsyncFetcher::~NgxUrlAsyncFetcher() {
@@ -178,6 +184,11 @@ namespace net_instaweb {
void NgxUrlAsyncFetcher::ShutDown() {
shutdown_ = true;
if (!pending_fetches_.empty()) {
for (Pool<NgxFetch>::iterator p = pending_fetches_.begin(),
e = pending_fetches_.end(); p != e; p++) {
NgxFetch* fetch = *p;
fetch->CallbackDone(false);
}
pending_fetches_.DeleteAll();
}
@@ -201,6 +212,12 @@ namespace net_instaweb {
void NgxUrlAsyncFetcher::Fetch(const GoogleString& url,
MessageHandler* message_handler,
AsyncFetch* async_fetch) {
// Don't accept new fetches when shut down. This flow is also entered when
// we did not initialize properly in ::Init().
if (shutdown_) {
async_fetch->Done(false);
return;
}
async_fetch = EnableInflation(async_fetch);
NgxFetch* fetch = new NgxFetch(url, async_fetch,
message_handler, log_);