Skip to content

Verifier.verifyProvider(): Failed Publish Step for Large Contract #583

@pfesenmeier

Description

@pfesenmeier

Issue Classification

  • Feature request
  • [ x] Bug report

Bug Report

Software versions

  • OS: Alpine Linux 3.11 (Docker image)
  • Consumer Pact library: @pact-foundation/pact 9.11.0, @pact-foundation/pact-node 10.9.4
  • Provider Pact library: @pact-foundation/pact 9.14.0
  • Node Version: 12.19.0

Issue Checklist

Confirm the following:

  • [x ] I have upgraded to the latest
  • I have created a reproducable git repository (see below) to illuminate the problem
  • [x ] I have the read the FAQs in the Readme
  • [x ] I have triple checked, that there are no unhandled promises in my code
  • [x ] I have set my log level to debug and attached a log file showing the complete request/response cycle

Expected behaviour

Verify 52 interactions and publish the results

Actual behaviour

Verify 52 interactions and receive an error at the publish step

Steps to reproduce

Unfortunately, my source code is closed source.
In our CI 'Contract Test' step, our provider verifies two consumer contracts, one of ~7 interactions, and then one of ~50 interactions. The smaller one is verified and published successfully, then the larger one is verified and the fails on publication.

Are there any known capability limits to the publish step as this time?

Relevant log files

For the latest version of @pact-foundation/pact:

15:47:03   | DEBUG: Setting up provider state 'redacted' using provider state set up URL http://localhost:42437/_pactSetup
15:47:03   |
15:47:03   | I, [2021-01-19T20:47:02.311870 #41]  INFO -- request: POST http://localhost:42437/_pactSetup
15:47:03   |
15:47:03   | D, [2021-01-19T20:47:02.311977 #41] DEBUG -- request: User-Agent: "Faraday v0.17.3"
15:47:03   | Content-Type: "application/json"
15:47:03   |
15:47:03   | I, [2021-01-19T20:47:02.655719 #41]  INFO -- response: Status 200
15:47:03   |
15:47:03   | D, [2021-01-19T20:47:02.655825 #41] DEBUG -- response: x-powered-by: "Express"
15:47:03   | content-type: "text/plain; charset=utf-8"
15:47:03   | content-length: "2"
15:47:03   | etag: "W/\"2-nOO9QiTIwXgNtWtBJezz8kv3SLc\""
15:47:03   | date: "Tue, 19 Jan 2021 20:47:02 GMT"
15:47:03   | connection: "close"
15:47:03   |
15:47:03   |           has status code 409
15:47:03   |
15:47:03   |           has a matching body
15:47:03   |
15:47:03   |           includes headers
15:47:03   |
15:47:03   |             "Content-Type" which equals "application/json; charset=utf-8"
15:47:03   |
15:47:03   |
15:47:03   | 52 interactions, 0 failures
15:47:03   |
15:47:03   | /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/verification_results/publish.rb:103:in `publish_verification_results': Error returned from verification results publication 500  (Pact::Provider::VerificationResults::PublicationError)
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/verification_results/publish.rb:35:in `call'
15:47:03   |
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/verification_results/publish.rb:21:in `call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/verification_results/publish_all.rb:22:in `block in call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/verification_results/publish_all.rb:19:in `collect'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/verification_results/publish_all.rb:19:in `call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/verification_results/publish_all.rb:10:in `call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/rspec/pact_broker_formatter.rb:28:in `close'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:209:in `block in notify'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:208:in `each'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:208:in `notify'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:243:in `close'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:196:in `close_after'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:174:in `finish'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:76:in `report'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:115:in `run_specs'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:89:in `run'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:71:in `run'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/pact_spec_runner.rb:88:in `run_specs'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/provider/pact_spec_runner.rb:34:in `run'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/cli/run_pact_verification.rb:69:in `run_with_pact_uri_object'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/cli/run_pact_verification.rb:50:in `run_specs'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/cli/run_pact_verification.rb:21:in `call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-1.51.1/lib/pact/cli/run_pact_verification.rb:13:in `call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.32.1/lib/pact/provider_verifier/app.rb:171:in `verify_pact'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.32.1/lib/pact/provider_verifier/app.rb:43:in `block in call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.32.1/lib/pact/provider_verifier/app.rb:42:in `collect'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.32.1/lib/pact/provider_verifier/app.rb:42:in `call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.32.1/lib/pact/provider_verifier/app.rb:34:in `call'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.32.1/lib/pact/provider_verifier/cli/verify.rb:47:in `verify'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/thor-0.20.3/lib/thor/command.rb:27:in `run'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/thor-0.20.3/lib/thor/invocation.rb:126:in `invoke_command'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/thor-0.20.3/lib/thor.rb:387:in `dispatch'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/thor-0.20.3/lib/thor/base.rb:466:in `start'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/vendor/ruby/2.2.0/gems/pact-provider-verifier-1.32.1/lib/pact/provider_verifier/cli/custom_thor.rb:17:in `start'
15:47:03   | 	from /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.88.3/pact/lib/app/pact-provider-verifier.rb:33:in `<main>'
15:47:03   |
15:47:03   | INFO: Tagging version 1.1.0-lc3-6118-investigate-pact-broker-errors.116+8b3ece4 of client-compatibility as "lc3-6118-investigate-pact-broker-errors"
15:47:03   | ]

Earlier, using @pact-foundation/pact 9.11.0, I got a little better output with 'trace' logging:

52 interactions, 0 failures

Error making request - Net::ReadTimeout Net::ReadTimeout , attempt 1 of 3

Error making request - Net::ReadTimeout Net::ReadTimeout , attempt 2 of 3

Error making request - EOFError end of file reached , attempt 3 of 3

/usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.85.0/pact/lib/vendor/ruby/2.2.0/gems/pact-1.49.3/lib/pact/provider/verification_results/publish.rb:96:in `rescue in publish_verification_results': Failed to publish verification results due to: EOFError end of file reached /usr/src/app/node_modules/@pact-foundation/pact-node/standalone/linux-x64-1.85.0/pact/lib/ruby/lib/ruby/2.2.0/openssl/buffering.rb:182:in `sysread_nonblock' (Pact::Provider::VerificationResults::PublicationError)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIndicates an unexpected problem or unintended behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions