@@ -216,23 +216,37 @@ proxygen::RequestHandler* TaskResource::createOrUpdateTaskImpl(
216216 bool summarize = message->hasQueryParam (" summarize" );
217217
218218 const auto & headers = message->getHeaders ();
219- const auto & acceptHeader = headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
219+ const auto & acceptHeader =
220+ headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
220221 const auto sendThrift =
221222 acceptHeader.find (http::kMimeTypeApplicationThrift ) != std::string::npos;
222- const auto & contentHeader = headers.getSingleOrEmpty (proxygen::HTTP_HEADER_CONTENT_TYPE);
223+ const auto & contentHeader =
224+ headers.getSingleOrEmpty (proxygen::HTTP_HEADER_CONTENT_TYPE);
223225 const auto receiveThrift =
224226 contentHeader.find (http::kMimeTypeApplicationThrift ) != std::string::npos;
227+ const auto contentEncoding = headers.getSingleOrEmpty (" Content-Encoding" );
228+ const auto isCompressed =
229+ !contentEncoding.empty () && contentEncoding != " identity" ;
225230
226231 return new http::CallbackRequestHandler (
227- [this , taskId, summarize, createOrUpdateFunc, sendThrift, receiveThrift](
232+ [this ,
233+ taskId,
234+ summarize,
235+ createOrUpdateFunc,
236+ sendThrift,
237+ receiveThrift,
238+ contentEncoding,
239+ isCompressed](
228240 proxygen::HTTPMessage* /* message*/ ,
229241 const std::vector<std::unique_ptr<folly::IOBuf>>& body,
230242 proxygen::ResponseHandler* downstream,
231243 std::shared_ptr<http::CallbackRequestHandlerState> handlerState) {
232244 folly::via (
233245 httpSrvCpuExecutor_,
234246 [this ,
235- requestBody = util::extractMessageBody (body),
247+ requestBody = isCompressed
248+ ? util::decompressMessageBody (body, contentEncoding)
249+ : util::extractMessageBody (body),
236250 taskId,
237251 summarize,
238252 createOrUpdateFunc,
@@ -242,7 +256,11 @@ proxygen::RequestHandler* TaskResource::createOrUpdateTaskImpl(
242256 std::unique_ptr<protocol::TaskInfo> taskInfo;
243257 try {
244258 taskInfo = createOrUpdateFunc (
245- taskId, requestBody, summarize, startProcessCpuTimeNs, receiveThrift);
259+ taskId,
260+ requestBody,
261+ summarize,
262+ startProcessCpuTimeNs,
263+ receiveThrift);
246264 } catch (const velox::VeloxException& e) {
247265 // Creating an empty task, putting errors inside so that next
248266 // status fetch from coordinator will catch the error and well
@@ -355,7 +373,8 @@ proxygen::RequestHandler* TaskResource::createOrUpdateTask(
355373 bool receiveThrift) {
356374 protocol::TaskUpdateRequest updateRequest;
357375 if (receiveThrift) {
358- auto thriftTaskUpdateRequest = std::make_shared<thrift::TaskUpdateRequest>();
376+ auto thriftTaskUpdateRequest =
377+ std::make_shared<thrift::TaskUpdateRequest>();
359378 thriftRead (requestBody, thriftTaskUpdateRequest);
360379 fromThrift (*thriftTaskUpdateRequest, updateRequest);
361380 } else {
@@ -364,7 +383,10 @@ proxygen::RequestHandler* TaskResource::createOrUpdateTask(
364383 velox::core::PlanFragment planFragment;
365384 std::shared_ptr<velox::core::QueryCtx> queryCtx;
366385 if (updateRequest.fragment ) {
367- protocol::PlanFragment prestoPlan = json::parse (receiveThrift ? *updateRequest.fragment : velox::encoding::Base64::decode (*updateRequest.fragment ));
386+ protocol::PlanFragment prestoPlan = json::parse (
387+ receiveThrift
388+ ? *updateRequest.fragment
389+ : velox::encoding::Base64::decode (*updateRequest.fragment ));
368390
369391 queryCtx =
370392 taskManager_.getQueryContextManager ()->findOrCreateQueryCtx (
@@ -397,7 +419,8 @@ proxygen::RequestHandler* TaskResource::deleteTask(
397419 }
398420 bool summarize = message->hasQueryParam (" summarize" );
399421 const auto & headers = message->getHeaders ();
400- const auto & acceptHeader = headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
422+ const auto & acceptHeader =
423+ headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
401424 const auto sendThrift =
402425 acceptHeader.find (http::kMimeTypeApplicationThrift ) != std::string::npos;
403426
@@ -415,7 +438,8 @@ proxygen::RequestHandler* TaskResource::deleteTask(
415438 return std::move (taskInfo);
416439 })
417440 .via (folly::EventBaseManager::get ()->getEventBase ())
418- .thenValue ([taskId, downstream, handlerState, sendThrift](auto && taskInfo) {
441+ .thenValue ([taskId, downstream, handlerState, sendThrift](
442+ auto && taskInfo) {
419443 if (!handlerState->requestExpired ()) {
420444 if (taskInfo == nullptr ) {
421445 sendTaskNotFound (downstream, taskId);
@@ -550,7 +574,8 @@ proxygen::RequestHandler* TaskResource::getTaskStatus(
550574 auto maxWait = getMaxWait (message);
551575
552576 const auto & headers = message->getHeaders ();
553- const auto & acceptHeader = headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
577+ const auto & acceptHeader =
578+ headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
554579 const auto sendThrift =
555580 acceptHeader.find (http::kMimeTypeApplicationThrift ) != std::string::npos;
556581
@@ -621,7 +646,8 @@ proxygen::RequestHandler* TaskResource::getTaskInfo(
621646 bool summarize = message->hasQueryParam (" summarize" );
622647
623648 const auto & headers = message->getHeaders ();
624- const auto & acceptHeader = headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
649+ const auto & acceptHeader =
650+ headers.getSingleOrEmpty (proxygen::HTTP_HEADER_ACCEPT);
625651 const auto sendThrift =
626652 acceptHeader.find (http::kMimeTypeApplicationThrift ) != std::string::npos;
627653
0 commit comments