Add free space and storage plan changes notifications
Bug #773271 reported by
Alejandro J. Cura
This bug affects 5 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Ubuntu One Client |
Won't Fix
|
High
|
Ubuntu One Client Engineering team | ||
Ubuntu One Control Panel |
Won't Fix
|
High
|
Ubuntu One Client Engineering team | ||
Ubuntu One Servers |
Won't Fix
|
Medium
|
Unassigned | ||
Ubuntu One storage protocol |
Won't Fix
|
High
|
Ubuntu One Foundations+ team |
Bug Description
We need to add plan changes and free space notifications to the storage protocol as used by syncdaemon, so the server can notify the clients of out-of-quota beforehand.
affects: | ubuntuone-client → ubuntuone-storage-protocol |
summary: |
- Add free space and storage plan changes notifications to the syncdaemon - protocol + Add free space and storage plan changes notifications |
Changed in ubuntuone-storage-protocol: | |
assignee: | Ubuntu One Desktop+ team (ubuntuone-desktop+) → Ubuntu One Foundations+ team (ubuntuone-foundations+) |
Changed in ubuntuone-client: | |
status: | New → Confirmed |
Changed in ubuntuone-control-panel: | |
status: | New → Confirmed |
Changed in ubuntuone-servers: | |
status: | New → Confirmed |
Changed in ubuntuone-storage-protocol: | |
status: | New → Confirmed |
Changed in ubuntuone-servers: | |
status: | Confirmed → Triaged |
Changed in ubuntuone-servers: | |
assignee: | Registry Administrators (registry) → nobody |
Changed in ubuntuone-client: | |
status: | Confirmed → Won't Fix |
Changed in ubuntuone-control-panel: | |
status: | Confirmed → Won't Fix |
Changed in ubuntuone-servers: | |
status: | Triaged → Won't Fix |
Changed in ubuntuone-storage-protocol: | |
status: | Confirmed → Won't Fix |
To post a comment you must log in.
So the basic Idea behind the solution presented in this proposal is "The client must keep the user's available space synchronized with the server at all times"
Unfortunately, in the past these solutions have created problems because they didn't consider that it creates a lot of chatter on the wire along with a lot of overhead on the server side. (I can explain this further if need be, but I think most of us are aware of it)
I would recommend we look at this a little differently and solve differently
Here's a different way of looking at the problem:
1) 99.9% of the time, the quota and available space don't matter. Very few users ever go over quota.
2) Knowing the quota (from the client's perspective) only becomes relevant when:
2a The user is already over quota and the client can't upload anything.
2b The client is attempting to upload a file large enough where it will go over quota.
3) Because of 1 & 2, the client doesn't really need to constantly synchronize the quota information with the server.
A different solution:
Using a Try, Fail, React pattern for uploads the client always tries to upload a file, 99% of the time this will work. For most clients they will never fail. The client doesn't have a quota that it constantly checks before doing uploads.
React the Failure:
From the user's perspective they should be notified that they need to correct their quota problem by deleting files or buying more space.
From the client and server perspective it needs to handle the two conditions a little differently.
When a client upload fails due to a quota issue, the server will send the client a quota message with available space. Based on the message the client will know if if it was due to either 2a or 2b above and the way it resolves it is slightly differently.
For Condition 2a, the server knows the user is over quota, in this case, the server will send a quota notification when the user does something to correct this (when they buy more space or delete some files) When the client is notified the quota is fixed, it will reattempt the uploads (free up the upload queue)
For Condition 2b, the quota notification sent when the user attempted to go over quota will have a positive number in it. The client could attempt to upload smaller files. When it has reached this condition, the client should retry the upload at a realistic interval.
Note that on the server side there is only one change, we send quota notification only when the available space goes from <=0 to >0 This can happen when the user buys space or they have deleted files.