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

Creating apps with emoji names results in a 500 #1375

Open
Gerg opened this issue Jun 13, 2019 · 7 comments
Open

Creating apps with emoji names results in a 500 #1375

Gerg opened this issue Jun 13, 2019 · 7 comments

Comments

@Gerg
Copy link
Member

Gerg commented Jun 13, 2019

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.

@cf-gitbot
Copy link

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.

@tcdowney
Copy link
Member

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

tcdowney added a commit that referenced this issue Jun 13, 2019
This error class was removed in the following commit:
cloudfoundry/capi-workspace@cbb3000

Regular `CloudController::Errors::ApiError` exceptions are raised now for this
situation and those are caught at a higher level.

The existing unit tests weren't catching this because they only explicitly raised earlier error
types like InvalidApp that would be caught first.

There is still an UnknownError being raised due to a DatabaseError that's caused by us not having
enough validations on the AppModel.

Github Issue: #1375

[#166681830](#1375)

Authored-by: Tim Downey <[email protected]>
@sethboyles
Copy link
Member

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

@reidmit reidmit reopened this May 7, 2020
@cf-gitbot
Copy link

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.

@reidmit
Copy link
Contributor

reidmit commented May 7, 2020

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

@weymanf
Copy link
Contributor

weymanf commented Jan 22, 2021

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

@kathap
Copy link
Contributor

kathap commented Apr 8, 2024

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 #3719)

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

No branches or pull requests

7 participants