From 5642fd878790b9ebcb3a8a4d23dbb2bfd6a12c0e Mon Sep 17 00:00:00 2001 From: Akrama Baig Mirza Date: Thu, 3 Oct 2024 10:06:25 -0700 Subject: [PATCH] Make AsyncProcessor::processInteraction pure virtual Summary: `processInteraction()` is part of the critical path for interactions in Resource Pools and can lead to undefined behavior if it is not implemented. Let's make the contract more clear and force custom `AsyncProcessor` implementations to provide an implementation for it. Reviewed By: tlj77 Differential Revision: D62590107 fbshipit-source-id: 69fe9e9bee745766d891b5fc5f33d9953d6845eb --- server/cpp/HaskellProcessor.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/cpp/HaskellProcessor.h b/server/cpp/HaskellProcessor.h index 47cae482..995ad1eb 100644 --- a/server/cpp/HaskellProcessor.h +++ b/server/cpp/HaskellProcessor.h @@ -56,6 +56,12 @@ class HaskellAsyncProcessor : public AsyncProcessor { ServerRequest&& request, const AsyncProcessorFactory::MethodMetadata& methodMetadata) override; + void processInteraction(ServerRequest&&) override { + LOG(FATAL) + << "This AsyncProcessor doesn't support Thrift interactions. " + << "Please implement processInteraction to support interactions."; + } + protected: TCallback callback_; AsyncProcessorFactory::MethodMetadataMap& metadataMap_;