)]}'
{"neutron/policy.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5e95780f58c42ede0e659b8975a3f843da00809b","unresolved":true,"context_lines":[{"line_number":278,"context_line":"    # TypeError: cannot pickle \u0027_thread.RLock\u0027 object"},{"line_number":279,"context_line":"    # during initialization of the policy rules when Neutron is run with"},{"line_number":280,"context_line":"    # mod_uwsgi, see bug https://bugs.launchpad.net/neutron/+bug/1915494 for"},{"line_number":281,"context_line":"    # details"},{"line_number":282,"context_line":"    def __deepcopy__(self, memo):"},{"line_number":283,"context_line":"        return OwnerCheck(self._orig_kind, self._orig_match)"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"8649d3de_667080b8","line":281,"updated":"2021-02-12 15:05:37.000000000","message":"I have a feeling this is because the plugin directory used in _extract() relies on oslo_concurrency.lockutils to synchronize directory plugin creation [0], which creates a lock object.\n\nI wonder if that lock is somehow persisting in this class, or objects of this class, which breaks when the traditional __deepcopy__ is called because locks can\u0027t be pickled [1].\n\nThis is only a suspicion. I haven\u0027t been able to prove it.\n\n[0] https://opendev.org/openstack/neutron-lib/src/branch/master/neutron_lib/plugins/directory.py#L67 \n[1] https://bugs.python.org/issue29168","commit_id":"8ee73b1a5d4590855ceeafd9decbb79f4d741898"}]}
