cloud_controller_ng
cloud_controller_ng copied to clipboard
Creating apps with emoji names results in a 500
Reproduction Steps
cf curl -X POST /v3/apps -d '{ "name": "🍹", "relationships": { "space": { "data": { "guid": "f868de95-bc7e-4f84-9801-9d6814bfadb2" } } } }'
{
"errors": [
{
"title": "UnknownError",
"detail": "An unknown error occurred.",
"code": 10001
}
]
}
Underlying Error
{"timestamp":1560447860.1173868,"message":"Started POST \"/v3/apps\" for user: 1ed2b38b-b2c1-42d7-b215-53fe1963bbbe, ip: 204.15.0.254 with vcap-request-id:
ff290444-7249-4730-46df-cb94f634c8f2::04326664-6982-477d-8a46-eaeae0be4cc6 at 2019-06-13 17:44:20 UTC","log_level":"info","source":"cc.api","data":{"request
_guid":"ff290444-7249-4730-46df-cb94f634c8f2::04326664-6982-477d-8a46-eaeae0be4cc6"},"thread_id":47336992099800,"fiber_id":47336969711680,"process_id":10,"f
ile":"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/request_logs.rb","lineno":12,"meth
od":"call"}
{"timestamp":1560447860.1438572,"message":"Request failed: 500: {\"errors\"=>[{\"title\"=>\"UnknownError\", \"detail\"=>\"An unknown error occurred.\", \"code\"=>10001, \"test_mode_info\"=>{\"detail\"=>\"uninitialized constant VCAP::CloudController::AnnotationsUpdate::TooManyAnnotations\", \"title\"=>\"CF-TooManyAnnotations\", \"backtrace\"=>[\"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/app/controllers/v3/apps_controller.rb:97:in `rescue in create'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/app/controllers/v3/apps_controller.rb:80:in `create'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/abstract_controller/base.rb:194:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/rendering.rb:30:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:132:in `run_callbacks'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/abstract_controller/callbacks.rb:41:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/rescue.rb:22:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/notifications.rb:168:in `block in instrument'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/notifications/instrumenter.rb:23:in `instrument'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/notifications.rb:168:in `instrument'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/instrumentation.rb:32:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal/params_wrapper.rb:256:in `process_action'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/abstract_controller/base.rb:134:in `process'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionview-5.2.2.1/lib/action_view/rendering.rb:32:in `process'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal.rb:191:in `dispatch'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_controller/metal.rb:252:in `dispatch'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/route_set.rb:52:in `dispatch'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/route_set.rb:34:in `serve'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/journey/router.rb:52:in `block in serve'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/journey/router.rb:35:in `each'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/journey/router.rb:35:in `serve'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/routing/route_set.rb:840:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/rack-2.0.7/lib/rack/tempfile_reaper.rb:15:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/http/content_security_policy.rb:18:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/callbacks.rb:98:in `run_callbacks'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/rack-2.0.7/lib/rack/runtime.rb:22:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/activesupport-5.2.2.1/lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/actionpack-5.2.2.1/lib/action_dispatch/middleware/executor.rb:14:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/rack-2.0.7/lib/rack/sendfile.rb:111:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/rack-2.0.7/lib/rack/urlmap.rb:68:in `block in call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `each'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/request_logs.rb:22:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/security_context_setter.rb:19:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/vcap_request_id.rb:15:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/cors.rb:49:in `call_app'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/cors.rb:14:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/request_metrics.rb:12:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/gem_home/ruby/2.5.0/gems/rack-2.0.7/lib/rack/builder.rb:153:in `call'\", \"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/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/99354e5d7e82f66e339fef9896e88c216da371b4/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/99354e5d7e82f66e339fef9896e88c216da371b4/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/99354e5d7e82f66e339fef9896e88c216da371b4/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/99354e5d7e82f66e339fef9896e88c216da371b4/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":"ff290444-7249-4730-46df-cb94f634c8f2::04326664-6982-477d-8a46-eaeae0be4cc6"},"thread_id":47336992099800,"fiber_id":47336969711680,"process_id":10,"file":"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/app/controllers/v3/errors_controller.rb","lineno":11,"method":"internal_error"}
{"timestamp":1560447860.1453018,"message":"Completed 500 vcap-request-id: ff290444-7249-4730-46df-cb94f634c8f2::04326664-6982-477d-8a46-eaeae0be4cc6","log_level":"info","source":"cc.api","data":{"request_guid":"ff290444-7249-4730-46df-cb94f634c8f2::04326664-6982-477d-8a46-eaeae0be4cc6"},"thread_id":47336992099800,"fiber_id":47336969711680,"process_id":10,"file":"/var/vcap/data/packages/cloud_controller_ng/99354e5d7e82f66e339fef9896e88c216da371b4/cloud_controller_ng/middleware/request_logs.rb","lineno":24,"method":"call"}
Expected Behavior
This request should either succeed or return a human-readable error letting me know why I'm not allowed to have fun app names.
We have created an issue in Pivotal Tracker to manage this:
https://www.pivotaltracker.com/story/show/166681830
The labels on this github issue will be updated when the story is started.
I can reproduce this by triggering validation failures on the app in general:
cf v3-create-app "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
This command is in EXPERIMENTAL stage and may change without notice
Creating V3 app AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA in org org / space space as admin...
Unexpected Response
Response Code: 500
Request ID: 39610740-296b-4d22-666b-99e63424eb42::1d207fef-ccd8-4658-9ce1-b24524cf2200
Code: 0, Title: , Detail: {
"errors": [
{
"title": "UnknownError",
"detail": "An unknown error occurred.",
"code": 10001
}
]
}
FAILED
fixed:
± sb |master {2} U:1 ✗| → cf v3-create-app "🍹"
This command is in EXPERIMENTAL stage and may change without notice
Creating V3 app 🍹 in org o / space s as admin...
OK
We have created an issue in Pivotal Tracker to manage this:
https://www.pivotaltracker.com/story/show/172728700
The labels on this github issue will be updated when the story is started.
We've done some investigation and found that this is still a problem – it occurs only in MySQL, which is why Seth did not reproduce it above.
But we also found that it affects many different fields on many V3 resources (anywhere arbitrary text is stored in a string column in the database).
It doesn't seem super high-priority right now, but we wrote a story to explore this further in the future: https://www.pivotaltracker.com/story/show/172728679
The above story leads to a story in the VAT backlog. This story has been ported to the CAPI public tracker:
https://www.pivotaltracker.com/n/projects/966314/stories/166681830
I also stumbled upon this issue while writing a test for anther story..where I chosed as app name '🦄🦄🦄'. (You can see the error in the Unit Tests / Test-Mysql checks of this PR https://github.com/cloudfoundry/cloud_controller_ng/pull/3719)