Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Up ctx - concurrent map write during navigation #565

Open
turkenh opened this issue Jun 11, 2024 · 1 comment
Open

Up ctx - concurrent map write during navigation #565

turkenh opened this issue Jun 11, 2024 · 1 comment
Labels
bug Something isn't working needs-epic-link Needs a link to an epic needs-points-label Needs a story points label needs-project Needs to be added to a project board

Comments

@turkenh
Copy link
Member

turkenh commented Jun 11, 2024

What happened?

Below happened 3 out of 5 tries. It feels like something temporary.

❯ up ctx
⠋ Upbound

 [organization] Crossplane
 [organization] Crossplane Contrib
 [organization] Upbound Dev
 [organization] Upbound Inc
 [organization] Upbound Release Candidates
 [organization] xp

                Disconnected Spaces

fatal error: concurrent map writesc/ctrl+c exit

goroutine 195 [running]:
github.com/upbound/up/internal/spaces.(*ingressCache).Get(_, {_, _}, {{{0x0, 0x0}, {0x0, 0x0}}, {{0x140013141e0, 0x15}, {0x0, ...}, ...}, ...})
	github.com/upbound/up/internal/spaces/ingress.go:104 +0x414
github.com/upbound/up/cmd/up/ctx.(*Organization).Items.func1()
	github.com/upbound/up/cmd/up/ctx/navigation.go:318 +0x42c
created by github.com/upbound/up/cmd/up/ctx.(*Organization).Items in goroutine 163
	github.com/upbound/up/cmd/up/ctx/navigation.go:297 +0x270

goroutine 1 [select]:
github.com/charmbracelet/bubbletea.(*Program).eventLoop(0x14001187d40, {0x103cd2418?, 0x14001243908?}, 0x14000119800)
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:314 +0xa4
github.com/charmbracelet/bubbletea.(*Program).Run(0x14001187d40)
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:543 +0x6c8
github.com/upbound/up/cmd/up/ctx.(*Cmd).RunInteractive(0x103ce4430?, {0x103ce4430?, 0x1059a21c0?}, 0x140008a1b80, 0x103ca89d0?, 0x105c84108?, {0x103cc6188?, 0x14000e03c80?})
	github.com/upbound/up/cmd/up/ctx/cmd.go:362 +0x26c
github.com/upbound/up/cmd/up/ctx.(*Cmd).Run(0x1400069e1d0, {0x103ce4430, 0x1059a21c0}, 0x140008a1b80, 0x14000e49d40)
	github.com/upbound/up/cmd/up/ctx/cmd.go:135 +0x348
reflect.Value.call({0x1039570a0?, 0x1400069e1d0?, 0x1400118f908?}, {0x1028da1d2, 0x4}, {0x14000e03020, 0x3, 0x100598ba8?})
	reflect/value.go:596 +0x970
reflect.Value.Call({0x1039570a0?, 0x1400069e1d0?, 0x1400118fa08?}, {0x14000e03020?, 0x103ca14e0?, 0x1003dbde0?})
	reflect/value.go:380 +0x94
github.com/alecthomas/kong.callFunction({0x1039570a0?, 0x1400069e1d0?, 0x18?}, 0x14000e99590)
	github.com/alecthomas/kong@v0.8.0/callbacks.go:98 +0x390
github.com/alecthomas/kong.callMethod({0x1028d847c, 0x3}, {0x103a5c220?, 0x1400069e1d0?, 0x3?}, {0x1039570a0?, 0x1400069e1d0?, 0x14000bb93b0?}, 0x1038b76c0?)
	github.com/alecthomas/kong@v0.8.0/callbacks.go:132 +0x54
github.com/alecthomas/kong.(*Context).RunNode(0x140008a1b80, 0x140010ea4b0, {0x0, 0x0, 0x103d11e40?})
	github.com/alecthomas/kong@v0.8.0/context.go:762 +0x64c
github.com/alecthomas/kong.(*Context).Run(0x14000e01650?, {0x0?, 0x1059a21c0?, 0x103542620?})
	github.com/alecthomas/kong@v0.8.0/context.go:787 +0x138
main.main()
	github.com/upbound/up/cmd/up/main.go:176 +0x3f0

goroutine 24 [select]:
go.opencensus.io/stats/view.(*worker).start(0x1400043d100)
	go.opencensus.io@v0.24.0/stats/view/worker.go:292 +0x88
created by go.opencensus.io/stats/view.init.0 in goroutine 1
	go.opencensus.io@v0.24.0/stats/view/worker.go:34 +0x98

goroutine 98 [IO wait]:
internal/poll.runtime_pollWait(0x10cd2e318, 0x72)
	runtime/netpoll.go:345 +0xa0
internal/poll.(*pollDesc).wait(0x1400091ff00?, 0x14001148000?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1400091ff00, {0x14001148000, 0x2000, 0x2000})
	internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x1400091ff00, {0x14001148000?, 0x10cc8d0b8?, 0x140013860c0?})
	net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000afe018, {0x14001148000?, 0x140010d78d8?, 0x1003dc22c?})
	net/net.go:179 +0x34
crypto/tls.(*atLeastReader).Read(0x140013860c0, {0x14001148000?, 0x0?, 0x140013860c0?})
	crypto/tls/conn.go:806 +0x40
bytes.(*Buffer).ReadFrom(0x14000d322b0, {0x103cb7680, 0x140013860c0})
	bytes/buffer.go:211 +0x90
crypto/tls.(*Conn).readFromUntil(0x14000d32008, {0x10ccbd880, 0x14000afe018}, 0x140010d79b0?)
	crypto/tls/conn.go:828 +0xd0
crypto/tls.(*Conn).readRecordOrCCS(0x14000d32008, 0x0)
	crypto/tls/conn.go:626 +0x35c
crypto/tls.(*Conn).readRecord(...)
	crypto/tls/conn.go:588
crypto/tls.(*Conn).Read(0x14000d32008, {0x1400055b000, 0x1000, 0x10093632c?})
	crypto/tls/conn.go:1370 +0x168
bufio.(*Reader).Read(0x14001238180, {0x140003fa820, 0x9, 0x1058afdc0?})
	bufio/bufio.go:241 +0x1b4
io.ReadAtLeast({0x103cb6f20, 0x14001238180}, {0x140003fa820, 0x9, 0x9}, 0x9)
	io/io.go:335 +0xa0
io.ReadFull(...)
	io/io.go:354
golang.org/x/net/http2.readFrameHeader({0x140003fa820, 0x9, 0x580008?}, {0x103cb6f20?, 0x14001238180?})
	golang.org/x/net@v0.21.0/http2/frame.go:237 +0x58
golang.org/x/net/http2.(*Framer).ReadFrame(0x140003fa7e0)
	golang.org/x/net@v0.21.0/http2/frame.go:498 +0x78
golang.org/x/net/http2.(*clientConnReadLoop).run(0x140010d7f98)
	golang.org/x/net@v0.21.0/http2/transport.go:2275 +0xf8
golang.org/x/net/http2.(*ClientConn).readLoop(0x14000bf6480)
	golang.org/x/net@v0.21.0/http2/transport.go:2170 +0x5c
created by golang.org/x/net/http2.(*Transport).newClientConn in goroutine 97
	golang.org/x/net@v0.21.0/http2/transport.go:821 +0xa84

goroutine 69 [syscall]:
os/signal.signal_recv()
	runtime/sigqueue.go:149 +0x2c
os/signal.loop()
	os/signal/signal_unix.go:23 +0x1c
created by os/signal.Notify.func1.1 in goroutine 101
	os/signal/signal.go:151 +0x28

goroutine 101 [select]:
github.com/charmbracelet/bubbletea.(*Program).handleSignals.func1()
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:237 +0x100
created by github.com/charmbracelet/bubbletea.(*Program).handleSignals in goroutine 1
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:228 +0x80

goroutine 102 [select]:
github.com/charmbracelet/bubbletea.(*standardRenderer).listen(0x1400123a0b0)
	github.com/charmbracelet/bubbletea@v0.25.0/standard_renderer.go:133 +0x64
created by github.com/charmbracelet/bubbletea.(*standardRenderer).start in goroutine 1
	github.com/charmbracelet/bubbletea@v0.25.0/standard_renderer.go:92 +0xb8

goroutine 103 [syscall]:
syscall.syscall6(0x14001212ca8?, 0x1003d40d8?, 0x14001212eb0?, 0x2?, 0x14001212ca8?, 0x14001212e54?, 0x14001212ca8?)
	runtime/sys_darwin.go:45 +0x68
golang.org/x/sys/unix.kevent(0x140000021c0?, 0x1003d41b0?, 0x140000021c0?, 0x3?, 0x14001212e08?, 0x101b8390c?)
	golang.org/x/sys@v0.17.0/unix/zsyscall_darwin_arm64.go:275 +0x54
golang.org/x/sys/unix.Kevent(0x14001212d68?, {0x1400123f908?, 0x2?, 0x0?}, {0x14001212d78?, 0x14000114080?, 0x14001212d68?}, 0x101b80610?)
	golang.org/x/sys@v0.17.0/unix/syscall_bsd.go:397 +0x40
github.com/muesli/cancelreader.(*kqueueCancelReader).wait(0x1400123f8c0)
	github.com/muesli/cancelreader@v0.2.2/cancelreader_bsd.go:125 +0x58
github.com/muesli/cancelreader.(*kqueueCancelReader).Read(0x1400123f8c0, {0x14001225100, 0x100, 0x100})
	github.com/muesli/cancelreader@v0.2.2/cancelreader_bsd.go:69 +0x44
github.com/charmbracelet/bubbletea.readInputs({0x103ce44a0, 0x14000319450}, 0x140001197a0, {0x10ccbdc98, 0x1400123f8c0})
	github.com/charmbracelet/bubbletea@v0.25.0/key.go:550 +0x88
github.com/charmbracelet/bubbletea.(*Program).readLoop(0x14001187d40)
	github.com/charmbracelet/bubbletea@v0.25.0/tty.go:76 +0x90
created by github.com/charmbracelet/bubbletea.(*Program).initCancelReader in goroutine 1
	github.com/charmbracelet/bubbletea@v0.25.0/tty.go:67 +0x110

goroutine 105 [select]:
github.com/charmbracelet/bubbletea.(*Program).listenForResize(0x14001187d40, 0x14000119da0)
	github.com/charmbracelet/bubbletea@v0.25.0/signals_unix.go:25 +0xf0
created by github.com/charmbracelet/bubbletea.(*Program).handleResize in goroutine 1
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:262 +0x180

goroutine 106 [select]:
github.com/charmbracelet/bubbletea.(*Program).handleCommands.func1()
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:279 +0xb0
created by github.com/charmbracelet/bubbletea.(*Program).handleCommands in goroutine 1
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:275 +0x94

goroutine 163 [semacquire]:
sync.runtime_Semacquire(0x14000db2701?)
	runtime/sema.go:62 +0x2c
sync.(*WaitGroup).Wait(0x14001161460)
	sync/waitgroup.go:116 +0x74
github.com/upbound/up/cmd/up/ctx.(*Organization).Items(0x140011f3a50, {0x103ce4430, 0x1059a21c0}, 0x14000e49d40, 0x140010ca320)
	github.com/upbound/up/cmd/up/ctx/navigation.go:356 +0x3ac
github.com/upbound/up/cmd/up/ctx.model.Update.model.updateListState.func1()
	github.com/upbound/up/cmd/up/ctx/list.go:282 +0x1d8
github.com/charmbracelet/bubbletea.(*Program).eventLoop.func1()
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:381 +0x5c
created by github.com/charmbracelet/bubbletea.(*Program).eventLoop in goroutine 1
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:374 +0x188

goroutine 77 [select]:
net/http.(*persistConn).writeLoop(0x1400154c120)
	net/http/transport.go:2444 +0xa0
created by net/http.(*Transport).dialConn in goroutine 126
	net/http/transport.go:1800 +0x1060

goroutine 76 [IO wait]:
internal/poll.runtime_pollWait(0x10cd2de40, 0x72)
	runtime/netpoll.go:345 +0xa0
internal/poll.(*pollDesc).wait(0x1400023a700?, 0x14000a6a000?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1400023a700, {0x14000a6a000, 0x1500, 0x1500})
	internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x1400023a700, {0x14000a6a000?, 0x10cc8d0b8?, 0x14001386060?})
	net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000bbc018, {0x14000a6a000?, 0x140012178f8?, 0x1003dc22c?})
	net/net.go:179 +0x34
crypto/tls.(*atLeastReader).Read(0x14001386060, {0x14000a6a000?, 0x0?, 0x14001386060?})
	crypto/tls/conn.go:806 +0x40
bytes.(*Buffer).ReadFrom(0x1400075a630, {0x103cb7680, 0x14001386060})
	bytes/buffer.go:211 +0x90
crypto/tls.(*Conn).readFromUntil(0x1400075a388, {0x10ccbd880, 0x14000bbc018}, 0x140012179d0?)
	crypto/tls/conn.go:828 +0xd0
crypto/tls.(*Conn).readRecordOrCCS(0x1400075a388, 0x0)
	crypto/tls/conn.go:626 +0x35c
crypto/tls.(*Conn).readRecord(...)
	crypto/tls/conn.go:588
crypto/tls.(*Conn).Read(0x1400075a388, {0x1400148f000, 0x1000, 0x1003d3a58?})
	crypto/tls/conn.go:1370 +0x168
net/http.(*persistConn).Read(0x1400154c120, {0x1400148f000?, 0x1003d4010?, 0x140012c4480?})
	net/http/transport.go:1977 +0x50
bufio.(*Reader).fill(0x14001380720)
	bufio/bufio.go:110 +0xf8
bufio.(*Reader).Peek(0x14001380720, 0x1)
	bufio/bufio.go:148 +0x60
net/http.(*persistConn).readLoop(0x1400154c120)
	net/http/transport.go:2141 +0x158
created by net/http.(*Transport).dialConn in goroutine 126
	net/http/transport.go:1799 +0x1018

goroutine 115 [IO wait]:
internal/poll.runtime_pollWait(0x10cd2e030, 0x72)
	runtime/netpoll.go:345 +0xa0
internal/poll.(*pollDesc).wait(0x14000a5ce80?, 0x14001448000?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000a5ce80, {0x14001448000, 0x700, 0x700})
	internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000a5ce80, {0x14001448000?, 0x10cbe5338?, 0x140012273e0?})
	net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000aa8070, {0x14001448000?, 0x140007128d8?, 0x1003dc22c?})
	net/net.go:179 +0x34
crypto/tls.(*atLeastReader).Read(0x140012273e0, {0x14001448000?, 0x0?, 0x140012273e0?})
	crypto/tls/conn.go:806 +0x40
bytes.(*Buffer).ReadFrom(0x1400075a2b0, {0x103cb7680, 0x140012273e0})
	bytes/buffer.go:211 +0x90
crypto/tls.(*Conn).readFromUntil(0x1400075a008, {0x10ccbd880, 0x14000aa8070}, 0x140007129b0?)
	crypto/tls/conn.go:828 +0xd0
crypto/tls.(*Conn).readRecordOrCCS(0x1400075a008, 0x0)
	crypto/tls/conn.go:626 +0x35c
crypto/tls.(*Conn).readRecord(...)
	crypto/tls/conn.go:588
crypto/tls.(*Conn).Read(0x1400075a008, {0x14001461000, 0x1000, 0x10093632c?})
	crypto/tls/conn.go:1370 +0x168
bufio.(*Reader).Read(0x140012019e0, {0x1400144c200, 0x9, 0x1058afdc0?})
	bufio/bufio.go:241 +0x1b4
io.ReadAtLeast({0x103cb6f20, 0x140012019e0}, {0x1400144c200, 0x9, 0x9}, 0x9)
	io/io.go:335 +0xa0
io.ReadFull(...)
	io/io.go:354
golang.org/x/net/http2.readFrameHeader({0x1400144c200, 0x9, 0x580008?}, {0x103cb6f20?, 0x140012019e0?})
	golang.org/x/net@v0.21.0/http2/frame.go:237 +0x58
golang.org/x/net/http2.(*Framer).ReadFrame(0x1400144c1c0)
	golang.org/x/net@v0.21.0/http2/frame.go:498 +0x78
golang.org/x/net/http2.(*clientConnReadLoop).run(0x14000712f98)
	golang.org/x/net@v0.21.0/http2/transport.go:2275 +0xf8
golang.org/x/net/http2.(*ClientConn).readLoop(0x140012f0180)
	golang.org/x/net@v0.21.0/http2/transport.go:2170 +0x5c
created by golang.org/x/net/http2.(*Transport).newClientConn in goroutine 114
	golang.org/x/net@v0.21.0/http2/transport.go:821 +0xa84

goroutine 90 [IO wait]:
internal/poll.runtime_pollWait(0x10cd2df38, 0x72)
	runtime/netpoll.go:345 +0xa0
internal/poll.(*pollDesc).wait(0x14000310e00?, 0x14001480000?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000310e00, {0x14001480000, 0x800, 0x800})
	internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000310e00, {0x14001480000?, 0x14001310ac0?, 0x2?})
	net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000140b08, {0x14001480000?, 0x14000713848?, 0x1003db8b8?})
	net/net.go:179 +0x34
crypto/tls.(*atLeastReader).Read(0x140012deac8, {0x14001480000?, 0x0?, 0x140012deac8?})
	crypto/tls/conn.go:806 +0x40
bytes.(*Buffer).ReadFrom(0x14001466630, {0x103cb7680, 0x140012deac8})
	bytes/buffer.go:211 +0x90
crypto/tls.(*Conn).readFromUntil(0x14001466388, {0x10cb6ba88, 0x140012de990}, 0x140007139b0?)
	crypto/tls/conn.go:828 +0xd0
crypto/tls.(*Conn).readRecordOrCCS(0x14001466388, 0x0)
	crypto/tls/conn.go:626 +0x35c
crypto/tls.(*Conn).readRecord(...)
	crypto/tls/conn.go:588
crypto/tls.(*Conn).Read(0x14001466388, {0x1400148e000, 0x1000, 0x10093632c?})
	crypto/tls/conn.go:1370 +0x168
bufio.(*Reader).Read(0x14001305c80, {0x140013462e0, 0x9, 0x1058afdc0?})
	bufio/bufio.go:241 +0x1b4
io.ReadAtLeast({0x103cb6f20, 0x14001305c80}, {0x140013462e0, 0x9, 0x9}, 0x9)
	io/io.go:335 +0xa0
io.ReadFull(...)
	io/io.go:354
golang.org/x/net/http2.readFrameHeader({0x140013462e0, 0x9, 0xea0008?}, {0x103cb6f20?, 0x14001305c80?})
	golang.org/x/net@v0.21.0/http2/frame.go:237 +0x58
golang.org/x/net/http2.(*Framer).ReadFrame(0x140013462a0)
	golang.org/x/net@v0.21.0/http2/frame.go:498 +0x78
golang.org/x/net/http2.(*clientConnReadLoop).run(0x14000713f98)
	golang.org/x/net@v0.21.0/http2/transport.go:2275 +0xf8
golang.org/x/net/http2.(*ClientConn).readLoop(0x14000838c00)
	golang.org/x/net@v0.21.0/http2/transport.go:2170 +0x5c
created by golang.org/x/net/http2.(*Transport).newClientConn in goroutine 89
	golang.org/x/net@v0.21.0/http2/transport.go:821 +0xa84

goroutine 151 [select]:
net/http.(*persistConn).writeLoop(0x1400134cfc0)
	net/http/transport.go:2444 +0xa0
created by net/http.(*Transport).dialConn in goroutine 147
	net/http/transport.go:1800 +0x1060

goroutine 150 [IO wait]:
internal/poll.runtime_pollWait(0x10cd2dd48, 0x72)
	runtime/netpoll.go:345 +0xa0
internal/poll.(*pollDesc).wait(0x14000bba680?, 0x14000a6ca00?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x14000bba680, {0x14000a6ca00, 0x1500, 0x1500})
	internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x14000bba680, {0x14000a6ca00?, 0x10cc8d0b8?, 0x140013863a8?})
	net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000bbc260, {0x14000a6ca00?, 0x140013368f8?, 0x1003dc22c?})
	net/net.go:179 +0x34
crypto/tls.(*atLeastReader).Read(0x140013863a8, {0x14000a6ca00?, 0x0?, 0x140013863a8?})
	crypto/tls/conn.go:806 +0x40
bytes.(*Buffer).ReadFrom(0x1400075ad30, {0x103cb7680, 0x140013863a8})
	bytes/buffer.go:211 +0x90
crypto/tls.(*Conn).readFromUntil(0x1400075aa88, {0x10ccbd880, 0x14000bbc260}, 0x140013369d0?)
	crypto/tls/conn.go:828 +0xd0
crypto/tls.(*Conn).readRecordOrCCS(0x1400075aa88, 0x0)
	crypto/tls/conn.go:626 +0x35c
crypto/tls.(*Conn).readRecord(...)
	crypto/tls/conn.go:588
crypto/tls.(*Conn).Read(0x1400075aa88, {0x1400157f000, 0x1000, 0x1003d3a58?})
	crypto/tls/conn.go:1370 +0x168
net/http.(*persistConn).Read(0x1400134cfc0, {0x1400157f000?, 0x1003d4010?, 0x1400039ce40?})
	net/http/transport.go:1977 +0x50
bufio.(*Reader).fill(0x14001473560)
	bufio/bufio.go:110 +0xf8
bufio.(*Reader).Peek(0x14001473560, 0x1)
	bufio/bufio.go:148 +0x60
net/http.(*persistConn).readLoop(0x1400134cfc0)
	net/http/transport.go:2141 +0x158
created by net/http.(*Transport).dialConn in goroutine 147
	net/http/transport.go:1799 +0x1018

goroutine 284 [IO wait]:
internal/poll.runtime_pollWait(0x10cd2d968, 0x72)
	runtime/netpoll.go:345 +0xa0
internal/poll.(*pollDesc).wait(0x1400043d000?, 0x1400045e000?, 0x0)
	internal/poll/fd_poll_runtime.go:84 +0x28
internal/poll.(*pollDesc).waitRead(...)
	internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0x1400043d000, {0x1400045e000, 0x1500, 0x1500})
	internal/poll/fd_unix.go:164 +0x200
net.(*netFD).Read(0x1400043d000, {0x1400045e000?, 0x105fc73f8?, 0x14000c47bf0?})
	net/fd_posix.go:55 +0x28
net.(*conn).Read(0x14000860018, {0x1400045e000?, 0x14000dcf8d8?, 0x1003dc22c?})
	net/net.go:179 +0x34
crypto/tls.(*atLeastReader).Read(0x14000c47bf0, {0x1400045e000?, 0x0?, 0x14000c47bf0?})
	crypto/tls/conn.go:806 +0x40
bytes.(*Buffer).ReadFrom(0x1400102e2b0, {0x103cb7680, 0x14000c47bf0})
	bytes/buffer.go:211 +0x90
crypto/tls.(*Conn).readFromUntil(0x1400102e008, {0x10ccbd880, 0x14000860018}, 0x14000dcf9b0?)
	crypto/tls/conn.go:828 +0xd0
crypto/tls.(*Conn).readRecordOrCCS(0x1400102e008, 0x0)
	crypto/tls/conn.go:626 +0x35c
crypto/tls.(*Conn).readRecord(...)
	crypto/tls/conn.go:588
crypto/tls.(*Conn).Read(0x1400102e008, {0x14000e76000, 0x1000, 0x100782efc?})
	crypto/tls/conn.go:1370 +0x168
bufio.(*Reader).Read(0x14000e6a720, {0x14000e203c0, 0x9, 0x1058afdc0?})
	bufio/bufio.go:241 +0x1b4
io.ReadAtLeast({0x103cb6f20, 0x14000e6a720}, {0x14000e203c0, 0x9, 0x9}, 0x9)
	io/io.go:335 +0xa0
io.ReadFull(...)
	io/io.go:354
net/http.http2readFrameHeader({0x14000e203c0, 0x9, 0x140014d7650?}, {0x103cb6f20?, 0x14000e6a720?})
	net/http/h2_bundle.go:1638 +0x58
net/http.(*http2Framer).ReadFrame(0x14000e20380)
	net/http/h2_bundle.go:1905 +0x78
net/http.(*http2clientConnReadLoop).run(0x14000dcff98)
	net/http/h2_bundle.go:9342 +0xf8
net/http.(*http2ClientConn).readLoop(0x14000e1a180)
	net/http/h2_bundle.go:9237 +0x5c
created by net/http.(*http2Transport).newClientConn in goroutine 283
	net/http/h2_bundle.go:7887 +0xa84

goroutine 379 [chan receive]:
github.com/charmbracelet/bubbles/spinner.Model.Update.Model.tick.Tick.func2()
	github.com/charmbracelet/bubbletea@v0.25.0/commands.go:142 +0x3c
github.com/charmbracelet/bubbletea.(*Program).handleCommands.func1.1()
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:294 +0x30
created by github.com/charmbracelet/bubbletea.(*Program).handleCommands.func1 in goroutine 106
	github.com/charmbracelet/bubbletea@v0.25.0/tea.go:293 +0x110
❯ up version
Client:
  Version:     v0.31.0
  Go Version:  go1.22.3
  Git Commit:  56026df
  OS/Arch:     darwin/arm64
Server:
  Crossplane Version:        v1.15.2-up.1
  Spaces Controller Version: 1.4.0
@turkenh turkenh added bug Something isn't working needs-project Needs to be added to a project board needs-epic-link Needs a link to an epic needs-points-label Needs a story points label labels Jun 11, 2024
@RedbackThomson
Copy link
Member

Wow I ate my words about not needing support for concurrency really quickly after @cbuto suggested using mutex's:

#535 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working needs-epic-link Needs a link to an epic needs-points-label Needs a story points label needs-project Needs to be added to a project board
Projects
None yet
Development

No branches or pull requests

2 participants