-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Update to use grahpql-upload v8 #1854
Comments
This is a pretty critical issue. Not only are people missing out on a huge amount of fixes and a much more powerful API, but the public can crash Apollo Server v2 infrastructure by sending malformed multipart requests (in theory; I have not gone around trying it). People are even talking about filing CVEs! Here is a PR that would resolve this issue: #1764. I ❤️you all at Apollo, event if this particular issue needs work. I don't chase dramas, I'm just trying to make the world a better place and offer some transparency to the community. It's their apps that are affected, after all 🙏 I'll be in San Francisco next week for GraphQL Summit, and am happy to meet anyone that would like to talk about it in person or collaborate. ContextBefore It turns out that running resolvers before the request has finished, so that file upload streams can be handled efficiently in resolvers, is super challenging for a lot of reasons. I worked tirelessly on tests for every edge case and solid solutions to each challenge (requests aborted half way through, the same file being used as an argument for multiple mutations, files upload streams being consumed out of order, etc. etc.) with heroic contributions from @mike-marcacci who created In the process of solving all the complicated challenges across multiple versions of Node.js (with their subtle and not-so-subtle breaking API changes to streams, etc.), Node.js support was lifted from v6 to v8.5. See jaydenseric/graphql-upload#109. I never thought this was a big deal, since absolutely no one I know in 2018 is using Node.js v6, which is only a few months away from end-of-life, when v8 LTS and v10 LTS are available and vastly superior. It turns out that Apollo really doesn't want to drop Node.js v6. I've said that I'm willing to accept a PR adding Node.js v6 support, even though it means compromising some modern features that I've come to enjoy, such as native async/await. I've even cleared the path by dropping support back to Node.js v6 for a dev dependency. Not everyone uses Apollo Server. I've spent months of my life dedicated to this problem space at great personal cost, with no contributions from Apollo, despite it powering a major feature of Apollo Server, one of their flagship products. All along, I have been motivated by the promise that the work will help not just myself, but a lot of other people handle uploads intuitively and efficiently in their apps. It breaks my heart every day to see a horribly broken fork ( Users keep coming to me for support about issues we already worked hard to solve months ago. This poor developer experience needlessly tarnishes both my own and Apollo's reputation and really hits morale. Due to a lack of progress I've tried my best to reach out in the The problem and solution gets acknowledged… Then ignored again… What Apollo Server users can do in the meantimeI have updated the apollo-upload-examples API to disable the outdated and dangerous Apollo Server upload handling and use To migrate your existing Apollo Server v2 project:
|
|
This should be addressed by #2054. As I've requested in that PR, I'd really appreciate anyone who is utilizing file uploads to try upgrading to the published Ref: #2054 (comment) |
The |
apollo-upload-server should be updated to use latest graphql-upload
The text was updated successfully, but these errors were encountered: