commit | 3f182d83ca64c077042aa7a25a7f26fa955e2ff4 | [log] [tgz] |
---|---|---|
author | Girish Gowdra <girish@opennetworking.org> | Mon Mar 30 20:38:51 2020 -0700 |
committer | Girish Gowdra <girish@opennetworking.org> | Wed Apr 01 08:24:19 2020 -0700 |
tree | 00101462c7311919fac31a38756567377b2db9b3 | |
parent | 316cdd150f7b73f6c9248e1a96e9393992f04f8b [diff] |
[VOL-2848] : Protect concurrent access for PON resources Flows currently were serialized on a per ONU basis. However flows from different ONUs could add/remove concurrently. This meant possible concurrent access of PON resources. In some tests it was seen that two ONUs got same resource (like FlowID) and traffic would fail. This new change makes concurrent access to get/put/delete on shared PON resource pools on KV store protected by locks. The adapter maintains certain data on the KV store on a per ONU basis and this does not need any protection as the key path are unique and provide inherant protection and moreover any flow operation on a given ONU is serialized, this is not to worry. Change-Id: I8a452a7ae84413741cbc2fa24ae42f4329748e32 (cherry picked from commit 38d533d9e90cd72e47ea4460f021694c7937281f)
This project uses Go Modules https://github.com/golang/go/wiki/Modules to manage dependencies. As a local best pratice this project also vendors the dependencies. If you need to update dependencies please follow the Go Modules best practices and also perform the following steps before committing a patch:
go mod tidy
go mod verify
go mod vendor
voltha-protos
or voltha-lib-go
If you want to build/test using a local copy or voltha-protos
or voltha-lib-go
this can be accomplished by using the environment variables LOCAL_PROTOS
and LOCAL_LIB_GO
. These environment variables should be set to the filesystem path where the local source is located, e.g.
LOCAL\_PROTOS=$HOME/src/voltha-protos LOCAL\_LIB\_GO=$HOME/src/voltha-lib-go
When these environment variables are set the vendored versions of these packages will be removed from the vendor
directory and replaced by coping the files from the specified locations to the vendor
directory. NOTE: this means that the files in the vendor
directory are no longer what is in the git
repository and it will take manual git
intervention to put the original files back.