Exception for "@" within a URL


#1

My company is using the endpoint “/userprofile/v1/users/@me” for providing some infos about the calling user.

But linkerd is throwing an exception due to the “@” in the URL:

fluent-linkerd | W 1114 12:54:30.806 UTC THREAD28: Exception propagated to the default monitor (upstream address: /172.22.0.4:58338, downstream address: n/a, label: 0.0.0.0/4140).
fluent-linkerd | java.lang.IllegalArgumentException: label char expected but '@' found at '/userprofile/v1/users/[@]me'
fluent-linkerd |     at com.twitter.finagle.NameTreeParsers.illegal(NameTreeParsers.scala:29)
...

I am trying to get the team fixing this endpoint to also allow a properly URL encoded “/userprofile/v1/users/%40me”, but I think linkerd shoud not throw on such a URL.


#2

Hi @Kosta. Are you using the io.l5d.path identifier? I believe that having an @ in the URL is not a problem in itself, it’s only a problem if you are attempting to convert that path to a Finagle name where the @ character is illegal. If you only need to route based on the first segment of the path, you can set segments: 1 in the identifier config so that only /userprofile segment is used for the Finagle name.