cloudfoundry / cloudfoundry/cf-java-client

Missing details in Error Payload

Open
#1,099 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

client triaged
Dominant language
Java
Stars
334
Forks
319
PR merge metrics
No merged PRs in 30d

Description

When an ClientV3Exception is thrown there is more details available in the message than exposed through the Error object. Specifically it would be useful to get the content test_mode_info which had additional details which in this case was bad YAML provided in the manifest.yml. The only way to get these details currently is to search through the cloud controller logs but I assume they come back in the JSON payload that the cf java client could sift through and provide on the Error class.

{"timestamp":"2021-04-07T21:00:41.467072221Z","message":"Request failed: 500: {\"errors\"=>[{\"title\"=>\"UnknownError\", \"detail\"=>\"An unknown error occurred.\", \"code\"=>10001, \"test_mode_info\"=>{\"detail\"=>\"(<unknown>): found unexpected ':' while scanning a plain scalar at line 7 column 16\", \"title\"=>\"CF-SyntaxError\", \"backtrace\"=>[\"/var/vcap/data/packages/ruby-2.5.5-r0.10.0/44147f64f025dd1617cd2c22884c29898f502057/lib/ruby/2.5.0/psych.rb:402:in `parse'\", \"/var/vcap/data/packages/ruby-2.5.5-r0.10.0/44147f64f025dd1617cd2c22884c29898f502057/lib/ruby/2.5.0/psych.rb:402:in `parse_stream'\", \"/var/vcap/data/packages/ruby-2.5.5-r0.10.0/44147f64f025dd1617cd2c22884c29898f502057/lib/ruby/2.5.0/psych.rb:350:in `parse'\", \"/var/vcap/data/packages/ruby-2.5.5-r0.10.0/44147f64f025dd1617cd2c22884c29898f502057/lib/ruby/2.5.0/psych.rb:314:in `safe_load'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/app/controllers/v3/application_controller.rb:91:in `parsed_yaml'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/app/controllers/v3/app_manifests_controller.rb:82:in `parsed_app_manifest_params'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/app/controllers/v3/app_manifests_controller.rb:13:in `apply_manifest'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/abstract_controller/base.rb:194:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal/rendering.rb:30:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/activesupport-5.2.4.3/lib/active_support/callbacks.rb:132:in `run_callbacks'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/abstract_controller/callbacks.rb:41:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal/rescue.rb:22:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/activesupport-5.2.4.3/lib/active_support/notifications.rb:168:in `block in instrument'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/activesupport-5.2.4.3/lib/active_support/notifications/instrumenter.rb:23:in `instrument'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/activesupport-5.2.4.3/lib/active_support/notifications.rb:168:in `instrument'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal/instrumentation.rb:32:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal/params_wrapper.rb:256:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/abstract_controller/base.rb:134:in `process'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionview-5.2.4.3/lib/action_view/rendering.rb:32:in `process'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal.rb:191:in `dispatch'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_controller/metal.rb:252:in `dispatch'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/routing/route_set.rb:52:in `dispatch'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/routing/route_set.rb:34:in `serve'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/journey/router.rb:52:in `block in serve'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/journey/router.rb:35:in `each'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/journey/router.rb:35:in `serve'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/routing/route_set.rb:840:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/rack-2.2.2/lib/rack/tempfile_reaper.rb:15:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/http/content_security_policy.rb:18:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/activesupport-5.2.4.3/lib/active_support/callbacks.rb:98:in `run_callbacks'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/rack-2.2.2/lib/rack/runtime.rb:22:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/activesupport-5.2.4.3/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/actionpack-5.2.4.3/lib/action_dispatch/middleware/executor.rb:14:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/rack-2.2.2/lib/rack/sendfile.rb:110:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/rack-2.2.2/lib/rack/urlmap.rb:74:in `block in call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/rack-2.2.2/lib/rack/urlmap.rb:58:in `each'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/rack-2.2.2/lib/rack/urlmap.rb:58:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/middleware/cef_logs.rb:18:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/middleware/request_logs.rb:38:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/middleware/security_context_setter.rb:19:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/middleware/vcap_request_id.rb:15:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/middleware/cors.rb:49:in `call_app'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/middleware/cors.rb:14:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/middleware/request_metrics.rb:12:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/rack-2.2.2/lib/rack/builder.rb:244:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/thin-1.7.2/lib/thin/connection.rb:86:in `block in pre_process'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/thin-1.7.2/lib/thin/connection.rb:84:in `catch'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/thin-1.7.2/lib/thin/connection.rb:84:in `pre_process'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/thin-1.7.2/lib/thin/connection.rb:50:in `block in process'\", \"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/gem_home/ruby/2.5.0/gems/eventmachine-1.0.9.1/lib/eventmachine.rb:1067:in `block in spawn_threadpool'\"]}}]}","log_level":"error","source":"cc.api","data":{"request_guid":"9ac4d7d8-6cc3-4398-7507-8745c1f4e7be::845e6902-6be0-427b-84ec-133aa14dc326"},"thread_id":47033084351880,"fiber_id":47033056325400,"process_id":7,"file":"/var/vcap/data/packages/cloud_controller_ng/38edb9da90769220ec24e4ae4ef8d6a0881ca7b6/cloud_controller_ng/app/controllers/v3/errors_controller.rb","lineno":11,"method":"internal_error"}

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing ClientV3Exception and the Error payload handling in the cf-java-client, using the JSON response and test_mode_info example in this issue as the reference. The server-side context is errors_controller.rb and the failure concerns manifest.yml parsing. Done means the Error object exposes the additional test_mode_info details instead of requiring cloud controller logs.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.