Data race found when creating a new space
- Dominant language
- Go
- Stars
- 2.1k
- Forks
- 274
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 103
Description
## Describe the bug
A data race warning shows when creating a new space. oCIS needs to be compiled with race detection.
```
| ==================
ocis-1 | WARNING: DATA RACE
ocis-1 | Read at 0x00c0070c0e2d by goroutine 3274:
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node.AddPermissions()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node/permissions.go:220 +0x1e4
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1063 +0x117
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:93 +0x86
ocis-1 |
ocis-1 | Previous write at 0x00c0070c0e2d by goroutine 3275:
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node.AddPermissions()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node/permissions.go:220 +0x21d
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1063 +0x117
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:93 +0x86
ocis-1 |
ocis-1 | Goroutine 3274 (running) created at:
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:78 +0x11c
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1058 +0xb31
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/services/storageprovider.(*Service).ListContainer()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/services/storageprovider/storageprovider.go:823 +0x181
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1012 +0xc1
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware.NewUnary.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware/events.go:70 +0xbe
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus.interceptorFromConfig.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus/prometheus.go:72 +0x6d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/auth.NewUnary.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/auth/auth.go:169 +0xfdb
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/recovery/interceptors.go:33 +0x162
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func7()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/log/log.go:39 +0xa6
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func6()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/useragent/useragent.go:38 +0x19d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func5()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/token/token.go:52 +0x3ca
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func4()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/appctx/appctx.go:51 +0x704
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.GetGoGRPCUnaryServerInterceptor.func3()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/autoprop/gogrpc.go:40 +0x5b
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:53 +0x238
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1014 +0x1e6
ocis-1 | google.golang.org/grpc.(*Server).processUnaryRPC()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1443 +0x1a49
ocis-1 | google.golang.org/grpc.(*Server).handleStream()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1858 +0x11c4
ocis-1 | google.golang.org/grpc.(*Server).serveStreams.func2.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1078 +0x149
ocis-1 |
ocis-1 | Goroutine 3275 (finished) created at:
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:78 +0x11c
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1058 +0xb31
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/services/storageprovider.(*Service).ListContainer()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/services/storageprovider/storageprovider.go:823 +0x181
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1012 +0xc1
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware.NewUnary.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware/events.go:70 +0xbe
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus.interceptorFromConfig.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus/prometheus.go:72 +0x6d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/auth.NewUnary.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/auth/auth.go:169 +0xfdb
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/recovery/interceptors.go:33 +0x162
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func7()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/log/log.go:39 +0xa6
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func6()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/useragent/useragent.go:38 +0x19d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func5()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/token/token.go:52 +0x3ca
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func4()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/appctx/appctx.go:51 +0x704
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.GetGoGRPCUnaryServerInterceptor.func3()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/autoprop/gogrpc.go:40 +0x5b
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:53 +0x238
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1014 +0x1e6
ocis-1 | google.golang.org/grpc.(*Server).processUnaryRPC()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1443 +0x1a49
ocis-1 | google.golang.org/grpc.(*Server).handleStream()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1858 +0x11c4
ocis-1 | google.golang.org/grpc.(*Server).serveStreams.func2.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1078 +0x149
ocis-1 | ==================
ocis-1 | ==================
ocis-1 | WARNING: DATA RACE
ocis-1 | Read at 0x00c0070c0e33 by goroutine 3274:
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node.AddPermissions()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node/permissions.go:226 +0x3e4
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1063 +0x117
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:93 +0x86
ocis-1 |
ocis-1 | Previous write at 0x00c0070c0e33 by goroutine 3275:
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node.AddPermissions()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node/permissions.go:226 +0x41d
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1063 +0x117
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:93 +0x86
ocis-1 |
ocis-1 | Goroutine 3274 (running) created at:
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:78 +0x11c
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1058 +0xb31
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/services/storageprovider.(*Service).ListContainer()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/services/storageprovider/storageprovider.go:823 +0x181
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1012 +0xc1
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware.NewUnary.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware/events.go:70 +0xbe
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus.interceptorFromConfig.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus/prometheus.go:72 +0x6d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/auth.NewUnary.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/auth/auth.go:169 +0xfdb
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/recovery/interceptors.go:33 +0x162
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func7()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/log/log.go:39 +0xa6
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func6()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/useragent/useragent.go:38 +0x19d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func5()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/token/token.go:52 +0x3ca
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func4()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/appctx/appctx.go:51 +0x704
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.GetGoGRPCUnaryServerInterceptor.func3()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/autoprop/gogrpc.go:40 +0x5b
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:53 +0x238
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1014 +0x1e6
ocis-1 | google.golang.org/grpc.(*Server).processUnaryRPC()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1443 +0x1a49
ocis-1 | google.golang.org/grpc.(*Server).handleStream()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1858 +0x11c4
ocis-1 | google.golang.org/grpc.(*Server).serveStreams.func2.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1078 +0x149
ocis-1 |
ocis-1 | Goroutine 3275 (finished) created at:
ocis-1 | golang.org/x/sync/errgroup.(*Group).Go()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/golang.org/x/sync/errgroup/errgroup.go:78 +0x11c
ocis-1 | github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs.(*Decomposedfs).ListFolder()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/decomposedfs.go:1058 +0xb31
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/services/storageprovider.(*Service).ListContainer()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/services/storageprovider/storageprovider.go:823 +0x181
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1012 +0xc1
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware.NewUnary.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/eventsmiddleware/events.go:70 +0xbe
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus.interceptorFromConfig.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/prometheus/prometheus.go:72 +0x6d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/internal/grpc/interceptors/auth.NewUnary.func2()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/auth/auth.go:169 +0xfdb
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/grpc-ecosystem/go-grpc-middleware/recovery.UnaryServerInterceptor.func1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/recovery/interceptors.go:33 +0x162
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func7()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/log/log.go:39 +0xa6
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func6()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/useragent/useragent.go:38 +0x19d
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func5()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/token/token.go:52 +0x3ca
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.NewUnary.func4()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/internal/grpc/interceptors/appctx/appctx.go:51 +0x704
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:48 +0xcd
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.GetGoGRPCUnaryServerInterceptor.func3()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/owncloud/reva/v2/pkg/autoprop/gogrpc.go:40 +0x5b
ocis-1 | github.com/owncloud/reva/v2/pkg/rgrpc.(*Server).getInterceptors.ChainUnaryServer.func9()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/grpc-ecosystem/go-grpc-middleware/chain.go:53 +0x238
ocis-1 | github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1._ProviderAPI_ListContainer_Handler()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1/provider_api_grpc.pb.go:1014 +0x1e6
ocis-1 | google.golang.org/grpc.(*Server).processUnaryRPC()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1443 +0x1a49
ocis-1 | google.golang.org/grpc.(*Server).handleStream()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1858 +0x11c4
ocis-1 | google.golang.org/grpc.(*Server).serveStreams.func2.1()
ocis-1 | /home/juan/src/ocis/ocisfork/vendor/google.golang.org/grpc/server.go:1078 +0x149
ocis-1 | ==================
```
## Steps to reproduce
1. Login with an admin (or someone who can create spaces)
2. Create a new space.
3. Add a couple of files in the space
## Expected behavior
No warning should appear.
## Actual behavior
Data race warning appears.
## Setup
Please describe how you started the server and provide a list of relevant environment variables or configuration files.
```console
OCIS_XXX=somevalue
OCIS_YYY=somevalue
PROXY_XXX=somevalue
```
## Additional context
Add any other context about the problem here.
Contributor guide
Research direction
Build oCIS with race detection and reproduce the warning while creating a new space. Start in vendor/github.com/owncloud/reva/v2/pkg/storage/utils/decomposedfs/node/permissions.go at AddPermissions, then inspect the concurrent calls from Decomposedfs.ListFolder in decomposedfs.go. Done means the creation flow no longer reports this data race under the race detector.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100