Loading plugins/media/media.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -1060,6 +1060,32 @@ namespace blogi { } } // MediaDB starts an uncached preview in the background and answers 202. // Browsers do not retry a failed <img> request, so wait briefly for that // preview here. This route is offloaded from the listener event loop; cap // the wait so an unhealthy MediaDB cannot occupy a worker indefinitely. for (int retry = 0; dataResPtr && dataResPtr->getStatusCode() == 202 && retry < 5; ++retry) { // GetStream left the 202 JSON body unread. Close that connection // instead of returning a mid-response client to the pool. streamClient.discard(); dataResPtr.reset(); std::this_thread::sleep_for(std::chrono::seconds(1)); try { streamClient = _mdbStreamPool->acquire(); dataResPtr = std::make_unique<libhttppp::HttpResponse>( streamClient->GetStream(dataReq)); } catch (const std::exception &e) { std::cerr << "media: pending preview retry failed: " << e.what() << std::endl; streamClient.discard(); break; } catch (...) { std::cerr << "media: pending preview retry failed: unknown error" << std::endl; streamClient.discard(); break; } } if (!dataResPtr) { libhttppp::HttpResponse curres; curres.setState(HTTP502); Loading Loading
plugins/media/media.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -1060,6 +1060,32 @@ namespace blogi { } } // MediaDB starts an uncached preview in the background and answers 202. // Browsers do not retry a failed <img> request, so wait briefly for that // preview here. This route is offloaded from the listener event loop; cap // the wait so an unhealthy MediaDB cannot occupy a worker indefinitely. for (int retry = 0; dataResPtr && dataResPtr->getStatusCode() == 202 && retry < 5; ++retry) { // GetStream left the 202 JSON body unread. Close that connection // instead of returning a mid-response client to the pool. streamClient.discard(); dataResPtr.reset(); std::this_thread::sleep_for(std::chrono::seconds(1)); try { streamClient = _mdbStreamPool->acquire(); dataResPtr = std::make_unique<libhttppp::HttpResponse>( streamClient->GetStream(dataReq)); } catch (const std::exception &e) { std::cerr << "media: pending preview retry failed: " << e.what() << std::endl; streamClient.discard(); break; } catch (...) { std::cerr << "media: pending preview retry failed: unknown error" << std::endl; streamClient.discard(); break; } } if (!dataResPtr) { libhttppp::HttpResponse curres; curres.setState(HTTP502); Loading