Unannounced change to forge storage keys

My function started failing an hour ago. It took a bit to figure out the cause but it looks like prod changed the requirements on what a storage key can be. Yesterday this was a valid key:

10005abrega.com (3e5ac782-ad3f-4ea5-a5d5-448b6c2a7539).har10193

Today it is not. There seems to be nothing relevant at https://developer.atlassian.com/platform/forge/changelog/#

And the error is:

ERROR   10:34:43.418  a6c5619a-acf9-45a4-a354-d636c952972c  Error: APIError: Key should match the pattern "/^(?!\s+$)[a-zA-Z0-9:._\s-#]+$/"
    at APIError.forErrorCode (/private/var/folders/n9/49zt1xp97n16k_k7hndfwkvc0000gn/T/tunnel-83195-xIz5I5I4yTf0/bundled/processHar.js:1444:16)
    at assertNoErrors (/private/var/folders/n9/49zt1xp97n16k_k7hndfwkvc0000gn/T/tunnel-83195-xIz5I5I4yTf0/bundled/processHar.js:1467:33)
    at GlobalStorage.mutation (/private/var/folders/n9/49zt1xp97n16k_k7hndfwkvc0000gn/T/tunnel-83195-xIz5I5I4yTf0/bundled/processHar.js:1580:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async GlobalStorage.delete (/private/var/folders/n9/49zt1xp97n16k_k7hndfwkvc0000gn/T/tunnel-83195-xIz5I5I4yTf0/bundled/processHar.js:1537:9)
    at async /private/var/folders/n9/49zt1xp97n16k_k7hndfwkvc0000gn/T/tunnel-83195-xIz5I5I4yTf0/bundled/processHar.js:8244:11
    at async Object.resolve [as handler] (/private/var/folders/n9/49zt1xp97n16k_k7hndfwkvc0000gn/T/tunnel-83195-xIz5I5I4yTf0/bundled/processHar.js:1082:28)
    at async /private/var/folders/n9/49zt1xp97n16k_k7hndfwkvc0000gn/T/tunnel-83195-xIz5I5I4yTf0/processHar.js:1:192362
    at async process.<anonymous> (/Users/boris/.nvm/versions/node/v18.18.0/lib/node_modules/@forge/cli/node_modules/@forge/node-runtime/out/sandbox/sandbox-runner.js:8:20)

Which unhelpfully doesn’t even tell you WHICH api is failing.

Additionally, if you adjust the code to conform to the new requirement, you now have legacy storage entries that are forever unreachable.

Can someone explain how this is considered GA?

4 Likes

@BPB,

I don’t see anything related in the changelogs nor any known incidents on our statuspage (hence, your point about unannounced). Please report this incident to developer support.

Filed a ticket at https://ecosystem.atlassian.net/servicedesk/customer/portal/34/ECOHELP-29983

If anyone else is impacted and wants me to share, let me know.

The () parentheses would be your issue. The regex requirement has been /^[a-zA-Z0-9:._\s-#]+$/ since at least mid 2022 according to my commit history.

Though given I’m currently tracking/reporting a new unannounced breaking change every few days, nothing surprises me any more.

The fun thing too is you report a major breaking change and don’t get a response for at least a week. Then you’re lucky if you get a fix within a month. eg right now all of my in-app documentation is broken because of a breaking unannounced change in the Confluence API. Customers complaining every day. Nothing I can do about it.

Yeah the Atlassian response tldr is

“We never enforced it but the limit was documented before so it is not an incident.”

May Atlassian devs be blessed to build on top of the platforms they built at Atlassian at their next job :stuck_out_tongue:

2 Likes