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

fatal error: concurrent map writes #1

Open
jiankunking opened this issue Apr 16, 2019 · 3 comments
Open

fatal error: concurrent map writes #1

jiankunking opened this issue Apr 16, 2019 · 3 comments

Comments

@jiankunking
Copy link

Concurrent call harborClient.Repositories.ListRepositoryTags(repoRecordName) occur panic

for _, repoRecordName := range repositoryNames { wg.Add(1) go func(repoRecordName, harborAddress string, harborClient *harbor.Client) { defer wg.Done() repositoryTags, err := listRepositoryTags(repoRecordName, harborAddress, harborClient) if err != nil { errChan <- &err } repositoryTagsChan <- &repositoryTags }(repoRecordName, harborAddress, harborClient) }

error info:
fatal error: concurrent map writes

goroutine 438 [running]:
runtime.throw(0xa4f9e1, 0x15)
C:/Go/src/runtime/panic.go:616 +0x88 fp=0xc042761b18 sp=0xc042761af8 pc=0x42d198
runtime.mapassign_faststr(0x97bbc0, 0xc04241ea80, 0xa45de4, 0x6, 0x4)
C:/Go/src/runtime/hashmap_fast.go:703 +0x3f0 fp=0xc042761b88 sp=0xc042761b18 pc=0x40bd10
github.com/TimeBye/go-harbor/vendor/github.com/parnurzeal/gorequest.(*SuperAgent).Set(...)
F:/Code/Go/src/github.com/TimeBye/go-harbor/vendor/github.com/parnurzeal/gorequest/gorequest.go:240
github.com/TimeBye/go-harbor.(*Client).NewRequest(0xc042118f30, 0xa444b1, 0x3, 0xc042418090, 0x21, 0xc042418090)
F:/Code/Go/src/github.com/TimeBye/go-harbor/harbor.go:77 +0xd9 fp=0xc042761c50 sp=0xc042761b88 pc=0x8e14d9
github.com/TimeBye/go-harbor.(*RepositoriesService).ListRepositoryTags(0xc042130058, 0xc04247ac00, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
F:/Code/Go/src/github.com/TimeBye/go-harbor/repositories.go:200 +0x13b fp=0xc042761cf8 sp=0xc042761c50 pc=0x8e671b
git.haier.net/monitor/harbor-admin/pkg/service.listRepositoryTags(0xc04247ac00, 0xf, 0xa4ddad, 0x12, 0xc042118f30, 0x0, 0x0, 0x0, 0x0, 0x0)
F:/Code/Go/src/git.haier.net/monitor/harbor-admin/pkg/service/harbor_images.go:126 +0x68 fp=0xc042761f20 sp=0xc042761cf8 pc=0x8eaa88
git.haier.net/monitor/harbor-admin/pkg/service.ListProjectsImages.func2(0xc042134d10, 0xc042130108, 0xc042202000, 0xc04247ac00, 0xf, 0xa4ddad, 0x12, 0xc042118f30)
F:/Code/Go/src/git.haier.net/monitor/harbor-admin/pkg/service/harbor_images.go:87 +0xce fp=0xc042761fa0 sp=0xc042761f20 pc=0x8eb05e
runtime.goexit()
C:/Go/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc042761fa8 sp=0xc042761fa0 pc=0x45a601
created by git.haier.net/monitor/harbor-admin/pkg/service.ListProjectsImages
F:/Code/Go/src/git.haier.net/monitor/harbor-admin/pkg/service/harbor_images.go:85 +0xa80

goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x30a0ea0, 0x72, 0xaaf580)
C:/Go/src/runtime/netpoll.go:173 +0x5e
internal/poll.(*pollDesc).wait(0xc04224a1c8, 0x72, 0xcf2500, 0x0, 0x0)
C:/Go/src/internal/poll/fd_poll_runtime.go:85 +0xa2
internal/poll.(*ioSrv).ExecIO(0xd37838, 0xc04224a018, 0xc0421f2760, 0x1, 0x0, 0x128)
C:/Go/src/internal/poll/fd_windows.go:223 +0x13a
internal/poll.(*FD).acceptOne(0xc04224a000, 0x128, 0xc04224e0e0, 0x2, 0x2, 0xc04224a018, 0x46eb19, 0xc042077b88, 0x410f8f, 0x10)
C:/Go/src/internal/poll/fd_windows.go:793 +0xae
internal/poll.(*FD).Accept(0xc04224a000, 0xc04211c760, 0x0, 0x0, 0x0, 0x0, 0xc000000000, 0x0, 0x0, 0x0, ...)
C:/Go/src/internal/poll/fd_windows.go:827 +0x142
net.(*netFD).accept(0xc04224a000, 0xc0422064e0, 0xc042077cf8, 0x4022f8)
C:/Go/src/net/fd_windows.go:192 +0x86
net.(*TCPListener).accept(0xc0421300e8, 0xc042077d28, 0x40119e, 0xc0422064e0)
C:/Go/src/net/tcpsock_posix.go:136 +0x35
net.(*TCPListener).AcceptTCP(0xc0421300e8, 0xc042077d70, 0xc042077d78, 0x18)
C:/Go/src/net/tcpsock.go:246 +0x50
net/http.tcpKeepAliveListener.Accept(0xc0421300e8, 0xa70650, 0xc042206460, 0xab2900, 0xc0421190b0)
C:/Go/src/net/http/server.go:3219 +0x36
net/http.(*Server).Serve(0xc0421fe340, 0xab2440, 0xc0421300e8, 0x0, 0x0)
C:/Go/src/net/http/server.go:2773 +0x1ac
net/http.(*Server).ListenAndServe(0xc0421fe340, 0xc0421fe340, 0xc04211c6f0)
C:/Go/src/net/http/server.go:2714 +0xb0
net/http.ListenAndServe(0xc042134534, 0x5, 0xaae4a0, 0xc042236120, 0x1, 0x444fbe)
C:/Go/src/net/http/server.go:2972 +0x81
github.com/gin-gonic/gin.(*Engine).Run(0xc042236120, 0xc042077f58, 0x1, 0x1, 0x0, 0x0)
F:/Code/Go/src/github.com/gin-gonic/gin/gin.go:287 +0x13f
main.main()
F:/Code/Go/src/git.haier.net/monitor/harbor-admin/cmd/main.go:20 +0x12f

@jiankunking
Copy link
Author

I have fixed this bug
https://github.com/jiankunking/harbor-go-client

@barrettzjh
Copy link

大哥,这个支持的harbor版本似乎太低了,2.0+的,有轮子吗,素质点亮小星星

@TimeBye
Copy link
Owner

TimeBye commented Apr 15, 2021

@barrettzjh 2.0的轮子由 @clarechu 造出来了,在此十分感谢 @clarechu

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants