New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 666150 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Nov 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Flaky Exception in key.get() under remote_api during multi-threading

Project Member Reported by kateso...@chromium.org, Nov 17 2016

Issue description

Flaky Exception in key.get() under remote_api during multi-threading:


Traceback (most recent call last):
  File "../../script_util.py", line 84, in Worker
    function(*args, **kwargs)
  File "run-predator.py", line 41, in StoreResults
    findit = FinditForClientID(client_id, LocalGitRepository())
  File "../../../crash/crash_pipeline.py", line 53, in FinditForClientID
    return cls(repository)
  File "../../../crash/findit_for_chromecrash.py", line 54, in __init__
    component_classifier_config = CrashConfig.Get().component_classifier
  File "../../../model/versioned_config.py", line 29, in Get
    config_data = cls.GetVersion(version=version)
  File "../../../model/versioned_model.py", line 68, in GetVersion
    root = root_key.get()
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/ndb/key.py", line 572, in get
    return self.get_async(**ctx_options).get_result()
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/ndb/tasklets.py", line 383, in get_result
    self.check_success()
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along
    value = gen.throw(exc.__class__, exc, tb)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/ndb/context.py", line 722, in get
    deadline=memcache_deadline)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/ndb/tasklets.py", line 427, in _help_tasklet_along
    value = gen.throw(exc.__class__, exc, tb)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/ndb/context.py", line 1107, in _memcache_get_tasklet
    rpc=rpc)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/ndb/tasklets.py", line 513, in _on_rpc_completion
    result = rpc.get_result()
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
    return self.__get_result_hook(self)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/api/memcache/__init__.py", line 620, in __get_hook
    rpc.check_success()
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 579, in check_success
    self.__rpc.CheckSuccess()
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/api/apiproxy_rpc.py", line 157, in _WaitImpl
    self.request, self.response)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 201, in MakeSyncCall
    self._MakeRealSyncCall(service, call, request, response)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/ext/remote_api/remote_api_stub.py", line 227, in _MakeRealSyncCall
    encoded_response = self._server.Send(self._path, encoded_request)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 246, in Send
    url, method=method, body=payload, headers=headers)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/lib/oauth2client/oauth2client/client.py", line 569, in new_request
    redirections, connection_type)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/lib/httplib2/httplib2/__init__.py", line 1584, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/lib/httplib2/httplib2/__init__.py", line 1332, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/usr/local/google/home/katesonia/Workstation/chromium_infra/google_appengine/lib/httplib2/httplib2/__init__.py", line 1302, in _conn_request
    response = conn.getresponse()
  File "/usr/lib/python2.7/httplib.py", line 1051, in getresponse
    response.begin()
  File "/usr/lib/python2.7/httplib.py", line 415, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.7/httplib.py", line 379, in _read_status
    raise BadStatusLine(line)
BadStatusLine: ''
 
This exception rarely happens during delta test, caught this specific error and throw it for now.
It seems this is caused by several try to call CrashConfig.Get() at the same time. 

After serializing the CrashConfig.Get(), the exception seems goon (haven't hit it in ~20 times of runs)
Owner: kateso...@chromium.org
Status: Fixed (was: Available)

Sign in to add a comment