owncloud / owncloud/ocis

Data race found when creating a new space

Open
#12,675 1 comment 0 reactions 0 assignees View on GitHub
Type:Bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.