Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CouchDB] Bundle of fixes required for migration to CouchDB 3.x #11001

Merged
merged 2 commits into from
Jun 16, 2022

Conversation

amaltaro
Copy link
Contributor

@amaltaro amaltaro commented Feb 17, 2022

Partially fixes #8853

Status

ready

Description

This PR provides almost all the necessary changes to switch CouchDB from version 1.6.1 to 3.1.2 (in addition to #11011).

Summary of changes are:

  • a few minor enhancements here and there (like less calls to the _dbs API)
  • it looks like replication in CouchDB 3.x isn't triggered right after the document is created, but there is a daemon scheduling replications, thus sometimes we cannot find the expected documents in the target database until we give it enough time to get triggered - add a small - configurable - delay after creating replication docs to allow unit tests to succeed
  • CouchDB replication no longer supports (since 2.x) short names for source/target, we need to provide the full URLs and also credentials, even if replication is localhost only. Also change replication for tests to continuous mode
  • ensure RequestDBWriter has the correct url+credentials to avoid authz errors
  • report more information when a couch http operation fails.
  • created new exception for CouchDB error status 410 - Gone
  • replace temporary views by standard design document (with "permanent" views)
  • fixed the CMSCouch RotatingDatabase class
  • added a very basic safeguard mechanism to avoid deletion of databases hosted in CMSWEB
  • made replication deletion/creation in AgentStatusWatcher more verbose

In terms of tests, these are the changes:

  • fixed setUp/tearDown methods for CMSCouch_t.py (and a few unit tests)
  • fixed couch url for ContinuousSummaryHistogram_t.py and DiscreteSummaryHistogram_t.py
  • fixed a few unit tests for WorkQueue_t.py
  • fixed unit tests for Couchapp_t.py, including pylint reformat
  • fixed unit test for Requests_t.py
  • properly setUp and tearDown RotatingDatabase_t.py tests
  • removed unused replication code in WorkQueue_t

Is it backward compatible (if not, which system it affects?)

YES

Related PRs

To go after #11011

External dependencies / deployment changes

cmsdist changes: cms-sw/cmsdist#7218
Deployment changes: dmwm/deployment#1088

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12791/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12793/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 3 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12796/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 1 new failures
    • 2 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12808/artifact/artifacts/PullRequestReport.html

@amaltaro
Copy link
Contributor Author

Just for the record, with these 6 commits (including fix to the replication documents), we are down to:

Latest Test Result(37 failures / -32)

only 4 new tests failing, when compared against master.

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 2 new failures
    • 4 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12810/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 2 new failures
    • 3 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12816/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 1 new failures
    • 2 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12817/artifact/artifacts/PullRequestReport.html

@amaltaro amaltaro changed the title Fix delayed replication in CouchDB 3.x Bundle of fixes required for migration to CouchDB 3.x Feb 24, 2022
@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 changes in unstable tests
  • Python3 Pylint check: succeeded
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/12818/artifact/artifacts/PullRequestReport.html

@amaltaro
Copy link
Contributor Author

With all these changes in the pipeline, I think we reached a point where the initial real integration tests can be performed.

I might still make subtle changes here and there, but I think it's good enough for a first review - and I know it won't be easy to review all of this, so I suggest to completely skip the test files.

I want to test at least the following two scenarios:

  1. WMAgent with CouchDB 3.x and central services with CouchDB 1.6
  2. WMAgent and central services with CouchDB 3.x

@amaltaro amaltaro changed the title Bundle of fixes required for migration to CouchDB 3.x [CouchDB] Bundle of fixes required for migration to CouchDB 3.x Mar 17, 2022
Copy link
Contributor

@vkuznet vkuznet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay, I missed this request in my emails.

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 1 new failures
  • Python3 Pylint check: failed
    • 48 warnings and errors that must be fixed
    • 16 warnings
    • 536 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 326 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13246/artifact/artifacts/PullRequestReport.html

@amaltaro
Copy link
Contributor Author

amaltaro commented Jun 2, 2022

test this please

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 339 new failures
    • 14 tests deleted
    • 1 tests no longer failing
    • 14 changes in unstable tests
  • Python3 Pylint check: failed
    • 48 warnings and errors that must be fixed
    • 15 warnings
    • 527 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 324 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13269/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: failed
    • 1 new failures
    • 2 tests no longer failing
    • 2 changes in unstable tests
  • Python3 Pylint check: failed
    • 48 warnings and errors that must be fixed
    • 15 warnings
    • 523 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 324 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13283/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 tests no longer failing
    • 1 changes in unstable tests
  • Python3 Pylint check: failed
    • 48 warnings and errors that must be fixed
    • 15 warnings
    • 523 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 324 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13286/artifact/artifacts/PullRequestReport.html

@amaltaro
Copy link
Contributor Author

amaltaro commented Jun 7, 2022

This PR had most of the changes required for CouchDB 3.x migration, but many of those developments were offloaded into their own issue/PR. With that said, I think we no longer need 2 approvals for these changes, but I'm happy to read multiple reviews as well.

@vkuznet Valentin, I guess the last 4 commits contain changes that you haven't reviewed yet.
@todor-ivanov a friendly ping

PS.: Commits are still a mess and I need to properly squash them. However, the initial PR description is up-to-date.
PPS.: I ran many tests with this, but I want to run a final test today/tomorrow just to make sure replications are working properly (in addition to all the rest of the communication with CouchDB local/remote).

Copy link
Contributor

@vkuznet vkuznet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I raised several concerns in the code, but I also would like to add an addition, a very important one, here. I don't know how code will behave if we put couch behind FE, especially if we'll use a specific end-point, e.g. https://cmsweb.cern.ch/couchdb. Alan, it would be nice if you clarify this.

@@ -157,6 +159,8 @@ def checkForCouchError(self, status, reason, data=None, result=None):
raise CouchNotAcceptableError(reason, data, result)
elif status == 409:
raise CouchConflictError(reason, data, result)
elif status == 410:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please clarify a reason why do you wrap HTTP error code into custom Couch ones? According to the full codebase you do not cover all set of HTTP error codes and only handful of them. Moreover, you convert actual HTTP error into custom one. I don't see any reason for that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This dates before my arrival in WMCore (and likely in CMS).
But I think the idea is to classify http error codes in a specific human-friendly exception name.
We do not need to cover all the http error codes, and for that we have the else clause covering all the rest.

resp = self.post('/_replicator', data)
# If replication is triggered in unit tests, make sure to give it a few
# seconds before proceeding with tests (new functionality in CouchDB 3.x)
if "unittest" in source or "unittest" in destination:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if call to time.sleep is useful at all since it happens after the response from a server, should you sleep before making a call?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually not. Between the creation of the document in CouchDB and its actual scheduling as an active task, there is a gap of a few seconds. That's why we have to sleep for a while when creating replications in our unit tests.

For the record, I tested this with different number of seconds and 5secs is the bare minimum to be >=99% sure that the replication task will exist.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amaltaro , if this is the case the code still requires changes. What if it would be delay for 6 seconds. Instead, please make for loop with configurable parameter to retries number of times, e.g. 3 times, which will query back the CouchDB to see if the process (replication) is finished. Then, record into the log each attempt that will give more information while debugging the issue. For instance, it may be network hick-up, etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not adding more complication to this PR by probing CouchDB and checking whether the replication kicked in. I want to have the BARE minimum amount of changes to move to CouchDB 3.x.

Having a parameter for the sleep time is not too bad though. If it requires only a few lines to be changed, I might add it to this PR soon. Thanks for this suggestion.

@@ -21,7 +21,10 @@ def _commonInit(self, couchURL, couchapp):
self.dbName = self.couchDB.name
self.couchServer = CouchServer(self.couchURL)
else:
couchURL = sanitizeURL(couchURL)['url']
# NOTE: starting in CouchDB 3.x, we need to provide the couch credentials in
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure how this code should access CouchDB, from the comment I see that it caries about couchdb credentials, while if we put couch behind FE I don't think that upstream code caries about it at all.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. If we are accessing a remote database, then the url will not have any credentials encoded in it (aka., this sanitization call does not change anything). While if we are accessing CouchDB on localhost (WMAgent use case), then the url likely has credentials (using basic authentication).

# delete the test database
self.server.deleteDatabase(self.testdbname)

# now delete all the replicator documents
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not delete replicator db itself?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's another option, possibly a cheaper and cleaner option. Let me give this a try in an upcoming commit.

test/python/WMCore_t/Database_t/CMSCouch_t.py Show resolved Hide resolved
@amaltaro
Copy link
Contributor Author

amaltaro commented Jun 7, 2022

Thanks for the review, Valentin. I answered those comments inline, and also updated the code to actually delete the unit test databases instead of every single replicator document. However, that might be risky in case someone makes a bad mistake, so I added a basic protection for databases hosted in cmsweb. Changes are provided in the last 2 commits.

I raised several concerns in the code, but I also would like to add an addition, a very important one, here. I don't know how code will behave if we put couch behind FE, especially if we'll use a specific end-point, e.g. https://cmsweb.cern.ch/couchdb. Alan, it would be nice if you clarify this.

Requests will be made with x509 certificates, going through the standard CMSWEB authentication process. If the auth is successful, then two new http headers are added to the request sent to the backends, as implemented here:
https://github.com/dmwm/deployment/pull/1088/files#diff-af8cf929860e7a805168beb02fdb3d9ab6a45c93a48088a6e3ae320442c12c91R808

I still need to revisit this deployment change though, separate it in its own PR and make it configurable.

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 tests no longer failing
    • 2 changes in unstable tests
  • Python3 Pylint check: failed
    • 46 warnings and errors that must be fixed
    • 14 warnings
    • 521 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 323 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13289/artifact/artifacts/PullRequestReport.html

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 tests no longer failing
    • 3 changes in unstable tests
  • Python3 Pylint check: failed
    • 50 warnings and errors that must be fixed
    • 17 warnings
    • 547 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 324 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13294/artifact/artifacts/PullRequestReport.html

@amaltaro amaltaro requested a review from vkuznet June 13, 2022 13:36
check_name(dbname)
dbname = urllib.parse.quote_plus(dbname)
if "cmsweb" in self.url:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amaltaro since you are making changes I strongly suggest to avoid hard-coding 'cmsweb' into the code. For example, eventually we would like to move to CouchDB as a Service which we may host on different URL. Therefore, it would be much better if you'll pass this pattern or URL as configuration parameter such that we will not need to change code again in a future when we'll change CouchDB production URL.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is just an extra protection to avoid deleting production databases. Since we delete databases from the unit tests, I wanted to make sure a change in those tests (or a mistake) won't cause bigger problems.

I don't see any easy way to make it configurable as well. If you have a better suggestion, please let me know. Otherwise I think this is good enough (w.r.t. to no protection at all).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amaltaro , I'll leave it up to you to decide, my advice still remain, no hard-coded values should be in a code. The pain of code upgrade is much more than justifications. You can easily add additional optional argument to the class, e.g. prohibitUrlPattern=cmsweb, such that it will allow to configure the CouchServer class without hard-coded value.

resp = self.post('/_replicator', data)
# If replication is triggered in unit tests, make sure to give it a few
# seconds before proceeding with tests (new functionality in CouchDB 3.x)
if "unittest" in source or "unittest" in destination:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amaltaro , if this is the case the code still requires changes. What if it would be delay for 6 seconds. Instead, please make for loop with configurable parameter to retries number of times, e.g. 3 times, which will query back the CouchDB to see if the process (replication) is finished. Then, record into the log each attempt that will give more information while debugging the issue. For instance, it may be network hick-up, etc.

@amaltaro amaltaro requested a review from vkuznet June 13, 2022 16:15
@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 tests no longer failing
    • 1 changes in unstable tests
  • Python3 Pylint check: failed
    • 50 warnings and errors that must be fixed
    • 17 warnings
    • 546 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 324 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13311/artifact/artifacts/PullRequestReport.html

check_name(dbname)
dbname = urllib.parse.quote_plus(dbname)
if "cmsweb" in self.url:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@amaltaro , I'll leave it up to you to decide, my advice still remain, no hard-coded values should be in a code. The pain of code upgrade is much more than justifications. You can easily add additional optional argument to the class, e.g. prohibitUrlPattern=cmsweb, such that it will allow to configure the CouchServer class without hard-coded value.

@amaltaro
Copy link
Contributor Author

@vkuznet thanks for these reviews, Valentin.
I guess I misunderstood what you were asking for the hardcoded "cmsweb" string pattern. My last commit has that defined in a variable named self.protectedDbStr now. In case you want to have another look.

@vkuznet
Copy link
Contributor

vkuznet commented Jun 13, 2022

@vkuznet thanks for these reviews, Valentin. I guess I misunderstood what you were asking for the hardcoded "cmsweb" string pattern. My last commit has that defined in a variable named self.protectedDbStr now. In case you want to have another look.

It is not sufficient since you only defined it in ctor, what you need is to change class __init__ parameters and add it there, e.g.

def __init__(self, dburl='http://localhost:5984', usePYCurl=True, ckey=None, cert=None, capath=None, protectedDBStr='cmsweb'):
    ...
   self.protectedDBStr = protectedDBStr

@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 tests no longer failing
    • 3 changes in unstable tests
  • Python3 Pylint check: failed
    • 50 warnings and errors that must be fixed
    • 17 warnings
    • 546 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 324 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13312/artifact/artifacts/PullRequestReport.html

@amaltaro
Copy link
Contributor Author

It is not sufficient since you only defined it in ctor, what you need is to change class init parameters and add it there, e.g.

and I turns out I didn't misunderstand it. You want to make it completely configurable (which is the best way to deal with it), but for that, we need to make sure that this value gets propagated from the very top of the chain (maybe even from the service configuration). Adding support to it in CMSCouch is only a small fraction of the work to make it configurable.

Given that it's a parameter that will change once every many years (5? 10 years?) , I am rolling back my last commit and leaving it with the one line hard-wired value, sorry.

amaltaro added 2 commits June 13, 2022 15:15
Use RequestDBWriter with couch credentials

Fix replication to use credentials on both source/target

New Couch status 410; replace temp view by permanent one

Fix RotatingDatabase class in CMSCouch - temp view

Keep sanitizing url in Requests class

only add replication sleep time for unittest replications

do not allow cmsweb couchdb databases to be deleted

log replication doc deletion and creation in AgentStatusPoller

Create parameter for seconds to sleep after replication is created

fix docstring
fix unittest: ContinuousSummaryHistogram_t.py:ContinuousSummaryHistogramTest.testA_BasicTest

fix WorkQueue unit tests and CMSCouch

fix unit tests for temporary views

fix highestJobID view unit tests

fix testWMBSInjectionStatus and testSpecialCharacterPasswords unit tests

fix WorkQueue_t testWMBSInjectionStatus unit test

fix RotatingDatabase testExpire unit test

remove unused test replication code in WorkQueue_t

unittest more consistent

fix unit test checking url sanitization

delete unit test database instead of replicator docs

unit tests parameter for sleeping time
@cmsdmwmbot
Copy link

Jenkins results:

  • Python3 Unit tests: succeeded
    • 2 tests no longer failing
    • 2 changes in unstable tests
  • Python3 Pylint check: failed
    • 50 warnings and errors that must be fixed
    • 17 warnings
    • 546 comments to review
  • Pylint py3k check: succeeded
  • Pycodestyle check: succeeded
    • 324 comments to review

Details at https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13313/artifact/artifacts/PullRequestReport.html

@amaltaro
Copy link
Contributor Author

Thank you for all the reviews, Valentin.

@amaltaro
Copy link
Contributor Author

After this got merged, I think we have 16 new unit tests failing (even though they were not failing in the CouchDB specific Jenkins test).
This report - from another PR - has the list of failing unit tests:
https://cmssdt.cern.ch/dmwm-jenkins/view/All/job/DMWM-WMCore-PR-test/13347/artifact/artifacts/PullRequestReport.html

but I also paste it here in case that gets cleaned up:


    WMComponent_t.JobSubmitter_t.JobSubmitter_t.JobSubmitterTest:testB_thresholdTest changed from error to failure
    WMComponent_t.TaskArchiver_t.TaskArchiver_t.TaskArchiverTest:testA_BasicFunctionTest changed from error to failure
    WMComponent_t.TaskArchiver_t.TaskArchiver_t.TaskArchiverTest:testB_testErrors changed from error to failure
    WMCore_t.Database_t.CMSCouch_t.CouchMonitorTest:testCheckCouchReplications changed from error to failure
    WMCore_t.Services_t.Requests_t.testRepeatCalls:testRecoveryFromConnRefused_with_pycurl changed from success to error
    WMCore_t.Services_t.UUID_t.UUIDTest:testUUID changed from success to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testGlobalDatasetSplitting changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testProcessingWithContinuousSplitting changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testProcessingWithPileup changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testProductionMultiQueue changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testResubmissionWorkflow changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testResubmissionWorkflowSiteWhitelistLocations changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testSiteStatus changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testSitesFromResourceControl changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testTeams changed from error to failure
    WMCore_t.WorkQueue_t.WorkQueue_t.WorkQueueTest:testThrottling changed from error to failure

it could be that it's just a matter of waiting for the replication to go through. I will check it tomorrow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Upgrade couchDB to 3.1.x
3 participants