Skip to content

Complement crushes during TestAsyncUpload test #906

Description

@delitrem

Hello. Complement (093a6cb) crushes during executing TestAsyncUpload test. I can do the same steps with curl without any problems. Here is how I execute Complement:

set -o pipefail && \
    COMPLEMENT_BASE_IMAGE=bromal-complement:latest \
    go test -json -v ./tests/csapi | ./.ci/scripts/gotestfmt

Here is log output:

  ❌ TestAsyncUpload (0s)
    media_async_uploads_test.go:22: WARNING: TestAsyncUpload called runtime.SkipIf([dendrite]) but Complement doesn't know which HS is running as it was run without a *_blacklist tag: executing test.
    media_async_uploads_test.go:24: Deploy times: 72.715378ms blueprints, 9.119551964s containers
    client.go:860: [CSAPI] POST hs1/_matrix/client/v3/register => 200 OK (56.278204ms)
    client.go:860: [CSAPI] POST hs1/_matrix/media/v1/create => 200 OK (9.149036ms)
    client.go:860: [CSAPI] POST hs1/_matrix/media/v1/create => 200 OK (8.967153ms)
    client.go:860: [CSAPI] GET hs1/_matrix/media/v3/download/hs1/FXSVexBi5EXu3FcIIrCGWgQSamma32rXVNRdjHnpfZs => 504 Gateway Timeout (3.912796ms)
    client.go:860: [CSAPI] POST hs1/_matrix/media/v1/create => 200 OK (7.321531ms)
    client.go:860: [CSAPI] PUT hs1/_matrix/media/v3/upload/hs1/JFHWMSgXHgsCvEKAMRYlNRlBLCGfamk5amqG7PUYyJU => 200 OK (8.065584ms)
    client.go:858: [CSAPI] POST hs1/_matrix/media/v1/create => error: EOF (15.002104239s)
    client.go:860: [CSAPI] POST hs1/_matrix/media/v1/create => 200 OK (13.908619ms)
    client.go:860: [CSAPI] PUT hs1/_matrix/media/v3/upload/hs1/C4M2Q3h7o2Km7wkgueeoV4r2oPaPAkI2jZeLBkq9TKo => 200 OK (12.702655ms)
panic: test timed out after 10m0s
	running tests:
		TestAsyncUpload (32s)
		TestAsyncUpload/Download_media (8s)

goroutine 2507 [running]:
testing.(*M).startAlarm.func1()
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2802 +0x354
created by time.goFunc
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/time/sleep.go:215 +0x2d

goroutine 1 [chan receive]:
testing.(*T).Run(0x281edce6e6c8, {0xb34c3f?, 0x0?}, 0xb639b0)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2109 +0x4e5
testing.runTests.func1(0x281edce6e6c8)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2585 +0x3e
testing.tRunner(0x281edce6e6c8, 0x281edd67fb68)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2036 +0xea
testing.runTests({0xb42e31, 0x20}, {0xb4cd1e, 0x2c}, 0x281edd7ebb30, {0xf75d00, 0x6a, 0x6a}, {0xc28feb232896cced, 0x8bd86c8af5, ...})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2583 +0x505
testing.(*M).Run(0x281edcdc6c80)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2443 +0x6ac
github.com/matrix-org/complement.TestMain.func1()
	/home/igor/src/bromal/complement/test_main.go:89 +0xa5
github.com/matrix-org/complement.TestMain(0x281edcdc6c80, {0xb2c771, 0x5}, {0x0, 0x0, 0x0?})
	/home/igor/src/bromal/complement/test_main.go:92 +0x164
github.com/matrix-org/complement/tests/csapi.TestMain(...)
	/home/igor/src/bromal/complement/tests/csapi/main_test.go:10
main.main()
	_testmain.go:258 +0xb9

goroutine 2474 [chan receive]:
testing.(*T).Run(0x281eddb50248, {0xb341cc?, 0x0?}, 0x281edd901180)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2109 +0x4e5
github.com/matrix-org/complement/tests/csapi.TestAsyncUpload(0x281eddb50248)
	/home/igor/src/bromal/complement/tests/csapi/media_async_uploads_test.go:78 +0x2ad
testing.tRunner(0x281eddb50248, 0xb639b0)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2036 +0xea
created by testing.(*T).Run in goroutine 1
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2101 +0x4c5

goroutine 2482 [select]:
net/http.(*persistConn).writeLoop(0x281edd9b3900)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:2652 +0xe6
created by net/http.(*Transport).dialConn in goroutine 2448
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:1995 +0x16fe

goroutine 2517 [select]:
net/http.awaitLegacyCancel({0xb712f0?, 0x281edd7a13b0?}, 0x281edd98d930, 0x281edd80c190?)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:752 +0x74
created by net/http.(*Transport).roundTrip in goroutine 2531
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:658 +0x899

goroutine 2516 [select]:
net/http.setRequestCancel.func4()
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/client.go:407 +0x85
created by net/http.setRequestCancel in goroutine 2531
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/client.go:406 +0x3fa

goroutine 2535 [IO wait]:
internal/poll.runtime_pollWait(0x7efc945e3000, 0x72)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0x281edcd20480?, 0x281edd920000?, 0x0)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x281edcd20480, {0x281edd920000, 0x1000, 0x1000})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/internal/poll/fd_unix.go:165 +0x2ae
net.(*netFD).Read(0x281edcd20480, {0x281edd920000?, 0x1?, 0x1?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/fd_posix.go:68 +0x25
net.(*conn).Read(0x281edce023c8, {0x281edd920000?, 0x281eddbcad80?, 0xa95c20?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/net.go:196 +0x45
net/http.(*persistConn).Read(0x281edd776a00, {0x281edd920000?, 0xb6be80?, 0xf62d00?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:2174 +0x47
bufio.(*Reader).fill(0x281edda7f8c0)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/bufio/bufio.go:113 +0x103
bufio.(*Reader).Peek(0x281edda7f8c0, 0x1)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/bufio/bufio.go:152 +0x53
net/http.(*persistConn).readLoop(0x281edd776a00)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:2330 +0x172
created by net/http.(*Transport).dialConn in goroutine 2534
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:1994 +0x16ac

goroutine 2449 [IO wait]:
internal/poll.runtime_pollWait(0x7efc9454c000, 0x72)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/runtime/netpoll.go:351 +0x85
internal/poll.(*pollDesc).wait(0x281eddb96e80?, 0x281edd7c2000?, 0x0)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.(*pollDesc).waitRead(...)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x281eddb96e80, {0x281edd7c2000, 0x1000, 0x1000})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/internal/poll/fd_unix.go:165 +0x2ae
net.(*netFD).Read(0x281eddb96e80, {0x281edd7c2000?, 0x0?, 0x1?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/fd_posix.go:68 +0x25
net.(*conn).Read(0x281eddc28230, {0x281edd7c2000?, 0x281eddf278f0?, 0xa95c20?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/net.go:196 +0x45
net/http.(*persistConn).Read(0x281edd9b3900, {0x281edd7c2000?, 0xb6be80?, 0xf62d00?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:2174 +0x47
bufio.(*Reader).fill(0x281edd7f5200)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/bufio/bufio.go:113 +0x103
bufio.(*Reader).Peek(0x281edd7f5200, 0x1)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/bufio/bufio.go:152 +0x53
net/http.(*persistConn).readLoop(0x281edd9b3900)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:2330 +0x172
created by net/http.(*Transport).dialConn in goroutine 2448
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:1994 +0x16ac

goroutine 2531 [select]:
net/http.(*persistConn).roundTrip(0x281edd776a00, 0x281edd7a1400)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:2911 +0x83d
net/http.(*Transport).roundTrip(0xf71b60, 0x281edd7d1680)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:704 +0xaba
net/http.(*Transport).RoundTrip(0xc28feb28b56a9487?, 0x281edd5201b0?)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/roundtrip.go:33 +0x18
github.com/matrix-org/complement/client.(*loggedRoundTripper).RoundTrip(0x281ede023d40, 0x281edd7d1680)
	/home/igor/src/bromal/complement/client/client.go:856 +0x54
net/http.send(0x281edd7d1540, {0xb6c420, 0x281ede023d40}, {0x281eddc21900?, 0x48e406?, 0xfc5720?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/client.go:264 +0x64b
net/http.(*Client).send(0x281ede023d10, 0x281edd7d1540, {0x2000?, 0x0?, 0xfc5720?})
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/client.go:185 +0x258
net/http.(*Client).do(0x281ede023d10, 0x281edd7d1540)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/client.go:733 +0x9d7
net/http.(*Client).Do(...)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/client.go:592
github.com/matrix-org/complement/client.(*CSAPI).Do(0x281eddafeb80, {0xb77678, 0x281edd916248}, {0xb2bda1, 0x3}, {0x281eddc21e60, 0x7, 0x1?}, {0x0, 0x0, ...})
	/home/igor/src/bromal/complement/client/client.go:774 +0x88a
github.com/matrix-org/complement/client.(*CSAPI).MustDo(0x281eddafeb80, {0xb77678, 0x281edd916248}, {0xb2bda1, 0x3}, {0x281eddc21e60, 0x7, 0x7}, {0x0, 0x0, ...})
	/home/igor/src/bromal/complement/client/client.go:705 +0xe6
github.com/matrix-org/complement/client.(*CSAPI).DownloadContentAuthenticated(0x281eddafeb80, {0xb77678, 0x281edd916248}, {0x281ede012e01, 0x35})
	/home/igor/src/bromal/complement/client/client.go:149 +0x154
github.com/matrix-org/complement/tests/csapi.TestAsyncUpload.func5(0x281edd916248)
	/home/igor/src/bromal/complement/tests/csapi/media_async_uploads_test.go:81 +0x56
testing.tRunner(0x281edd916248, 0x281edd901180)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2036 +0xea
created by testing.(*T).Run in goroutine 2474
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/testing/testing.go:2101 +0x4c5

goroutine 2536 [select]:
net/http.(*persistConn).writeLoop(0x281edd776a00)
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:2652 +0xe6
created by net/http.(*Transport).dialConn in goroutine 2534
	/gnu/store/0ga89rczfv6vkc79m10jscf1cjka11d0-go-1.26.4/lib/go/src/net/http/transport.go:1995 +0x16fe
  ❌ TestAsyncUpload/Cannot_upload_to_a_media_ID_that_has_already_been_uploaded_to (0s)
    media_async_uploads_test.go:56: CSAPI.Do response returned error: Post "http://127.0.0.1:33691/_matrix/media/v1/create": EOF
  ❌ TestAsyncUpload/Create_media (0s)
  ❌ TestAsyncUpload/Download_media (0s)
  ❌ TestAsyncUpload/Not_yet_uploaded (0s)
  ❌ TestAsyncUpload/Upload_media (0s)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions