From d7f1fa5f0854ae1ffcbdd78fc936590738bd6ad8 Mon Sep 17 00:00:00 2001 From: Robert Pirtle Date: Thu, 8 Feb 2024 13:34:31 -0800 Subject: [PATCH] handle batch EVM requests (#84) * add decodeRequestMiddleware & batch request decoding * progress towards batch request processing * hackily overriding headers fixes response * refactor, headers still incorrect * handle passing response headers * handle empty batch requests * rename & add docs to batchResponseWriter * make batch requests concurrent * cleanup & add doc comments to all funcs * unit test the cache state header response * fix default CORs header for cache misses * fix cache hit counting * reduce debug log noise * add happy path testing for batch evm requests * lol, don't fail b/c it is 4PM * pass through error statuses! * test more unhappy paths * update missing .env vars, misc cleanup * fix CI docker for e2e tests * replace request logging mdw w/ decode request mdw * update middleware sequence documentation * add ProxyMaximumBatchSize configuration proxy service responds 413 if it receives a request with >ProxyMaximumBatchSize sub-requests * onErrStatus(status) -> onErrorHandler(status, body) * update error handler to include current response headers * refactor metrics tests to use require.Eventually instead of arbitrarily sleeping and praying that the metric was created, wait for the metrics to be created. if the expected metrics are not created, the test will fail with a timeout. --- .env | 6 +- architecture/MIDDLEWARE.MD | 60 ++-- .../proxy_service_middleware_sequence.jpg | Bin 0 -> 424570 bytes ci.docker-compose.yml | 1 + config/config.go | 4 + decode/evm_rpc.go | 7 + docker-compose.yml | 3 +- main_batch_test.go | 299 ++++++++++++++++++ main_test.go | 108 ++++--- routines/metric_partitioning_test.go | 2 +- service/batchmdw/batch_processor.go | 142 +++++++++ service/batchmdw/batch_processor_test.go | 47 +++ service/batchmdw/batchmdw.go | 83 +++++ service/batchmdw/doc.go | 16 + service/batchmdw/fake_response_writer.go | 52 +++ service/cachemdw/cache.go | 7 + service/cachemdw/is_cached_middleware.go | 13 +- service/middleware.go | 92 +++--- service/service.go | 33 +- service/shard.go | 8 +- 20 files changed, 861 insertions(+), 122 deletions(-) create mode 100644 architecture/images/proxy_service_middleware_sequence.jpg create mode 100644 main_batch_test.go create mode 100644 service/batchmdw/batch_processor.go create mode 100644 service/batchmdw/batch_processor_test.go create mode 100644 service/batchmdw/batchmdw.go create mode 100644 service/batchmdw/doc.go create mode 100644 service/batchmdw/fake_response_writer.go diff --git a/.env b/.env index 6683e25..71c1871 100644 --- a/.env +++ b/.env @@ -33,6 +33,8 @@ PROXY_CONTAINER_DEBUG_PORT=2345 PROXY_HOST_DEBUG_PORT=2345 ##### E2E Testing Config +TEST_UNCONFIGURED_PROXY_PORT=7779 +TEST_UNCONFIGURED_PROXY_URL=http://localhost:7779 TEST_PROXY_SERVICE_EVM_RPC_URL=http://localhost:7777 TEST_PROXY_SERVICE_EVM_RPC_HOSTNAME=localhost:7777 TEST_PROXY_SERVICE_EVM_RPC_PRUNING_URL=http://localhost:7778 @@ -56,7 +58,7 @@ TEST_REDIS_ENDPOINT_URL=localhost:6379 ##### Kava Proxy Config # What port the proxy service listens on PROXY_SERVICE_PORT=7777 -LOG_LEVEL=TRACE +LOG_LEVEL=DEBUG HTTP_READ_TIMEOUT_SECONDS=30 HTTP_WRITE_TIMEOUT_SECONDS=60 # Address of the origin server to proxy all requests to @@ -66,6 +68,8 @@ PROXY_BACKEND_HOST_URL_MAP=localhost:7777>http://kava-validator:8545,localhost:7 # otherwise, it falls back to the value in PROXY_BACKEND_HOST_URL_MAP PROXY_HEIGHT_BASED_ROUTING_ENABLED=true PROXY_PRUNING_BACKEND_HOST_URL_MAP=localhost:7777>http://kava-pruning:8545,localhost:7778>http://kava-pruning:8545 +# PROXY_MAXIMUM_REQ_BATCH_SIZE is a proxy-enforced limit on the number of subrequest in a batch +PROXY_MAXIMUM_REQ_BATCH_SIZE=100 # Configuration for the servcie to connect to it's database DATABASE_NAME=postgres DATABASE_ENDPOINT_URL=postgres:5432 diff --git a/architecture/MIDDLEWARE.MD b/architecture/MIDDLEWARE.MD index 034d1cf..ec5389b 100644 --- a/architecture/MIDDLEWARE.MD +++ b/architecture/MIDDLEWARE.MD @@ -20,49 +20,51 @@ Any modifications that the middleware function makes to the request or response The earlier the middleware is instantiated, the later it will run. For example the first middleware created by the proxy service is the middleware that will run after the request has been logged and proxied, thereby allowing it to access both the recorded request body and response body, and any context enrichment added by prior middleware. -```golang -service := ProxyService{} +https://github.com/Kava-Labs/kava-proxy-service/blob/847d7889bf5f37770d373d73cd4600a769ebd29c/service/service.go#L54-L110 -// create an http router for registering handlers for a given route -mux := http.NewServeMux() +## Middleware -// will run after the proxy middleware handler and is -// the final function called after all other middleware -// allowing it to access values added to the request context -// to do things like metric the response and cache the response -afterProxyFinalizer := createAfterProxyFinalizer(&service) +The middleware sequence of EVM requests to the proxy service: +![Middleware Sequence for Proxy Service](./images/proxy_service_middleware_sequence.jpg) -// create an http handler that will proxy any request to the specified URL -proxyMiddleware := createProxyRequestMiddleware(afterProxyFinalizer, config, serviceLogger) +### Decode Request Middleware -// create an http handler that will log the request to stdout -// this handler will run before the proxyMiddleware handler -requestLoggingMiddleware := createRequestLoggingMiddleware(proxyMiddleware, serviceLogger) +1. Captures start time of request for latency metrics calculations +1. Attempts to decode the request: + * As a single EVM request. If successful, forwards to Single Request Middleware Sequence with the request in the context. + * As a batch EVM request. If successful, forwards to Batch Processing Middleware with batch in context. + * On failure to decode, the request is sent down the Single Request Middleware Sequence, but with nothing in the context. -// register middleware chain as the default handler for any request to the proxy service -mux.HandleFunc("/", requestLoggingMiddleware) +### Single Request Middleware Sequence +If a single request is decoded (as opposed to a batch list), or the request fails to decode, it is forwarded down this middleware sequence. Additionally, each individual sub-request of a batch is routed through this sequence in order to leverage caching and metrics collection. -// create an http server for the caller to start on demand with a call to ProxyService.Run() -server := &http.Server{ - Addr: fmt.Sprintf(":%s", config.ProxyServicePort), - Handler: mux, -} -``` +This middleware sequence uses the decoded single request from the request context. -## Middleware +#### IsCached Middleware +The front part of the two-part caching middleware. Responsible for determining if an incoming request can be fielded from the cache. If it can, the cached response is put into the context. -### Request Logging Middleware +See [CACHING](./CACHING.md#iscachedmiddleware) for more details. -1. Logs the request body to stdout and stores a parsed version of the request body in the context key `X-KAVA-PROXY-DECODED-REQUEST-BODY` for use by other middleware. - -### Proxy Middleware +#### Proxy Middleware 1. Proxies the request to the configured backend origin server. +2. Times the roundtrip latency for the response from the backend origin server and stores the latency in the context key `X-KAVA-PROXY-ORIGIN-ROUNDTRIP-LATENCY-MILLISECONDS` for use by other middleware. -1. Times the roundtrip latency for the response from the backend origin server and stores the latency in the context key `X-KAVA-PROXY-ORIGIN-ROUNDTRIP-LATENCY-MILLISECONDS` for use by other middleware. +The Proxy middleware is responsible for writing the response to the requestor. Subsequent middlewares are non-blocking to the response. See [Proxy Routing](./PROXY_ROUTING.md) for details on configuration and how requests are routed. -### After Proxy Middleware +#### Caching Middleware +Handles determining if a response can be put in the cache if it isn't already. + +See [CACHING](./CACHING.md#cachingmiddleware) for more details. + +#### After Proxy Middleware 1. Parses the request body and latency from context key values and creates a request metric for the proxied request. + +### Batch Processing Middleware +1. Pulls decoded batch out of the request context +2. Separates into individual sub-requests +3. Routes each sub-request through the Single Request Middleware Sequence in order to leverage caching and metrics creation. +4. Combines all sub-request responses into a single response to the client. diff --git a/architecture/images/proxy_service_middleware_sequence.jpg b/architecture/images/proxy_service_middleware_sequence.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc0ecf95cdc2f22c763eaf5241e87606ba955b8f GIT binary patch literal 424570 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%0DSvQi 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

)wR zsJ__QoS0<`3y2%wFP`6Y)MyKKKQ~8Sg9&2McwiGi=Ndft2^n06V0!v6p70-9QACFF z6z01;kmW|!tOA_qp+_?S_)7p4q~aJCfPzV|0qE^R;|yj#{}`yPqk%#l8DCq-mTU`U zi3Pw}85U3$s0Q`{KFHU>AcqXL24Wh&Oe!VU%J6iMbFmaa8n29>|ey8-}S=(fB*WwlP-EO;=9ojG_PZBjItgRr+SGtsT6$y z)lZTJiaZa)!Y;gZ*rLNy!zaMk54VFA?>JKr&Mpu_PGER3A8sPyAc92U|B#t1<%odD zqfW(ecqy1a^i7Yjc7j;pI1k>UDA*eXl9ib5e8z#Fkb{+7KOqc7&?Y9Uf(wyoNKN9T zI0GaM)f&Kz{*bZc4LwFQMjp@$|nO^D77dOT>jsrBmY42 z>wnru{yy;MpF{Kfp0vPUbRYkxy@204tiRv--8j2{vCFh!UH|YH=wIRPZdliUD~G>f iT^rW*FXr%nFPi^LKm3MuZCKa8^acHIZEM0mr~eHSWf&U( literal 0 HcmV?d00001 diff --git a/ci.docker-compose.yml b/ci.docker-compose.yml index 5d3be4f..88c9797 100644 --- a/ci.docker-compose.yml +++ b/ci.docker-compose.yml @@ -31,5 +31,6 @@ services: EVM_QUERY_SERVICE_URL: https://evmrpc.internal.testnet.proxy.kava.io ports: - "${PROXY_HOST_PORT}:${PROXY_CONTAINER_PORT}" + - "${TEST_UNCONFIGURED_PROXY_PORT}:${PROXY_CONTAINER_PORT}" - "${PROXY_CONTAINER_EVM_RPC_PRUNING_PORT}:${PROXY_CONTAINER_PORT}" - "${PROXY_HOST_DEBUG_PORT}:${PROXY_CONTAINER_DEBUG_PORT}" diff --git a/config/config.go b/config/config.go index 6d91452..b244ce4 100644 --- a/config/config.go +++ b/config/config.go @@ -20,6 +20,7 @@ type Config struct { EnableHeightBasedRouting bool ProxyPruningBackendHostURLMapRaw string ProxyPruningBackendHostURLMap map[string]url.URL + ProxyMaximumBatchSize int EvmQueryServiceURL string DatabaseName string DatabaseEndpointURL string @@ -64,6 +65,8 @@ const ( PROXY_BACKEND_HOST_URL_MAP_ENVIRONMENT_KEY = "PROXY_BACKEND_HOST_URL_MAP" PROXY_HEIGHT_BASED_ROUTING_ENABLED_KEY = "PROXY_HEIGHT_BASED_ROUTING_ENABLED" PROXY_PRUNING_BACKEND_HOST_URL_MAP_ENVIRONMENT_KEY = "PROXY_PRUNING_BACKEND_HOST_URL_MAP" + PROXY_MAXIMUM_BATCH_SIZE_ENVIRONMENT_KEY = "PROXY_MAXIMUM_REQ_BATCH_SIZE" + DEFAULT_PROXY_MAXIMUM_BATCH_SIZE = 500 PROXY_SERVICE_PORT_ENVIRONMENT_KEY = "PROXY_SERVICE_PORT" DATABASE_NAME_ENVIRONMENT_KEY = "DATABASE_NAME" DATABASE_ENDPOINT_URL_ENVIRONMENT_KEY = "DATABASE_ENDPOINT_URL" @@ -279,6 +282,7 @@ func ReadConfig() Config { EnableHeightBasedRouting: EnvOrDefaultBool(PROXY_HEIGHT_BASED_ROUTING_ENABLED_KEY, false), ProxyPruningBackendHostURLMapRaw: rawProxyPruningBackendHostURLMap, ProxyPruningBackendHostURLMap: parsedProxyPruningBackendHostURLMap, + ProxyMaximumBatchSize: EnvOrDefaultInt(PROXY_MAXIMUM_BATCH_SIZE_ENVIRONMENT_KEY, DEFAULT_PROXY_MAXIMUM_BATCH_SIZE), DatabaseName: os.Getenv(DATABASE_NAME_ENVIRONMENT_KEY), DatabaseEndpointURL: os.Getenv(DATABASE_ENDPOINT_URL_ENVIRONMENT_KEY), DatabaseUserName: os.Getenv(DATABASE_USERNAME_ENVIRONMENT_KEY), diff --git a/decode/evm_rpc.go b/decode/evm_rpc.go index 51a832b..a50f4a3 100644 --- a/decode/evm_rpc.go +++ b/decode/evm_rpc.go @@ -254,6 +254,13 @@ func DecodeEVMRPCRequest(body []byte) (*EVMRPCRequestEnvelope, error) { return &request, err } +// DecodeEVMRPCRequest attempts to decode raw bytes to a list of EVMRPCRequestEnvelopes +func DecodeEVMRPCRequestList(body []byte) ([]*EVMRPCRequestEnvelope, error) { + var request []*EVMRPCRequestEnvelope + err := json.Unmarshal(body, &request) + return request, err +} + // ExtractBlockNumberFromEVMRPCRequest attempts to extract the block number // associated with a request if // - the request is a valid evm rpc request diff --git a/docker-compose.yml b/docker-compose.yml index fc227e5..1731230 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,7 @@ services: # run redis for proxy service to cache responses redis: - image: 'bitnami/redis:latest' + image: "bitnami/redis:latest" env_file: .env ports: - "${REDIS_HOST_PORT}:${REDIS_CONTAINER_PORT}" @@ -59,6 +59,7 @@ services: ports: - "${PROXY_HOST_PORT}:${PROXY_CONTAINER_PORT}" - "${PROXY_CONTAINER_EVM_RPC_PRUNING_PORT}:${PROXY_CONTAINER_PORT}" + - "${TEST_UNCONFIGURED_PROXY_PORT}:${PROXY_CONTAINER_PORT}" - "${PROXY_HOST_DEBUG_PORT}:${PROXY_CONTAINER_DEBUG_PORT}" cap_add: - SYS_PTRACE # Allows for attaching debugger to process in this container diff --git a/main_batch_test.go b/main_batch_test.go new file mode 100644 index 0000000..68028ab --- /dev/null +++ b/main_batch_test.go @@ -0,0 +1,299 @@ +package main_test + +import ( + "bytes" + "encoding/json" + "fmt" + "io" + "net/http" + "strconv" + "testing" + "time" + + "github.com/kava-labs/kava-proxy-service/clients/database" + "github.com/kava-labs/kava-proxy-service/decode" + "github.com/kava-labs/kava-proxy-service/service/cachemdw" + "github.com/redis/go-redis/v9" + "github.com/stretchr/testify/require" +) + +func buildBigBatch(n int, sameBlock bool) []*decode.EVMRPCRequestEnvelope { + batch := make([]*decode.EVMRPCRequestEnvelope, 0, n) + // create n requests + for i := 0; i < n; i++ { + block := "0x1" + if !sameBlock { + block = fmt.Sprintf("0x%s", strconv.FormatInt(int64(i)+1, 16)) + } + batch = append(batch, &decode.EVMRPCRequestEnvelope{ + JSONRPCVersion: "2.0", + ID: i, + Method: "eth_getBlockByNumber", + Params: []interface{}{block, false}, + }) + } + return batch +} + +func TestE2ETest_ValidBatchEvmRequests(t *testing.T) { + redisClient := redis.NewClient(&redis.Options{ + Addr: redisURL, + Password: redisPassword, + DB: 0, + }) + cleanUpRedis(t, redisClient) + expectKeysNum(t, redisClient, 0) + + db, err := database.NewPostgresClient(databaseConfig) + require.NoError(t, err) + cleanMetricsDb(t, db) + + // NOTE! ordering matters for these tests! earlier request responses may end up in the cache. + testCases := []struct { + name string + req []*decode.EVMRPCRequestEnvelope + expectedCacheHeader string + expectedErrStatus int + expectedNumMetrics int + }{ + { + name: "first request, valid & not coming from the cache", + req: []*decode.EVMRPCRequestEnvelope{ + { + JSONRPCVersion: "2.0", + ID: "magic!", + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x1", false}, + }, + }, + expectedCacheHeader: cachemdw.CacheMissHeaderValue, + expectedNumMetrics: 1, + }, + { + name: "multiple requests, valid & none coming from the cache", + req: []*decode.EVMRPCRequestEnvelope{ + { + JSONRPCVersion: "2.0", + ID: "magic!", + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x2", false}, + }, + { + JSONRPCVersion: "2.0", + ID: 123456, + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x3", false}, + }, + }, + expectedCacheHeader: cachemdw.CacheMissHeaderValue, + expectedNumMetrics: 2, + }, + { + name: "multiple requests, valid & some coming from the cache", + req: []*decode.EVMRPCRequestEnvelope{ + { + JSONRPCVersion: "2.0", + ID: "magic!", + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x2", false}, + }, + { + JSONRPCVersion: "2.0", + ID: 123456, + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x4", false}, + }, + }, + expectedCacheHeader: cachemdw.CachePartialHeaderValue, + expectedNumMetrics: 2, + }, + { + name: "multiple requests, valid & all coming from the cache", + req: []*decode.EVMRPCRequestEnvelope{ + { + JSONRPCVersion: "2.0", + ID: "magic!", + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x2", false}, + }, + { + JSONRPCVersion: "2.0", + ID: nil, + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x1", false}, + }, + { + JSONRPCVersion: "2.0", + ID: 123456, + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x3", false}, + }, + }, + expectedCacheHeader: cachemdw.CacheHitHeaderValue, + expectedNumMetrics: 3, + }, + { + name: "empty request", + req: []*decode.EVMRPCRequestEnvelope{nil}, // <-- empty! + expectedCacheHeader: cachemdw.CacheMissHeaderValue, + expectedNumMetrics: 0, + }, + { + name: "empty & non-empty requests, partial cache hit", + req: []*decode.EVMRPCRequestEnvelope{ + nil, // <-- empty! + { + JSONRPCVersion: "2.0", + ID: "this block is in the cache", + Method: "eth_getBlockByNumber", + Params: []interface{}{"0x1", false}, + }, + }, + expectedCacheHeader: cachemdw.CachePartialHeaderValue, + expectedNumMetrics: 1, + }, + { + name: "empty & non-empty requests, cache miss", + req: []*decode.EVMRPCRequestEnvelope{ + nil, // <-- empty! + { + JSONRPCVersion: "2.0", + ID: "this block is NOT in the cache", + Method: "eth_getBlockByNumber", + Params: []interface{}{"0xa", false}, + }, + }, + expectedCacheHeader: cachemdw.CacheMissHeaderValue, + expectedNumMetrics: 1, + }, + { + name: "big-as-can-be batch, some cache hits", + req: buildBigBatch(proxyServiceMaxBatchSize, false), + expectedCacheHeader: cachemdw.CachePartialHeaderValue, + expectedNumMetrics: proxyServiceMaxBatchSize, + }, + { + name: "big-as-can-be batch, all cache hits", + req: buildBigBatch(proxyServiceMaxBatchSize, true), + expectedCacheHeader: cachemdw.CacheHitHeaderValue, + expectedNumMetrics: proxyServiceMaxBatchSize, + }, + { + name: "too-big batch => responds 413", + req: buildBigBatch(proxyServiceMaxBatchSize+1, false), + expectedCacheHeader: cachemdw.CacheHitHeaderValue, + expectedErrStatus: http.StatusRequestEntityTooLarge, + expectedNumMetrics: 0, + }, + } + + for _, tc := range testCases { + startTime := time.Now() + t.Run(tc.name, func(t *testing.T) { + reqInJSON, err := json.Marshal(tc.req) + require.NoError(t, err) + + resp, err := http.Post(proxyServiceURL, "application/json", bytes.NewBuffer(reqInJSON)) + require.NoError(t, err) + + if tc.expectedErrStatus != 0 { + require.Equal(t, tc.expectedErrStatus, resp.StatusCode, "unexpected response status") + return + } + require.Equal(t, http.StatusOK, resp.StatusCode) + + body, err := io.ReadAll(resp.Body) + require.NoError(t, err, "failed to read response body") + + var decoded []*jsonRpcResponse + err = json.Unmarshal(body, &decoded) + require.NoError(t, err, "failed to unmarshal response into array of responses") + + // expect same number of responses as requests + require.Len(t, decoded, len(tc.req)) + + // expect matching ids + for i, d := range decoded { + var reqId interface{} = nil + if tc.req[i] != nil { + reqId = tc.req[i].ID + } + // EqualValues here because json ints unmarshal as float64s + require.EqualValues(t, reqId, d.Id) + } + + // check expected cache status header + require.Equal(t, tc.expectedCacheHeader, resp.Header.Get(cachemdw.CacheHeaderKey)) + + // verify CORS header + require.Equal(t, resp.Header[accessControlAllowOriginHeaderName], []string{"*"}) + + // wait for all metrics to be created. + // besides verification, waiting for the metrics ensures future tests don't fail b/c metrics are being processed + waitForMetricsInWindow(t, tc.expectedNumMetrics, db, startTime, []string{}) + }) + } + + // clear all metrics & cache state to make future metrics tests less finicky + // (more data increases the read/write to db & redis, and these tests make many db & cache entries) + cleanMetricsDb(t, db) + cleanUpRedis(t, redisClient) +} + +func TestE2ETest_BatchEvmRequestErrorHandling(t *testing.T) { + t.Run("no backend configured (bad gateway error)", func(t *testing.T) { + validReq := []*decode.EVMRPCRequestEnvelope{ + newJsonRpcRequest(123, "eth_getBlockByNumber", []interface{}{"0x1", false}), + newJsonRpcRequest("another-req", "eth_getBlockByNumber", []interface{}{"0x2", false}), + } + reqInJSON, err := json.Marshal(validReq) + require.NoError(t, err) + resp, err := http.Post(proxyUnconfiguredUrl, "application/json", bytes.NewBuffer(reqInJSON)) + + require.NoError(t, err) + require.Equal(t, http.StatusBadGateway, resp.StatusCode) + }) + + t.Run("empty batch", func(t *testing.T) { + emptyReq := []*decode.EVMRPCRequestEnvelope{} + reqInJSON, err := json.Marshal(emptyReq) + require.NoError(t, err) + + resp, err := http.Post(proxyServiceURL, "application/json", bytes.NewBuffer(reqInJSON)) + require.NoError(t, err) + require.Equal(t, http.StatusOK, resp.StatusCode) + + body, err := io.ReadAll(resp.Body) + require.NoError(t, err, "failed to read response body") + + var decoded *jsonRpcResponse // <--- NOT an array response + err = json.Unmarshal(body, &decoded) + require.NoError(t, err, "failed to unmarshal response into array of responses") + + require.Equal(t, -32600, decoded.JsonRpcError.Code) + require.Equal(t, "empty batch", decoded.JsonRpcError.Message) + }) + + t.Run("unsupported method", func(t *testing.T) { + resp, err := http.Get(proxyServiceURL) // <--- GET, not POST + require.NoError(t, err) + require.Equal(t, http.StatusMethodNotAllowed, resp.StatusCode) + }) + + t.Run("invalid JSON", func(t *testing.T) { + req := []byte(`[{id:"almost valid json (missing double quotes around id!)"}]`) + resp, err := http.Post(proxyServiceURL, "application/json", bytes.NewBuffer(req)) + require.NoError(t, err) + require.Equal(t, http.StatusOK, resp.StatusCode) + + body, err := io.ReadAll(resp.Body) + require.NoError(t, err, "failed to read response body") + + var decoded *jsonRpcResponse // <--- NOT an array response + err = json.Unmarshal(body, &decoded) + require.NoError(t, err, "failed to unmarshal response into array of responses") + + require.Equal(t, -32700, decoded.JsonRpcError.Code) + require.Equal(t, "parse error", decoded.JsonRpcError.Message) + }) +} diff --git a/main_test.go b/main_test.go index 6daf820..4758d1b 100644 --- a/main_test.go +++ b/main_test.go @@ -28,6 +28,7 @@ import ( "github.com/stretchr/testify/require" "github.com/kava-labs/kava-proxy-service/clients/database" + "github.com/kava-labs/kava-proxy-service/config" "github.com/kava-labs/kava-proxy-service/decode" "github.com/kava-labs/kava-proxy-service/logging" "github.com/kava-labs/kava-proxy-service/service" @@ -55,11 +56,14 @@ var ( return logger }() + proxyUnconfiguredUrl = os.Getenv("TEST_UNCONFIGURED_PROXY_URL") + proxyServiceURL = os.Getenv("TEST_PROXY_SERVICE_EVM_RPC_URL") proxyServiceHostname = os.Getenv("TEST_PROXY_SERVICE_EVM_RPC_HOSTNAME") proxyServicePruningURL = os.Getenv("TEST_PROXY_SERVICE_EVM_RPC_PRUNING_URL") proxyServiceHeightBasedRouting, _ = strconv.ParseBool(os.Getenv("TEST_PROXY_HEIGHT_BASED_ROUTING_ENABLED")) + proxyServiceMaxBatchSize = config.EnvOrDefaultInt(config.PROXY_MAXIMUM_BATCH_SIZE_ENVIRONMENT_KEY, config.DEFAULT_PROXY_MAXIMUM_BATCH_SIZE) databaseURL = os.Getenv("TEST_DATABASE_ENDPOINT_URL") databasePassword = os.Getenv("DATABASE_PASSWORD") @@ -81,12 +85,9 @@ var ( ) // lookup all the request metrics in the database paging as necessary -// search for any request metrics between starTime and time.Now() for particular request methods +// search for any request metrics between startTime and time.Now() for particular request methods +// if testedmethods is empty, all metrics in timeframe are returned. func findMetricsInWindowForMethods(db database.PostgresClient, startTime time.Time, testedmethods []string) []database.ProxiedRequestMetric { - // on fast machines the expected metrics haven't finished being created by the time they are being queried. - // hackily sleep for 10 micro seconds & then get current time - adjustment := 10 * time.Microsecond - time.Sleep(adjustment) endTime := time.Now() var nextCursor int64 @@ -111,7 +112,14 @@ func findMetricsInWindowForMethods(db database.PostgresClient, startTime time.Ti // iterate in reverse order to start checking the most recent request metrics first for i := len(proxiedRequestMetrics) - 1; i >= 0; i-- { requestMetric := proxiedRequestMetrics[i] - if requestMetric.RequestTime.After(startTime) && requestMetric.RequestTime.Before(endTime) { + isBetween := requestMetric.RequestTime.After(startTime) && requestMetric.RequestTime.Before(endTime) + if isBetween || requestMetric.RequestTime.Equal(startTime) || requestMetric.RequestTime.Equal(endTime) { + // collect all metrics if testedmethods = [] + if len(testedmethods) == 0 { + requestMetricsDuringRequestWindow = append(requestMetricsDuringRequestWindow, requestMetric) + continue + } + // collect metrics for any desired methods for _, testedMethod := range testedmethods { if requestMetric.MethodName == testedMethod { requestMetricsDuringRequestWindow = append(requestMetricsDuringRequestWindow, requestMetric) @@ -123,6 +131,34 @@ func findMetricsInWindowForMethods(db database.PostgresClient, startTime time.Ti return requestMetricsDuringRequestWindow } +// tests for metrics can frequently fail to pass because the check for what's there happens +// more quickly than the writes to the metrics database. +// remove some of that finickiness without unnecessary sleeping by polling for the expected requests +// and only considering it a fail if it times out. +func waitForMetricsInWindow( + t *testing.T, + expected int, + db database.PostgresClient, + startTime time.Time, + testedmethods []string, +) (metrics []database.ProxiedRequestMetric) { + timeoutMin := 1 * time.Second + // scale the timeout by the number of expected requests, or at least 1 second + timeout := time.Duration(expected+1) * 100 * time.Millisecond + if timeout < timeoutMin { + timeout = timeoutMin + } + + // besides verification, waiting for the metrics ensures future tests don't fail b/c metrics are being processed + require.Eventually(t, func() bool { + metrics = findMetricsInWindowForMethods(db, startTime, []string{}) + return len(metrics) >= expected + }, timeout, time.Millisecond, + fmt.Sprintf("failed to find %d metrics in %f seconds from start %s", expected, timeout.Seconds(), startTime)) + + return +} + func TestE2ETestProxyReturnsNonZeroLatestBlockHeader(t *testing.T) { client, err := ethclient.Dial(proxyServiceURL) @@ -172,13 +208,10 @@ func TestE2ETestProxyCreatesRequestMetricForEachRequest(t *testing.T) { require.NoError(t, err) - requestMetricsDuringRequestWindow := findMetricsInWindowForMethods(databaseClient, startTime, []string{testEthMethodName}) - - require.Greater(t, len(requestMetricsDuringRequestWindow), 0) + requestMetricsDuringRequestWindow := waitForMetricsInWindow(t, 1, databaseClient, startTime, []string{testEthMethodName}) requestMetricDuringRequestWindow := requestMetricsDuringRequestWindow[0] - require.Greater(t, requestMetricDuringRequestWindow.ResponseLatencyMilliseconds, int64(0)) require.Equal(t, requestMetricDuringRequestWindow.MethodName, testEthMethodName) require.Equal(t, requestMetricDuringRequestWindow.Hostname, proxyServiceHostname) require.NotEqual(t, requestMetricDuringRequestWindow.RequestIP, "") @@ -215,9 +248,10 @@ func TestE2ETestProxyTracksBlockNumberForEth_getBlockByNumberRequest(t *testing. require.NoError(t, err) - requestMetricsDuringRequestWindow := findMetricsInWindowForMethods(databaseClient, startTime, []string{testEthMethodName}) + requestMetricsDuringRequestWindow := waitForMetricsInWindow( + t, 1, databaseClient, startTime, []string{testEthMethodName}, + ) - require.Greater(t, len(requestMetricsDuringRequestWindow), 0) requestMetricDuringRequestWindow := requestMetricsDuringRequestWindow[0] require.Equal(t, requestMetricDuringRequestWindow.MethodName, testEthMethodName) @@ -244,9 +278,10 @@ func TestE2ETestProxyTracksBlockTagForEth_getBlockByNumberRequest(t *testing.T) require.NoError(t, err) - requestMetricsDuringRequestWindow := findMetricsInWindowForMethods(databaseClient, startTime, []string{testEthMethodName}) + requestMetricsDuringRequestWindow := waitForMetricsInWindow( + t, 1, databaseClient, startTime, []string{testEthMethodName}, + ) - require.Greater(t, len(requestMetricsDuringRequestWindow), 0) requestMetricDuringRequestWindow := requestMetricsDuringRequestWindow[0] require.Equal(t, requestMetricDuringRequestWindow.MethodName, testEthMethodName) @@ -303,10 +338,9 @@ func TestE2ETestProxyTracksBlockNumberForMethodsWithBlockNumberParam(t *testing. // eth_call _, _ = client.CallContract(testContext, ethereum.CallMsg{}, requestBlockNumber) - requestMetricsDuringRequestWindow := findMetricsInWindowForMethods(databaseClient, startTime, testedmethods) - - // should be the above but geth doesn't implement client methods for all of them - require.GreaterOrEqual(t, len(requestMetricsDuringRequestWindow), 7) + requestMetricsDuringRequestWindow := waitForMetricsInWindow( + t, 7, databaseClient, startTime, testedmethods, + ) for _, requestMetricDuringRequestWindow := range requestMetricsDuringRequestWindow { require.NotNil(t, *requestMetricDuringRequestWindow.BlockNumber) @@ -356,11 +390,9 @@ func TestE2ETestProxyTracksBlockNumberForMethodsWithBlockHashParam(t *testing.T) // eth_getTransactionByBlockHashAndIndex _, _ = client.TransactionInBlock(testContext, requestBlockHash, 0) - requestMetricsDuringRequestWindow := findMetricsInWindowForMethods(databaseClient, startTime, testedmethods) - - // require.GreaterOrEqual(t, len(requestMetricsDuringRequestWindow), len(testedmethods)) - // should be the above but geth doesn't implement client methods for all of them - require.GreaterOrEqual(t, len(requestMetricsDuringRequestWindow), 3) + requestMetricsDuringRequestWindow := waitForMetricsInWindow( + t, 3, databaseClient, startTime, testedmethods, + ) for _, requestMetricDuringRequestWindow := range requestMetricsDuringRequestWindow { require.NotNil(t, *requestMetricDuringRequestWindow.BlockNumber) @@ -441,10 +473,9 @@ func TestE2ETest_HeightBasedRouting(t *testing.T) { err := rpc.Call(nil, tc.method, tc.params...) require.NoError(t, err) - metrics := findMetricsInWindowForMethods(databaseClient, startTime, []string{tc.method}) + metrics := waitForMetricsInWindow(t, 1, databaseClient, startTime, []string{tc.method}) require.Len(t, metrics, 1) - fmt.Printf("%+v\n", metrics[0]) require.Equal(t, tc.method, metrics[0].MethodName) require.Equal(t, tc.expectRoute, metrics[0].ResponseBackend) }) @@ -494,6 +525,7 @@ func TestE2ETestCachingMdwWithBlockNumberParam(t *testing.T) { expectKeysNum(t, redisClient, tc.keysNum) expectedKey := "local-chain:evm-request:eth_getBlockByNumber:sha256:d08b426164eacf6646fb1817403ec0af5d37869a0f32a01ebfab3096fa4999be" containsKey(t, redisClient, expectedKey) + require.Equal(t, cacheMissResp.Header[accessControlAllowOriginHeaderName], []string{"*"}) // eth_getBlockByNumber - cache HIT cacheHitResp := mkJsonRpcRequest(t, proxyServiceURL, 1, tc.method, tc.params) @@ -673,7 +705,7 @@ func TestE2ETestCachingMdwWithBlockNumberParam_Metrics(t *testing.T) { } // get metrics between startTime & now for eth_getBlockByNumber requests - filteredMetrics := findMetricsInWindowForMethods(db, startTime, []string{"eth_getBlockByNumber"}) + filteredMetrics := waitForMetricsInWindow(t, 4, db, startTime, []string{"eth_getBlockByNumber"}) // we expect 4 metrics, 2 of them are cache hits and two of them are cache misses require.Len(t, filteredMetrics, 4) @@ -1130,6 +1162,11 @@ func cleanUpRedis(t *testing.T, redisClient *redis.Client) { } } +func cleanMetricsDb(t *testing.T, db database.PostgresClient) { + _, err := db.Exec("TRUNCATE proxied_request_metrics;") + require.NoError(t, err) +} + func mkJsonRpcRequest(t *testing.T, proxyServiceURL string, id interface{}, method string, params []interface{}) *http.Response { req := newJsonRpcRequest(id, method, params) reqInJSON, err := json.Marshal(req) @@ -1142,19 +1179,12 @@ func mkJsonRpcRequest(t *testing.T, proxyServiceURL string, id interface{}, meth return resp } -type jsonRpcRequest struct { - JsonRpc string `json:"jsonrpc"` - Id interface{} `json:"id"` - Method string `json:"method"` - Params []interface{} `json:"params"` -} - -func newJsonRpcRequest(id interface{}, method string, params []interface{}) *jsonRpcRequest { - return &jsonRpcRequest{ - JsonRpc: "2.0", - Id: id, - Method: method, - Params: params, +func newJsonRpcRequest(id interface{}, method string, params []interface{}) *decode.EVMRPCRequestEnvelope { + return &decode.EVMRPCRequestEnvelope{ + JSONRPCVersion: "2.0", + ID: id, + Method: method, + Params: params, } } diff --git a/routines/metric_partitioning_test.go b/routines/metric_partitioning_test.go index 458362f..436b96f 100644 --- a/routines/metric_partitioning_test.go +++ b/routines/metric_partitioning_test.go @@ -34,7 +34,7 @@ func TestE2ETestMetricPartitioningRoutinePrefillsExpectedPartitionsAfterStartupD // prepare time.Sleep(time.Duration(MetricPartitioningRoutineDelayFirstRunSeconds) * time.Second) - expectedPartitions, err := partitionsForPeriod(time.Now(), int(configuredPrefillDays)) + expectedPartitions, err := partitionsForPeriod(time.Now().UTC(), int(configuredPrefillDays)) assert.Nil(t, err) diff --git a/service/batchmdw/batch_processor.go b/service/batchmdw/batch_processor.go new file mode 100644 index 0000000..e88a943 --- /dev/null +++ b/service/batchmdw/batch_processor.go @@ -0,0 +1,142 @@ +package batchmdw + +import ( + "bytes" + "encoding/json" + "net/http" + "sync" + + "github.com/kava-labs/kava-proxy-service/service/cachemdw" +) + +// BatchProcessor makes multiple requests to the underlying handler and then combines all the +// responses into a single response. +// It assumes all individual responses are valid json. Each response is then marshaled into an array. +type BatchProcessor struct { + handler http.HandlerFunc + requests []*http.Request + responses []*bytes.Buffer + header http.Header + cacheHits int + status int + mu sync.Mutex +} + +// NewBatchProcessor creates a BatchProcessor for combining the responses of reqs to the handler +func NewBatchProcessor(handler http.HandlerFunc, reqs []*http.Request) *BatchProcessor { + return &BatchProcessor{ + handler: handler, + requests: reqs, + responses: make([]*bytes.Buffer, len(reqs)), + header: nil, + status: http.StatusOK, + mu: sync.Mutex{}, + } +} + +// RequestAndServe concurrently sends each request to the underlying handler +// Responses are then collated into a JSON array and written to the ResponseWriter +func (bp *BatchProcessor) RequestAndServe(w http.ResponseWriter) error { + wg := sync.WaitGroup{} + for i, r := range bp.requests { + wg.Add(1) + + go func(idx int, req *http.Request) { + + buf := new(bytes.Buffer) + frw := newFakeResponseWriter(buf, bp.setErrStatus) + bp.handler.ServeHTTP(frw, req) + + bp.setResponse(idx, buf) + bp.applyHeaders(frw.header) + + wg.Done() + }(i, r) + } + + wg.Wait() + + // write all headers + for k, v := range bp.header { + for _, val := range v { + w.Header().Set(k, val) + } + } + + // write cache hit header based on results of all requests + w.Header().Set(cachemdw.CacheHeaderKey, cacheHitValue(len(bp.requests), bp.cacheHits)) + + // return error status if any sub-request returned a non-200 response + if bp.status != http.StatusOK { + w.WriteHeader(bp.status) + w.Write(nil) + return nil + } + + // marshal results into a JSON array + rawMessages := make([]json.RawMessage, 0, len(bp.requests)) + for _, r := range bp.responses { + rawMessages = append(rawMessages, json.RawMessage(r.Bytes())) + } + res, err := json.Marshal(rawMessages) + if err != nil { + return err + } + + w.WriteHeader(http.StatusOK) + w.Write(res) + + return nil +} + +// setResponse is a thread-safe method to set the response for the query with index idx +func (bp *BatchProcessor) setResponse(idx int, res *bytes.Buffer) { + bp.mu.Lock() + defer bp.mu.Unlock() + bp.responses[idx] = res +} + +// applyHeaders is a thread-safe method for combining new response headers with existing results. +// the headers of the first response are used, except for Content-Length and the cache hit status. +// Cache hits are tracked so a representative value can be set after all responses are received. +func (bp *BatchProcessor) applyHeaders(h http.Header) { + bp.mu.Lock() + defer bp.mu.Unlock() + + // initialize all headers with the value of the first response + if bp.header == nil { + bp.header = h.Clone() + // clear content length, will be set by actual Write to client + // must be cleared in order to prevent premature end of client read + bp.header.Del("Content-Length") + // clear cache hit header, will be set by flush() + bp.header.Del(cachemdw.CacheHeaderKey) + } + + // track cache hits + if cachemdw.IsCacheHitHeaders(h) { + bp.cacheHits += 1 + } +} + +// SetErrStatus tracks an error status code if any request returns a non-200 response +func (bp *BatchProcessor) setErrStatus(status int, _ http.Header, _ *bytes.Buffer) { + bp.mu.Lock() + defer bp.mu.Unlock() + bp.status = status +} + +// cacheHitValue handles determining the value for the combined response's CacheHeader +func cacheHitValue(totalNum, cacheHits int) string { + // NOTE: middleware assumes non-zero batch length. + // totalNum should never be 0. if it is, this will indicate a cache MISS. + if cacheHits == 0 || totalNum == 0 { + // case 1. no results from cache => MISS + return cachemdw.CacheMissHeaderValue + } else if cacheHits == totalNum { + // case 2: all results from cache => HIT + return cachemdw.CacheHitHeaderValue + } + //case 3: some results from cache => PARTIAL + return cachemdw.CachePartialHeaderValue +} diff --git a/service/batchmdw/batch_processor_test.go b/service/batchmdw/batch_processor_test.go new file mode 100644 index 0000000..42ab445 --- /dev/null +++ b/service/batchmdw/batch_processor_test.go @@ -0,0 +1,47 @@ +package batchmdw + +import ( + "testing" + + "github.com/kava-labs/kava-proxy-service/service/cachemdw" + "github.com/stretchr/testify/require" +) + +func TestUnitTest_cacheHitValue(t *testing.T) { + for _, tc := range []struct { + name string + total int + hits int + expected string + }{ + { + name: "no hits => MISS", + total: 5, + hits: 0, + expected: cachemdw.CacheMissHeaderValue, + }, + { + name: "all hits => HIT", + total: 5, + hits: 5, + expected: cachemdw.CacheHitHeaderValue, + }, + { + name: "some hits => PARTIAL", + total: 5, + hits: 3, + expected: cachemdw.CachePartialHeaderValue, + }, + { + name: "invalid 0 case => MISS", + total: 0, + hits: 0, + expected: cachemdw.CacheMissHeaderValue, + }, + } { + t.Run(tc.name, func(t *testing.T) { + actual := cacheHitValue(tc.total, tc.hits) + require.Equal(t, tc.expected, actual) + }) + } +} diff --git a/service/batchmdw/batchmdw.go b/service/batchmdw/batchmdw.go new file mode 100644 index 0000000..ed0a729 --- /dev/null +++ b/service/batchmdw/batchmdw.go @@ -0,0 +1,83 @@ +package batchmdw + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" + + "github.com/kava-labs/kava-proxy-service/decode" + "github.com/kava-labs/kava-proxy-service/logging" +) + +// BatchMiddlewareConfig are the necessary configuration options for the Batch Processing Middleware +type BatchMiddlewareConfig struct { + ServiceLogger *logging.ServiceLogger + + ContextKeyDecodedRequestBatch string + ContextKeyDecodedRequestSingle string + MaximumBatchSize int +} + +// CreateBatchProcessingMiddleware handles batch EVM requests +// The batched request is pulled from the context. +// Then, each request is proxied via the singleRequestHandler +// and the responses are collated into a single result which is served to the client. +func CreateBatchProcessingMiddleware( + singleRequestHandler http.HandlerFunc, + config *BatchMiddlewareConfig, +) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + batch := r.Context().Value(config.ContextKeyDecodedRequestBatch) + batchReq, ok := (batch).([]*decode.EVMRPCRequestEnvelope) + if !ok { + // this should only happen if the service is misconfigured. + // the DecodeRequestMiddleware should only route to BatchProcessingMiddleware + // if it successfully decodes a non-zero length batch of EVM requests. + config.ServiceLogger.Error().Msg("BatchProcessingMiddleware expected batch EVM request in context but found none") + // if we can't get decoded request then assign it empty structure to avoid panics + batchReq = []*decode.EVMRPCRequestEnvelope{} + } + if len(batchReq) > config.MaximumBatchSize { + config.ServiceLogger.Debug().Int("size", len(batchReq)).Int("max allowed", config.MaximumBatchSize).Msg("request batch size too large") + w.WriteHeader(http.StatusRequestEntityTooLarge) + w.Write([]byte(fmt.Sprintf("request batch size is too large (%d>%d)", len(batchReq), config.MaximumBatchSize))) + return + } + + config.ServiceLogger.Trace().Any("batch", batchReq).Msg("[BatchProcessingMiddleware] process EVM batch request") + + reqs := make([]*http.Request, 0, len(batchReq)) + for _, single := range batchReq { + // proxy service middlewares expect decoded context key to not be set if the request is nil + // not setting it ensures no nil pointer panics if `null` is included in batch array of requests + singleRequestContext := r.Context() + if single != nil { + singleRequestContext = context.WithValue(r.Context(), config.ContextKeyDecodedRequestSingle, single) + } + + body, err := json.Marshal(single) + if err != nil { + // this shouldn't happen b/c we are marshaling something we unmarshaled. + config.ServiceLogger.Error().Err(err).Any("request", single).Msg("[BatchProcessingMiddleware] unable to marshal request in batch") + // if it does happen, degrade gracefully by skipping request. + continue + } + + // build request as if it's the only one being requested. + req, err := http.NewRequestWithContext(singleRequestContext, r.Method, r.URL.String(), bytes.NewBuffer(body)) + if err != nil { + panic(fmt.Sprintf("failed build sub-request: %s", err)) + } + req.Host = r.Host + req.Header = r.Header + + reqs = append(reqs, req) + } + + // process all requests and respond with results in an array + batchProcessor := NewBatchProcessor(singleRequestHandler, reqs) + batchProcessor.RequestAndServe(w) + } +} diff --git a/service/batchmdw/doc.go b/service/batchmdw/doc.go new file mode 100644 index 0000000..c23a7ca --- /dev/null +++ b/service/batchmdw/doc.go @@ -0,0 +1,16 @@ +// Package batchmdw is responsible for the middleware used to handle batch requests. + +// The primary export is CreateBatchProcessingMiddleware which separates each individual request +// in the batch and proxies it as if it were a single request. +// The responses are then combined into a single JSON array before being sent to the client. + +// A best effort is made to forward the appropriate response headers. +// The headers from the response for the first request are used with the exception of: +// - Content-Length, which is dropped to ensure client reads whole response +// - The cache status header set by cachemdw, which is updated to reflect the cache-hit status of _all_ requests. + +// The cache status header will be set to: +// - `HIT` when all requests are cache hits +// - `MISS` when all requests are cache misses +// - `PARTIAL` when there is a mix of cache hits and misses +package batchmdw diff --git a/service/batchmdw/fake_response_writer.go b/service/batchmdw/fake_response_writer.go new file mode 100644 index 0000000..036ea14 --- /dev/null +++ b/service/batchmdw/fake_response_writer.go @@ -0,0 +1,52 @@ +package batchmdw + +import ( + "bytes" + "net/http" +) + +type ErrorHandler = func(status int, headers http.Header, body *bytes.Buffer) + +// fakeResponseWriter is a custom implementation of http.ResponseWriter that writes all content +// to a buffer. +type fakeResponseWriter struct { + // body is the response body for the current request + body *bytes.Buffer + // header is the response headers for the current request + header http.Header + // onErrorHandler is a method for handling non-OK status responses + onErrorHandler ErrorHandler +} + +var _ http.ResponseWriter = &fakeResponseWriter{} + +// newFakeResponseWriter creates a new fakeResponseWriter that wraps the provided buffer. +func newFakeResponseWriter(buf *bytes.Buffer, onErrorHandler ErrorHandler) *fakeResponseWriter { + return &fakeResponseWriter{ + header: make(http.Header), + body: buf, + onErrorHandler: onErrorHandler, + } +} + +// Write implements the Write method of http.ResponseWriter +// it overrides the Write method to capture the response content for the current request +func (w *fakeResponseWriter) Write(b []byte) (int, error) { + // Write to the buffer + w.body.Write(b) + return len(b), nil +} + +// Header implements the Header method of http.ResponseWriter +// it overrides the Header method to capture the response headers for the current request +func (w *fakeResponseWriter) Header() http.Header { + return w.header +} + +// WriteHeader implements the WriteHeader method of http.ResponseWriter +// it overrides the WriteHeader method to prevent proxied requests from having finalized headers +func (w *fakeResponseWriter) WriteHeader(status int) { + if status != http.StatusOK { + w.onErrorHandler(status, w.header, w.body) + } +} diff --git a/service/cachemdw/cache.go b/service/cachemdw/cache.go index cc7ce50..8110d5b 100644 --- a/service/cachemdw/cache.go +++ b/service/cachemdw/cache.go @@ -80,6 +80,13 @@ func IsCacheable( logger *logging.ServiceLogger, req *decode.EVMRPCRequestEnvelope, ) bool { + // technically, we _could_ cache the "invalid request" response for `null` requests... + // however, doing so will result in different than expected responses for batch requests + // ie. {error} response vs [{error}] (the not-list is expected) + if req == nil { + return false + } + if req.Method == "" { return false } diff --git a/service/cachemdw/is_cached_middleware.go b/service/cachemdw/is_cached_middleware.go index e41b4c9..24e6887 100644 --- a/service/cachemdw/is_cached_middleware.go +++ b/service/cachemdw/is_cached_middleware.go @@ -12,9 +12,10 @@ const ( CachedContextKey = "X-KAVA-PROXY-CACHED" ResponseContextKey = "X-KAVA-PROXY-RESPONSE" - CacheHeaderKey = "X-Kava-Proxy-Cache-Status" - CacheHitHeaderValue = "HIT" - CacheMissHeaderValue = "MISS" + CacheHeaderKey = "X-Kava-Proxy-Cache-Status" + CacheHitHeaderValue = "HIT" + CacheMissHeaderValue = "MISS" + CachePartialHeaderValue = "PARTIAL" ) // IsCachedMiddleware returns kava-proxy-service compatible middleware which works in the following way: @@ -83,3 +84,9 @@ func IsRequestCached(ctx context.Context) bool { cached, ok := ctx.Value(CachedContextKey).(bool) return ok && cached } + +// IsCacheHitHeaders returns true when the passed in response headers are for a request that +// came from the cache. +func IsCacheHitHeaders(header http.Header) bool { + return header.Get(CacheHeaderKey) == CacheHitHeaderValue +} diff --git a/service/middleware.go b/service/middleware.go index 5b19e72..342e703 100644 --- a/service/middleware.go +++ b/service/middleware.go @@ -22,6 +22,7 @@ const ( DefaultAnonymousUserAgent = "anon" // Service defined context keys DecodedRequestContextKey = "X-KAVA-PROXY-DECODED-REQUEST-BODY" + DecodedBatchRequestContextKey = "X-KAVA-PROXY-DECODED-BATCH-REQUEST-BODY" OriginRoundtripLatencyMillisecondsKey = "X-KAVA-PROXY-ORIGIN-ROUNDTRIP-LATENCY-MILLISECONDS" RequestStartTimeContextKey = "X-KAVA-PROXY-REQUEST-START-TIME" RequestHostnameContextKey = "X-KAVA-PROXY-REQUEST-HOSTNAME" @@ -83,60 +84,70 @@ func (w bodySaverResponseWriter) Write(b []byte) (int, error) { w.serviceLogger.Trace().Msg("response body is empty, skipping after request interceptors") } - size, err := w.ResponseWriter.Write(b) - - return size, err + return w.ResponseWriter.Write(b) } -// createRequestLoggingMiddleware returns a handler that logs any request to stdout -// and if able to decode the request to a known type adds it as a context key -// To use the decoded request body, get the value from the context and then -// use type assertion to EVMRPCRequestEnvelope. With this middleware, the request body -// can be read once, and then accessed by all future middleware and the final -// http handler. -func createRequestLoggingMiddleware(h http.HandlerFunc, serviceLogger *logging.ServiceLogger) http.HandlerFunc { +// createDecodeRequestMiddleware is responsible for creating a middleware that +// - decodes the incoming EVM request +// - if successful, puts the decoded request into the context +// - determines if the request is for a single or batch request +// - routes batch requests to BatchProcessingMiddleware +// - routes single requests to next() +func createDecodeRequestMiddleware(next http.HandlerFunc, batchProcessingMiddleware http.HandlerFunc, serviceLogger *logging.ServiceLogger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { + // capture the initial request time in order to calculate response time & latency at the end requestStartTimeContext := context.WithValue(r.Context(), RequestStartTimeContextKey, time.Now()) - var rawBody []byte - - if r.Body != nil { - var rawBodyBuffer bytes.Buffer - - // Read the request body - body := io.TeeReader(r.Body, &rawBodyBuffer) - - var err error - - rawBody, err = io.ReadAll(body) - - if err != nil { - serviceLogger.Debug().Msg(fmt.Sprintf("error %s reading request body %s", err, body)) - - h.ServeHTTP(w, r) + // skip processing if there is no body content + if r.Body == nil { + serviceLogger.Trace().Msg("no data in request") + next.ServeHTTP(w, r) + return + } - return - } + // read body content + var rawBodyBuffer bytes.Buffer + body := io.TeeReader(r.Body, &rawBodyBuffer) - // Repopulate the request body for the ultimate consumer of this request - r.Body = io.NopCloser(&rawBodyBuffer) + rawBody, err := io.ReadAll(body) + if err != nil { + serviceLogger.Trace().Msg(fmt.Sprintf("error %s reading request body %s", err, body)) + next.ServeHTTP(w, r) + return } + // Repopulate the request body for the ultimate consumer of this request + r.Body = io.NopCloser(&rawBodyBuffer) + + // attempt to decode as single EVM request decodedRequest, err := decode.DecodeEVMRPCRequest(rawBody) + if err == nil { + // successfully decoded request as a single valid EVM request + // forward along with decoded request in context + serviceLogger.Trace(). + Any("decoded request", decodedRequest). + Msg("successfully decoded single EVM request") + singleDecodedReqContext := context.WithValue(requestStartTimeContext, DecodedRequestContextKey, decodedRequest) + next.ServeHTTP(w, r.WithContext(singleDecodedReqContext)) + return + } + // attempt to decode as list of requests + batchRequests, err := decode.DecodeEVMRPCRequestList(rawBody) if err != nil { serviceLogger.Debug().Msg(fmt.Sprintf("error %s parsing of request body %s", err, rawBody)) - - h.ServeHTTP(w, r) - + next.ServeHTTP(w, r) + return + } + if len(batchRequests) == 0 { + serviceLogger.Trace().Msg(fmt.Sprintf("request is for an empty batch: %s", rawBody)) + next.ServeHTTP(w, r) return } - serviceLogger.Trace().Msg(fmt.Sprintf("decoded request body %+v", decodedRequest)) - - decodedRequestBodyContext := context.WithValue(requestStartTimeContext, DecodedRequestContextKey, decodedRequest) - - h.ServeHTTP(w, r.WithContext(decodedRequestBodyContext)) + serviceLogger.Trace().Any("batch", batchRequests).Msg("successfully decoded batch of requests") + batchDecodedReqContext := context.WithValue(requestStartTimeContext, DecodedBatchRequestContextKey, batchRequests) + batchProcessingMiddleware.ServeHTTP(w, r.WithContext(batchDecodedReqContext)) } } @@ -270,6 +281,11 @@ func createProxyRequestMiddleware(next http.Handler, config config.Config, servi Msg("cache miss") w.Header().Add(cachemdw.CacheHeaderKey, cachemdw.CacheMissHeaderValue) + // add CORS headers (if not already added) + accessControlAllowOriginValue := config.GetAccessControlAllowOriginValue(r.Host) + if w.Header().Get("Access-Control-Allow-Origin") == "" && accessControlAllowOriginValue != "" { + w.Header().Set("Access-Control-Allow-Origin", accessControlAllowOriginValue) + } proxy.ServeHTTP(lrw, r) } diff --git a/service/service.go b/service/service.go index 35d1542..7b41c6c 100644 --- a/service/service.go +++ b/service/service.go @@ -9,11 +9,13 @@ import ( "time" "github.com/ethereum/go-ethereum/ethclient" + "github.com/kava-labs/kava-proxy-service/clients/cache" "github.com/kava-labs/kava-proxy-service/clients/database" "github.com/kava-labs/kava-proxy-service/clients/database/migrations" "github.com/kava-labs/kava-proxy-service/config" "github.com/kava-labs/kava-proxy-service/logging" + "github.com/kava-labs/kava-proxy-service/service/batchmdw" "github.com/kava-labs/kava-proxy-service/service/cachemdw" ) @@ -51,7 +53,7 @@ func New(ctx context.Context, config config.Config, serviceLogger *logging.Servi // create an http router for registering handlers for a given route mux := http.NewServeMux() - // will run after the proxy middleware handler and is + // AfterProxyFinalizer will run after the proxy middleware handler and is // the final function called after all other middleware // allowing it to access values added to the request context // to do things like metric the response and cache the response @@ -65,7 +67,10 @@ func New(ctx context.Context, config config.Config, serviceLogger *logging.Servi // - response is present in context cacheAfterProxyMiddleware := serviceCache.CachingMiddleware(afterProxyFinalizer) - // create an http handler that will proxy any request to the specified URL + // ProxyRequestMiddleware responds to the client with + // - cached data if present in the context + // - a forwarded request to the appropriate backend + // Backend is decided by the Proxies configuration for a particular host. proxyMiddleware := createProxyRequestMiddleware(cacheAfterProxyMiddleware, config, serviceLogger, []RequestInterceptor{}, []RequestInterceptor{}) // IsCachedMiddleware works in the following way: @@ -74,9 +79,25 @@ func New(ctx context.Context, config config.Config, serviceLogger *logging.Servi // - if not present marks as uncached in context and forwards to next middleware cacheMiddleware := serviceCache.IsCachedMiddleware(proxyMiddleware) - // create an http handler that will log the request to stdout - // this handler will run before the proxyMiddleware handler - requestLoggingMiddleware := createRequestLoggingMiddleware(cacheMiddleware, serviceLogger) + // BatchProcessingMiddleware separates a batch into multiple requests and routes each one + // through the single request middleware sequence. + // This allows the sub-requests of a batch to leverage the cache & metric recording. + // Expects non-zero length batch to be in the context. + batchMdwConfig := batchmdw.BatchMiddlewareConfig{ + ServiceLogger: serviceLogger, + ContextKeyDecodedRequestBatch: DecodedBatchRequestContextKey, + ContextKeyDecodedRequestSingle: DecodedRequestContextKey, + MaximumBatchSize: config.ProxyMaximumBatchSize, + } + batchProcessingMiddleware := batchmdw.CreateBatchProcessingMiddleware(cacheMiddleware, &batchMdwConfig) + + // DecodeRequestMiddleware captures the request start time & attempts to decode the request body. + // If successful, the decoded request is put into the request context: + // - if decoded as a single EVM request: it forwards it to the single request middleware sequence + // - if decoded as a batch EVM request: it forwards it to the batchProcessingMiddleware + // - if fails to decode: it passes to single request middleware sequence which will proxy the request + // When requests fail to decode, no context value is set. + decodeRequestMiddleware := createDecodeRequestMiddleware(cacheMiddleware, batchProcessingMiddleware, serviceLogger) // register healthcheck handler that can be used during deployment and operations // to determine if the service is ready to receive requests @@ -87,7 +108,7 @@ func New(ctx context.Context, config config.Config, serviceLogger *logging.Servi mux.HandleFunc("/servicecheck", createServicecheckHandler(&service)) // register middleware chain as the default handler for any request to the proxy service - mux.HandleFunc("/", requestLoggingMiddleware) + mux.HandleFunc("/", decodeRequestMiddleware) // create an http server for the caller to start on demand with a call to ProxyService.Run() server := &http.Server{ diff --git a/service/shard.go b/service/shard.go index b4c49a6..ddb5710 100644 --- a/service/shard.go +++ b/service/shard.go @@ -44,13 +44,13 @@ func (hsp HeightShardingProxies) ProxyForRequest(r *http.Request) (*httputil.Rev // some RPC methods can always be routed to the latest block if decode.MethodRequiresNoHistory(decodedReq.Method) { - hsp.Debug().Msg(fmt.Sprintf("request method %s can always use latest block. routing to pruning proxy", decodedReq.Method)) + hsp.Trace().Msg(fmt.Sprintf("request method %s can always use latest block. routing to pruning proxy", decodedReq.Method)) return hsp.pruningProxies.ProxyForRequest(r) } // short circuit if requesting a method that doesn't include block height number if !decode.MethodHasBlockNumberParam(decodedReq.Method) { - hsp.Debug().Msg(fmt.Sprintf("request method does not include block height (%s). routing to default proxy", decodedReq.Method)) + hsp.Trace().Msg(fmt.Sprintf("request method does not include block height (%s). routing to default proxy", decodedReq.Method)) return hsp.defaultProxies.ProxyForRequest(r) } @@ -63,10 +63,10 @@ func (hsp HeightShardingProxies) ProxyForRequest(r *http.Request) (*httputil.Rev // route "latest" to pruning proxy, otherwise route to default if shouldRouteToPruning(height) { - hsp.Debug().Msg(fmt.Sprintf("request is for latest height (%d). routing to pruning proxy", height)) + hsp.Trace().Msg(fmt.Sprintf("request is for latest height (%d). routing to pruning proxy", height)) return hsp.pruningProxies.ProxyForRequest(r) } - hsp.Debug().Msg(fmt.Sprintf("request is for specific height (%d). routing to default proxy", height)) + hsp.Trace().Msg(fmt.Sprintf("request is for specific height (%d). routing to default proxy", height)) return hsp.defaultProxies.ProxyForRequest(r) }