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

Add progress indicator for software file uploads #20308

Closed
8 of 9 tasks
lukeheath opened this issue Jul 10, 2024 · 22 comments
Closed
8 of 9 tasks

Add progress indicator for software file uploads #20308

lukeheath opened this issue Jul 10, 2024 · 22 comments
Assignees
Labels
~dogfood Issue resulted from Fleet's product dogfooding. ~frontend Frontend-related issue. #g-mdm MDM product group P2 Prioritize as urgent :product Product Design department (shows up on 🦢 Drafting board) ~pushed User story was pushed to next release. story A user story defining an entire feature
Milestone

Comments

@lukeheath
Copy link
Member

lukeheath commented Jul 10, 2024

Goal

User story
As an IT admin,
I want to see the upload progress for software packages without timeout
so that I can deploy large software (e.g. Microsoft Excel over 1GB) to my fleet.

Context

Changes

Product

  • UI changes: Figma link
  • CLI changes: Figma link
  • Other: Work with CS team to increase the server timeout limit to 15 minutes for all manged cloud customers and update best practice reference architecture.
  • Reference documentation changes: Update best practice reference architecture.
    • UPDATE: @noahtalerman: Updates to best practice Terraform are in the PR here. No updates needed to best practice reference architecture

Engineering

  • Usage documentation changes: No guide needed
  • Database schema migrations: No migrations
  • Load testing: No load testing needed

ℹ️  Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".

QA

Risk assessment

  • Risk level: Low
  • Risk description: Frontend only, low risk

Manual testing steps

  1. Test progress bar is present when uploading an installer
  • Upload large installers over 1gb or throttle your connection
  1. Test native browser warning modal displays alert requiring approval to close
  • While the installer is uploading, attempt to close the browser window or navigate to another tab and confirm alert
  1. Test size limit has been increased to 3GB and larger files are not allowed
  • Upload an installer larger than 500mb (the old size limit) and ensure it succeeds
  • Upload an installer larger than 3GB and ensure you get an error message
  1. Test 2min limit timeout has been removed
  • Throttle your internet connection and upload a large file. Watch inspector to ensure the upload does not get terminated due to any time out limitations. Ensure it lasts beyond the old 2min limit

GitOps - test changes in file size limitation increase

  • Use Fleetctl to upload an installer larger than 500MB and ensure it succeeds
  • Use Fleetctl to upload an installer larger than 3GB and ensure it fails with the appropriate error message

Testing notes

Gitops and the 3gb file limit increase were tested as part of this ticket #22704

Confirmation

  1. Engineer (@____): Added comment to user story confirming successful completion of QA.
  2. QA (@PezHub ): Added comment to user story confirming successful completion of QA.
@lukeheath lukeheath added :product Product Design department (shows up on 🦢 Drafting board) ~feature fest Will be reviewed at next Feature Fest ~dogfood Issue resulted from Fleet's product dogfooding. labels Jul 10, 2024
@noahtalerman
Copy link
Member

noahtalerman commented Jul 11, 2024

Thanks for tracking this @lukeheath.

I spoke with @spokanemac and he mentioned this is happening because the file upload is timing out. Not notifying the user there is a file upload maximum, or telling them when it gets reached, is a bug that I'll file separately.

I don't think max file size is the issue. The expected max file size is 500 MB and, looking at the bug here, it looks like you uploaded a 204 MB package.

Rather, I think we're not showing the right error message when the user hits the 2 minute timeout.

I think it makes sense to fix that wrong error message bug and then follow up w/ this progress indicator improvement separately.

@noahtalerman noahtalerman removed the :product Product Design department (shows up on 🦢 Drafting board) label Jul 11, 2024
@noahtalerman noahtalerman added story A user story defining an entire feature :product Product Design department (shows up on 🦢 Drafting board) and removed ~feature fest Will be reviewed at next Feature Fest labels Jul 12, 2024
@marko-lisica
Copy link
Member

Converting issue description to a story format and moving original issue description here:

Problem

When uploading large software files, the indeterminate loading spinner doesn't make clear how far along my progress is, or if the file upload has stalled. After waiting several minutes, mine closed and I got an error saying it couldn't complete.

image image

I spoke with @spokanemac and he mentioned this is happening because the file upload is timing out. Not notifying the user there is a file upload maximum, or telling them when it gets reached, is a bug that I'll file separately.

UPDATE: I think that it's not the file size maximum. The maximum is 500 MB (noahtalerman 2024-07-11)

What have you tried?

Upload Google Chrome universal installer.

Potential solutions

  1. Determinate loading indicator that shows actual file upload progress.

What is the expected workflow as a result of your proposal?

@noahtalerman noahtalerman added the #g-mdm MDM product group label Aug 5, 2024
@noahtalerman
Copy link
Member

Hey @georgekarrv heads up that it looks like we missed estimating this one before today's sprint kickoff.

I think we missed it because it didn't have the #g-mdm label?

I left it in the ready for spec column. Do you think we can estimate this one at the next standup and bring it into the current sprint if we have room?

cc @lukeheath

@lukeheath lukeheath added ~frontend Frontend-related issue. :product Product Design department (shows up on 🦢 Drafting board) and removed :product Product Design department (shows up on 🦢 Drafting board) labels Aug 5, 2024
@lukeheath
Copy link
Member Author

I started to self-assign before I realized the scope has grown quite a bit.

@ghernandez345 I put together a draft PR proposing this which may or may not be a helpful starting point: #19086. Up to you!

@georgekarrv
Copy link
Member

Hey team! Please add your planning poker estimate with Zenhub @ghernandez345 @gillespi314

@georgekarrv georgekarrv added :release Ready to write code. Scheduled in a release. See "Making changes" in handbook. and removed :product Product Design department (shows up on 🦢 Drafting board) labels Aug 8, 2024
@georgekarrv georgekarrv added this to the 4.56.0-tentative milestone Aug 8, 2024
@georgekarrv georgekarrv removed their assignment Aug 9, 2024
@lukeheath lukeheath added the ~pushed User story was pushed to next release. label Aug 23, 2024
@georgekarrv georgekarrv modified the milestones: 4.56.0, 4.57.0-tentative Aug 26, 2024
@georgekarrv georgekarrv added the P2 Prioritize as urgent label Aug 29, 2024
@lukeheath
Copy link
Member Author

As we prepare for app library next sprint we're escalating this to P2 so that it can be prioritized over bugs. Some of the packages that will be uploaded are very large, and on a less-than-stellar connection can take several minutes to finish. If we just using a loading spinner without indicating process, it appears broken after a couple of minutes of spinning, even if it's still in progress.

@PezHub
Copy link
Contributor

PezHub commented Oct 8, 2024

QA Notes:

  • Progress bar is now present
  • Closing browser windows throws warning and behaves as expected

Screenshot 2024-10-07 at 3 48 09 PM

*GitOps, removing the 2min timeout, and the new 3GB file size limit will be tested once ready (it was a late addition to the ticket)

@PezHub
Copy link
Contributor

PezHub commented Oct 8, 2024

QA Notes - increase file size upload limit & remove 2min timeout:

  • 2.49GB MSOffice pkg upload completed successfully
  • file over 3gb threw the expected error
    Screenshot 2024-10-08 at 4 11 43 PM
  • confirmed 2min timeout has been removed. I throttled my connection and uploaded a large file and it continued to upload for 53min before I finally killed it

@PezHub
Copy link
Contributor

PezHub commented Oct 9, 2024

I'm going to pass this ticket as good and continue testing the Gitops workflow here #22704

@lukeheath
Copy link
Member Author

@PezHub @georgekarrv Please add manual testing steps to this story.

@PezHub
Copy link
Contributor

PezHub commented Oct 17, 2024

Manual testing steps have been added

@lukeheath lukeheath added :product Product Design department (shows up on 🦢 Drafting board) and removed :release Ready to write code. Scheduled in a release. See "Making changes" in handbook. labels Oct 17, 2024
@marko-lisica
Copy link
Member

marko-lisica commented Oct 24, 2024

Hey @zayhanlon, can CS team help us with updates specified in "Product" section?

Work with CS team to increase the server timeout limit to 15 minutes for all manged cloud customers and update best practice reference architecture.

It's also required for Fleet-maintained apps too. #20308

@noahtalerman
Copy link
Member

Hey @zayhanlon just giving you another ping!

I tracked this as a CS request here: #23286

We want to increase the server timeout limit to 15 mins for all managed cloud customers and Fleet's best practice reference architecture for self-hosted instance.

Why? So that users on slow Wi-Fi don't sit in front of a progress bar for 5 minutes just to see the software upload fail. My current understanding is that the timeout is 5 mins.

@zayhanlon
Copy link
Contributor

@noahtalerman @marko-lisica i'm sorry i missed this!

we took the new issue into our sprint today - it will be implemented during the next deploy (so when we schedule 4.59 sometime next week)

@noahtalerman
Copy link
Member

Waiting until we bump the server timeout limit to 15 mins to close this story. More context in a separate issue #20308 (comment).

@noahtalerman
Copy link
Member

Hey @zayhanlon now that 4.59 is shipped, reminder to bump the server timeout limit for cloud customers and update the reference architecture docs: #23286

@zayhanlon
Copy link
Contributor

@noahtalerman thanks! we will take care of it on cloud deploy tomorrow

@noahtalerman
Copy link
Member

@zayhanlon, it looks like the cloud upgrade issue is still open but just checking, did the cloud deploy w/ the server timeout limit bump happen?

@zayhanlon
Copy link
Contributor

@noahtalerman yes it did! last thursday night

@noahtalerman
Copy link
Member

We bumped the timeout to 15 mins for managed cloud customers ✅

PR to update best practice Terraform is here: #23939

@noahtalerman
Copy link
Member

PR to update best practice Terraform is here: #23939

PR is merged.

Closing this story.

@fleet-release
Copy link
Contributor

Progress bar, like moon,
Guides through vast data seas,
Fleet's upload journey blooms.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
~dogfood Issue resulted from Fleet's product dogfooding. ~frontend Frontend-related issue. #g-mdm MDM product group P2 Prioritize as urgent :product Product Design department (shows up on 🦢 Drafting board) ~pushed User story was pushed to next release. story A user story defining an entire feature
Development

No branches or pull requests

8 participants