+1 for replacing it to be compatible with the new Servlet spec. Yufei
On Thu, Aug 1, 2024 at 7:02 AM Eduard Tudenhöfner <etudenhoef...@apache.org> wrote: > Here's the PR <https://github.com/apache/iceberg/pull/10837> that bumps > Jetty and the Servlet API and reproduces #10338 > <https://github.com/apache/iceberg/issues/10338> but it unfortunately > requires to be built/executed with JDK17. > > On Thu, Aug 1, 2024 at 2:59 PM Eduard Tudenhöfner < > etudenhoef...@apache.org> wrote: > >> Hey everyone, >> >> The REST spec >> <https://github.com/apache/iceberg/blob/6319712b612b724fedbc5bed41942ac3426ffe48/open-api/rest-catalog-open-api.yaml#L225> >> currently uses *%1F* as the UTF-8 encoded namespace separator for >> multi-part namespaces. >> This causes issues <https://github.com/apache/iceberg/issues/10338>, >> since it's a control character >> <https://www.compart.com/en/unicode/category/Cc> and the Servlet spec >> <https://jakarta.ee/specifications/servlet/6.0/jakarta-servlet-spec-6.0.html#uri-path-canonicalization> >> can >> reject such characters. >> >> I'm proposing to replace *%1F* with a different character that isn't >> problematic (such as *%2E*) and also add some backwards compatible >> namespace decoding logic to *RESTUtil* so that older clients sending >> *%1F* can still do so. >> >> PS: I also investigated why *%1F* doesn't fail in *TestRESTCatalog* and >> it's because we're using Jetty 9.x and the javax.servlet API 4.0 (instead >> of 6.x). I'll open a separate PR to upgrade Jetty and use jakarta.servlet >> API 6.x, which will reproduce the issue with *%1F* being used as the >> namespace separator. >> >> Eduard >> >> >> >