From cbff0f369b533070d2671d2faf83091593f315a9 Mon Sep 17 00:00:00 2001 From: Nikhil Sinha <131262146+nikhilsinhaparseable@users.noreply.github.com> Date: Fri, 18 Sep 2026 10:58:10 +0200 Subject: [PATCH] =?UTF-8?q?Revert=20"Update=20stream=20deletion=20assertio?= =?UTF-8?q?ns=20for=20the=20new=20async=20DELETE=20contract=20(=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5e009d05c8faccacfe9a42946332a14e95e3994d. --- test_utils.go | 85 ++++++++++++++------------------------------------- 1 file changed, 23 insertions(+), 62 deletions(-) diff --git a/test_utils.go b/test_utils.go index ba07aed..caabfc9 100644 --- a/test_utils.go +++ b/test_utils.go @@ -21,7 +21,6 @@ import ( "encoding/json" "fmt" "io" - "net/http" "os/exec" "strings" "testing" @@ -64,74 +63,40 @@ func Sleep() { time.Sleep(sleepDuration) } -// doWithRetryOn409 retries a request while the server reports 409 Conflict, -// which now happens when a stream with the same name was deleted moments -// earlier and its deletion is still running in the background (deletion -// became asynchronous in parseablehq/parseable#1770 -- a stream isn't -// actually gone the instant DeleteStream returns). buildRequest is called -// again on every attempt since a request (and any body reader it holds) -// can't be reused once sent. -func doWithRetryOn409(t *testing.T, client HTTPClient, buildRequest func() (*http.Request, error)) *http.Response { - deadline := time.Now().Add(15 * time.Second) - for { - req, err := buildRequest() - require.NoErrorf(t, err, "failed to build request: %s", err) - response, err := client.Do(req) - require.NoErrorf(t, err, "Request failed: %s", err) - if response.StatusCode != 409 || time.Now().After(deadline) { - return response - } - response.Body.Close() - time.Sleep(200 * time.Millisecond) - } -} - func CreateStream(t *testing.T, client HTTPClient, stream string) { - response := doWithRetryOn409(t, client, func() (*http.Request, error) { - return client.NewRequest("PUT", "logstream/"+stream, nil) - }) + req, _ := client.NewRequest("PUT", "logstream/"+stream, nil) + response, err := client.Do(req) + require.NoErrorf(t, err, "Request failed: %s", err) require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s", response.Status) } func CreateStreamWithHeader(t *testing.T, client HTTPClient, stream string, header map[string]string) { - response := doWithRetryOn409(t, client, func() (*http.Request, error) { - req, err := client.NewRequest("PUT", "logstream/"+stream, nil) - if err != nil { - return req, err - } - for k, v := range header { - req.Header.Add(k, v) - } - return req, nil - }) + req, _ := client.NewRequest("PUT", "logstream/"+stream, nil) + for k, v := range header { + req.Header.Add(k, v) + } + response, err := client.Do(req) + require.NoErrorf(t, err, "Request failed: %s", err) require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s", response.Status) } func CreateStreamWithCustompartitionError(t *testing.T, client HTTPClient, stream string, header map[string]string) { - response := doWithRetryOn409(t, client, func() (*http.Request, error) { - req, err := client.NewRequest("PUT", "logstream/"+stream, nil) - if err != nil { - return req, err - } - for k, v := range header { - req.Header.Add(k, v) - } - return req, nil - }) + req, _ := client.NewRequest("PUT", "logstream/"+stream, nil) + for k, v := range header { + req.Header.Add(k, v) + } + response, _ := client.Do(req) require.Equalf(t, 500, response.StatusCode, "Server returned http code: %s", response.Status) } func CreateStreamWithSchemaBody(t *testing.T, client HTTPClient, stream string, header map[string]string, schema_payload string) { - response := doWithRetryOn409(t, client, func() (*http.Request, error) { - req, err := client.NewRequest("PUT", "logstream/"+stream, bytes.NewBufferString(schema_payload)) - if err != nil { - return req, err - } - for k, v := range header { - req.Header.Add(k, v) - } - return req, nil - }) + + req, _ := client.NewRequest("PUT", "logstream/"+stream, bytes.NewBufferString(schema_payload)) + for k, v := range header { + req.Header.Add(k, v) + } + response, err := client.Do(req) + require.NoErrorf(t, err, "Request failed: %s", err) require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s", response.Status) } @@ -148,11 +113,7 @@ func DeleteStream(t *testing.T, client HTTPClient, stream string) { req, _ := client.NewRequest("DELETE", "logstream/"+stream, nil) response, err := client.Do(req) require.NoErrorf(t, err, "Request failed: %s", err) - // Deletion runs in the background (parseablehq/parseable#1770); 202 means - // accepted, not finished. Callers that immediately recreate the same - // stream name rely on CreateStream et al. retrying past a transient 409 - // while the old stream's deletion is still in flight. - require.Equalf(t, 202, response.StatusCode, "Server returned http code: %s", response.Status) + require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s", response.Status) } func DeleteAlert(t *testing.T, client HTTPClient, alert_id string) { @@ -494,7 +455,7 @@ func checkAPIAccess(t *testing.T, queryClient HTTPClient, ingestClient HTTPClien req, _ = queryClient.NewRequest("DELETE", "logstream/"+stream, nil) response, err = queryClient.Do(req) require.NoErrorf(t, err, "Request failed: %s", err) - require.Equalf(t, 202, response.StatusCode, "Server returned http code: %s and response: %s", response.Status, readAsString(response.Body)) + require.Equalf(t, 200, response.StatusCode, "Server returned http code: %s and response: %s", response.Status, readAsString(response.Body)) case "writer": // Check access to non-protected API