test.unit.proxy.controllers.test_obj.TestECObjController sometimes fails

Bug #1730373 reported by Ondřej Nový
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Object Storage (swift)
Fix Released
Medium
Unassigned

Bug Description

Hi,

Version: 2.15.1

test.unit.proxy.controllers.test_obj.TestECObjController sometimes fails. It look likes it's related to connection timeout. It fails for me in Debian CI (https://buildd.debian.org/status/fetch.php?pkg=swift&arch=all&ver=2.15.1-2&stamp=1509919557&raw=0). It's not failing in my local build env.

======================================================================
FAIL: test_GET_if_none_match (test.unit.proxy.controllers.test_obj.TestECObjController)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/test/unit/proxy/controllers/test_obj.py", line 1882, in test_GET_if_none_match
    self._test_if_none_match('GET')
  File "/<<PKGBUILDDIR>>/test/unit/proxy/controllers/test_obj.py", line 1863, in _test_if_none_match
    resp = _do_test('"frag_etag"', 200)
  File "/<<PKGBUILDDIR>>/test/unit/proxy/controllers/test_obj.py", line 1851, in _do_test
    self.assertEqual('data_etag', resp.headers['Etag'])
AssertionError: 'data_etag' != None
-------------------- >> begin captured stdout << ---------------------
proxy-server DEBUG: Loaded override config for (default): ProxyOverrideOptions({}, {'sorting_method': 'shuffle', 'read_affinity': '', 'write_affinity': '', 'write_affinity_node_count': '2 * replicas', 'write_affinity_handoff_delete_count': None}) (txn: txn1) (client_ip: 127.0.0.2)
proxy-server ERROR: ERROR with Object server 10.0.0.6:1006/sdg re: Trying to GET /v1/a/c/o: ConnectionTimeout (0.5s)
proxy-server ERROR: ERROR with Object server 10.0.0.4:1004/sde re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.7:1007/sdh re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.8:1008/sdi re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.10:1010/sdk re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.14:1014/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.15:1015/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.16:1016/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.17:1017/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.18:1018/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.19:1019/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.20:1020/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.21:1021/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.22:1022/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.23:1023/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.24:1024/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.25:1025/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.26:1026/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: ERROR with Object server 10.0.0.27:1027/sda re: Trying to GET /v1/a/c/o:
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/swift/proxy/controllers/base.py", line 1132, in _make_node_request
    query_string=self.req_query_string)
  File "/<<PKGBUILDDIR>>/test/unit/__init__.py", line 1040, in connect
    i, status = next(conn_id_and_code_iter)
StopIteration
proxy-server ERROR: Object returning 503 for [] (txn: tx6530e1652087417cb1d11-0059ff8ae7)

--------------------- >> end captured stdout << ----------------------
    "'data_etag' != None" = '%s != %s' % (safe_repr('data_etag'), safe_repr(None))
    "'data_etag' != None" = self._formatMessage("'data_etag' != None", "'data_etag' != None")
>> raise self.failureException("'data_etag' != None")

----------------------------------------------------------------------
Ran 5365 tests in 176.378s

FAILED (SKIP=12, failures=1)

Thanks.

Revision history for this message
Alistair Coles (alistair-coles) wrote :

the test uses mocked http connections but a ConnectionTimeout is reported. This suggests that the mocked connection is slow, which will cause one of the proxy getters to consume another of the mock connections. This leaves the mock connection iterator short, causing the subesequent StopIterations.

I can only reproduce this by introducing an artifical sleep.

Changed in swift:
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (master)

Reviewed: https://review.openstack.org/517933
Committed: https://git.openstack.org/cgit/openstack/swift/commit/?id=53d92c18253355f15e3ca0fd07e13608b192dce8
Submitter: Zuul
Branch: master

commit 53d92c18253355f15e3ca0fd07e13608b192dce8
Author: Alistair Coles <email address hidden>
Date: Mon Nov 6 09:46:57 2017 +0000

    Increase connection timeout for object controller tests

    Intermittent test failures due to timeout of *mocked*
    connections have been reported, so increase the
    connection timeout in the test app.

    Closes-Bug: #1730373
    Change-Id: I3c91bdff65f8aa06a72f6ad5ec00ee67890b8e61

Changed in swift:
status: Confirmed → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/swift 2.16.0

This issue was fixed in the openstack/swift 2.16.0 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to swift (feature/deep)

Fix proposed to branch: feature/deep
Review: https://review.openstack.org/525269

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (feature/deep)
Download full text (8.7 KiB)

Reviewed: https://review.openstack.org/525269
Committed: https://git.openstack.org/cgit/openstack/swift/commit/?id=11bb788e65ce8c6c2a71eaf8aaf46fa068e08ed1
Submitter: Zuul
Branch: feature/deep

commit b808c806b4e7000aed45a0026dd7407cd1616891
Author: Tim Burke <email address hidden>
Date: Wed Nov 29 17:24:40 2017 -0800

    Remove testTooLongName tests

    These are better-covered by TestContainer.testContainerNameLimit and
    TestFile.testNameLimit in the same file.

    Change-Id: Ice48bc6492648613bc743b474d40892d7e4dcc64

commit 3135878d2fe9909f49fcadeeb9cc6c6933d06127
Author: Robin Naundorf <email address hidden>
Date: Mon Nov 20 12:21:30 2017 +0100

    Fix small formatting issues in middleware docs

    TrivialFix

    Change-Id: I0ebc12e257b630696a82890178436dcd1eef0c36

commit 4f3abec614e90dd1217c70284b7469024c362e62
Author: Robin Naundorf <email address hidden>
Date: Mon Nov 20 10:59:05 2017 +0100

    Fix small formatting issue

    TrivialFix

    Change-Id: Iacd341a1f3dbf43c6fc2ebcf546aed54f866face

commit de818611085d5781fa449928e90e891d863c6768
Author: Robin Naundorf <email address hidden>
Date: Fri Nov 17 13:30:08 2017 +0100

    Fix formatting of SAIO docs

    * Fix formatting error in SAIO docs so that list is displaying
      correct

    Change-Id: If88869290252a2c86f60fdf89d78ef4a418ae23d

commit c3e73b64f8c2d3b700b8bd39339c60a096d50cb8
Author: Andreas Jaeger <email address hidden>
Date: Fri Nov 17 10:28:20 2017 +0100

    Remove setting of version/release from releasenotes

    Release notes are version independent, so remove version/release
    values. We've found that projects now require the service package
    to be installed in order to build release notes, and this is entirely
    due to the current convention of pulling in the version information.

    Release notes should not need installation in order to build, so this
    unnecessary version setting needs to be removed.

    This is needed for new release notes publishing, see
    I56909152975f731a9d2c21b2825b972195e48ee8 and the discussion starting
    at
    http://lists.openstack.org/pipermail/openstack-dev/2017-November/124480.html
    .

    Change-Id: I1442656b3e4ab84ee5c219f5f4959bd7f41f01fe

commit 1962b18c0c4e0069ccd3063e06a5d491672db975
Author: Kota Tsuyuzaki <email address hidden>
Date: Tue Nov 14 11:42:11 2017 +0900

    Remove unnecessary commented lines

    Change-Id: Ifb7e697851e4e6979fe22176c7a7ca74699c75a6

commit 62d21eceb7ebd061d527339b85d5d9e24fa13a2b
Author: Samuel Merritt <email address hidden>
Date: Thu Oct 19 17:13:00 2017 -0700

    Add metadata checksums to old objects in auditor.

    When the object auditor examines an object, it will now add any
    missing metadata checksums. This goes for both .data and .meta files,
    but not .ts files, as tombstones don't live very long anyway.

    Change-Id: I9417a8b0cc5099470845c0504c834746188d89e8

commit 6990d0209db3f7cb836d5df04fd39953430afd3a
Author: John Dickinson <email address hidden>
Date: Fri Nov 10 11:03:18 2017 -0800

    added some people to core emeritus in the authors file

    Change-Id: I689...

Read more...

tags: added: in-feature-deep
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to swift (feature/s3api)

Fix proposed to branch: feature/s3api
Review: https://review.openstack.org/529226

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to swift (feature/s3api)
Download full text (17.2 KiB)

Reviewed: https://review.openstack.org/529226
Committed: https://git.openstack.org/cgit/openstack/swift/commit/?id=cbdf0514f001abf2d6a6fd8669fcc2d413c8136d
Submitter: Zuul
Branch: feature/s3api

commit 1984353f0d6db7512e4ea147ecad9e14dfb318d4
Author: Alistair Coles <email address hidden>
Date: Fri Dec 15 12:36:47 2017 +0000

    Move symlink versioning functional test

    The functional test for versioning symlinks is better located in
    test_versioned_writes where it can be added to
    TestObjectVersioning. This saves duplicated versioned_writes specific
    setup code in test_symlink, and has the benefit of the test being
    repeated for each of the versioned writes test subclasses. With a
    small refactor this includes the test now running with
    x-history-location mode as well as x-versions-location mode.

    Related-Change: I838ed71bacb3e33916db8dd42c7880d5bb9f8e18
    Change-Id: If215446c558b61c1a8aea37ce6be8fcb5a9ea2f4

commit c579e99126b61466fb3b1628170cbca37ccacce3
Author: Kota Tsuyuzaki <email address hidden>
Date: Wed Dec 13 06:04:40 2017 +0000

    Add more assertions for Symlink + Copy unit tests

    Related-Change-Id: I838ed71bacb3e33916db8dd42c7880d5bb9f8e18
    Change-Id: Ib4c8f0c83537b74bbdec8c2dd6acc99c039faa67

commit 097e975938befb939fa6821f50c061e2c7f42cef
Author: Clay Gerrard <email address hidden>
Date: Thu Dec 14 16:17:29 2017 -0800

    Remove symlink from xml listing response

    We've had some problems with brittle XML clients in the past - it might
    be safer to ask that clients that need symlink keys in listings from
    containers request in JSON.

    Change-Id: I4ac7457f3ccb10f9e471ec6dc6f0869d71712878

commit 7647defb0f201cbf85baef6404067bb0eb27321f
Author: Clay Gerrard <email address hidden>
Date: Thu Dec 14 12:56:49 2017 -0800

    rename utils function less like stdlib

    Related-Change-Id: I3436bf3724884fe252c6cb603243c1195f67b701
    Change-Id: I74199c62b46e4db93a76760ebf91d84e3e1e3cfc

commit b342a8147c38ebcf02c3ba21fd09ded4ca49f69b
Author: Alistair Coles <email address hidden>
Date: Tue Dec 12 17:32:55 2017 +0000

    Assert X-Newest and X-Backend headers are propagated to symlink target

    Adds some assertions to verify that X-Newest and X-Backend-* headers are
    copied from an original object GET requets to the symlink target
    request.

    Change-Id: Idce92edd002dec34f5dbc5d3c28a4cbbd2fbdc60
    Related-Change: I838ed71bacb3e33916db8dd42c7880d5bb9f8e18

commit 1d5cf3e73067751c8c8fd4f7f58c205db9b877a1
Author: Clay Gerrard <email address hidden>
Date: Thu Dec 14 12:15:19 2017 -0800

    add symlink to probetest for reconciler

    Change-Id: Ib2c5616f2965ab92b1c76d573e869206c91464c6

commit 90134ee968f6f6442eedb5548ee292fc03c77c2a
Author: Clay Gerrard <email address hidden>
Date: Thu Dec 14 12:09:04 2017 -0800

    add symlink to container sync default and sample config

    Change-Id: I83e51daa994b9527eccbb8a88952c630aacd39c3

commit 8df263184be136f9ab203a2971b4f47a52f8b431
Author: Alistair Coles <email address hidden>
Date: Tue Dec 12 17:26:03 2017 +0000

    Symlink doc clean up

    C...

tags: added: in-feature-s3api
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.