Commit 6b6bee5e authored by jan.koester's avatar jan.koester
Browse files

teste

parent b8905f72
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -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);