-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVERSIONS.txt
More file actions
487 lines (387 loc) · 21.9 KB
/
VERSIONS.txt
File metadata and controls
487 lines (387 loc) · 21.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
SyncServer
Version 1.14.0
* Adding Solid Pod support
Versions 1.13.1 (8/14/21)
* Fix issue: Enable v0 upload retries for mutable files to work properly.
Versions 1.13.0 (8/5/21)
* Improve error handling on v0 upload retries. See https://github.com/SyncServerII/Neebla/issues/25
Versions 1.12.5 (7/18/21)
* Added `usersThatMustBeInDestination` field to `MoveFileGroupsRequest` so client
can ensure that all users making comments must be in destination album when
doing a move.
[MIGRATIONS]
* Production migrations for the deleted column on the FileGroup table.
Version 1.12.4 (7/10/21)
* Moved `deleted` column from FileIndex table to FileGroup table.
Because deletions are only allowed on a file group basis.
Plus, related other changes.
* Added deletion file group move tests.
Version 1.12.3 (7/8/21)
* Changes to moveFileGroups endpoint-- so parameters are passed in request body.
* Improved final move to dest sharing group: Doing it with a single database query.
* Added one more test for moveFileGroups.
Version 1.12.2 (7/7/21)
* Completed moveFileGroups endpoint.
Including tests.
[MIGRATIONS]
* Production migrations for the FileGroup table.
Version 1.12.1 (7/6/21)
* Changed from a (fileUUID, fileGroupUUID) unique constraint on the FileIndex to a
fileUUID unique constraint-- to be consistent with the LookupKey for FileIndex.
Version 1.12.0 (7/6/21)
* Added new table: FileGroup
See https://github.com/SyncServerII/Neebla/issues/23
- Migrations
Removing fields from FileIndex table:
userId, sharingGroupUUID, objectType
as these are used from the FileGroup table now.
- Integrated usage of that table into v0 file uploads.
- Added tests to support the addition of this new table and its usage.
- Updated other tests to deal with this change.
- Deprecations
No longer allowing uploads of v0 files with no file group UUID-- because
a fileGroupUUID is needed in the FileIndex table to reference the FileGroup
table. Need that to reference the other fields of the FileGroup (e.g., userId)
which are no longer in the FileIndex table.
* Adding support for new endpoint: moveFileGroups
See https://github.com/SyncServerII/Neebla/issues/23
- This endpoint is not yet working. Will deploy the changes to the FileGroup table
and then finish this endpoint.
Version 1.11.6 (6/27/21)
* Add user email address to three requests:
Check creds, redeem sharing invitation, and add user.
This is so that if we ever (infrequently) need to contact system users, this is
possible.
Version 1.11.5 (6/21/21)
* Added batchUUID to DeferredUploads as an alternative key
See https://github.com/SyncServerII/Neebla/issues/20
* Also removed resultsUUID from DeferredUploads
- That must have been some old/deprecated field. It wasn't present in the table.
* GetUploadsResults endpoint can now use either batchUUID or deferredUploadId.
Version 1.11.4 (6/13/21)
* Update to latest ChangeResolvers package.
Version 1.11.3 (6/13/21)
* Registered MediaItemAttributes change resolver.
Version 1.11.2 (6/9/21)
* Added file version to ConflictReason.
Version 1.11.1 (6/9/21)
* Improved error response on conflict.
Version 1.11.0 (6/7/21)
* Add support for upload requests creating files in other owning users accounts.
- This to support migrations of file groups--
i.e., adding files to existing file groups
- If another user uploads a file to an existing file group, it creates the file
in the other users account. i.e., the user owning the v0 file.
- Returns HTTPStatusCode.conflict now if an attempt is made to create the same
fileLabel in a file group.
- Removed `getEffectiveOwningUserId` function in FinishUploadFiles.swift
because I could pass this in as a parameter.
- See https://github.com/SyncServerII/Neebla/issues/15
[DEPLOYMENT UPDATE]
* I just fixed an issue by going to
"Rolling with Additional Batch deployment policy"
- See the configure.yml change with this commit and see
https://github.com/SyncServerII/ServerMain/issues/14
Version 1.10.5 (6/5/21)
* Only return .self with inform records-- only .self is applicable to the user signed
in to the client.
Version 1.10.4 (6/3/21)
* Added actual migration for removing fileGroupUUID column if present.
Version 1.10.3 (6/2/21)
* Added `mostRecentDate` to SharingGroup return with a contentSummary.
* Moved `numberOfDaysUntilInformAllButSelfExpiry` to ServerConstants.
Version 1.10.2 (5/31/21)
* MIGRATION: Removed `fileGroupUUID` field from the FileIndexClientUIRepository table.
It could easily be obtained in the join with the FileIndex.
Version 1.10.1 (5/30/21)
* Fixed issue with informAllButSelf result. Enable distinguishing between inform self
and inform others. Modify associated tests.
Version 1.10.0 (5/30/21)
* Added support for informAllButSelf. Affects file upload, index requests,
and deferred uploads. As part of this, added new table: FileIndexClientUI.
See https://github.com/SyncServerII/Neebla/issues/15
* MIGRATION: Added a migration to the Upload table
This migration adds the `informAllButUserId` field.
* Tests added in support of these changes.
* Fixed an issue in the `transferUploads` method-- it had been considering vN uploads
but no longer deals with vN uploads, only v0 uploads.
Version 1.9.0 (5/14/21)
* Changing support for removing users from sharing groups. Removing a user from a sharing group now marks the row in SharingGroupUser as deleted it doesn't remove that row.
* When SharingGroups are returned from Index, if the calling user has been removed from a sharing group, that sharing group is marked as deleted.
* Updated test cases in support of these changes.
* See https://github.com/SyncServerII/Neebla/issues/12
Version 1.8.1 (5/4/21)
* Complete removal of appMetaDataVersion column from Upload, and FileIndex
Version 1.8.0 (5/4/21)
* Improving database opening/closing accounting.
* Added read-only file mechanism for testing.
Version 1.7.1 (4/24/21)
* Tests cases now succeeding.
Version 1.7.0 (4/15/21)
* Added parameter to redeem invitation response.
Version 1.6.4 (4/10/21)
* Added logging
Version 1.6.3 (4/10/21)
* Added logging
Version 1.6.2 (4/10/21)
* Added logging
Version 1.6.1 (4/3/21)
* Added some logging to https://github.com/SyncServerII/Kitura-CredentialsGoogle
Version 1.6.0 (3/13/21)
* Added GIF mime type.
Version 1.5.2 (3/3/21)
* Fix issue with Upload expiry date.
Version 1.5.1 (3/3/21)
* Fix issue with removal of v0 upload's-- needed batchUUID.
Version 1.5.0 (3/3/21)
* Added batch fields to Upload table to deal with-- https://github.com/SyncServerII/Neebla/issues/6
Version 1.4.0 (3/1/21)
* Added field to content summary.
Version 1.3.0 (2/21/21)
* Added content summary per sharing group on a file index.
Version 1.2.0 (2/16/21)
* Improved notification messages-- in the cases of missing
username and missing sharing group name.
* Enabled downloading stale file versions. Stale file versions are deleted after a delay. See https://github.com/SyncServerII/ServerMain/issues/3
Version 1.1.0 (2/6/21)
* Added new endpoint: UpdateUser-- to update user name
Version 1.0.1 (2/5/21)
* Added logging.
Version 1.0.0 (1/24/21; beta testing)
* Change configuration files to use Codable
* Adding Microsoft authentication and OneDrive
* Adding Apple Sign In authentication
* Removed SMServerLib-- no longer used.
* Now using ChangeResolvers on server.
- This implies a change also for clients because they are no longer dealing with conflict resolution
* Endpoint changes:
- Removed DoneUploads endpoint-- now using an N of M pair of parameters in upload requests.
AppMetaDataUpload endpoint-- can only provide app meta data in v0 of a file.
- Added GetUploadsResults: Determine the status of asynchronous processing of an upload file or an upload deletion.
- Removed GetUploads.
- Added SendPushNotifications: Send a push notification to all members of a sharing group (except for the sender).
* Database changes.
- Various columns added.
e.g., add objectType column to FileIndex and Upload tables
- Remove appMetaDataVersion column from Upload, and FileIndex
- Removed MasterVersion table.
- Index removed from Upload table: "UNIQUE (fileUUID, userId, deviceUUID)"
Did this by:
SHOW INDEX FROM Upload
DROP INDEX fileUUID ON Upload
* Will need an agressive iOS app update requirement
- iOS app will absolutely have to update prior to using endpoints for new server.
* Updated to using Swift 5.3
Version 0.25.1 (8/24/19)
* Adding retries to mySQL record removal method-- because an AWS load test revealed issues.
* Adding CloudWatch agent into Elastic Beanstalk deployment.
This seems necessary to monitor % memory utilization of the EC2 instance, which load testing suggests is an important variable.
* Current testing with SyncServerII has taken place with v5.7.23 of mySQL. This version seems necessary. I did some load testing on AWS RDS with v5.7.22 and ran into long request latencies (averaging 82.9s). NOTE: To deploy this to production, I'm going to have to update the production mySQL RDS to v5.7.23. [8/31/19: Note that the long latencies seem actually to do with the type of EC2 instance being used for the server-- t2.micro, which are burstable, and can have CPU throttling.]
Version 0.25.0 (7/20/19)
* Now lower casing expected checksum value before check with the upload-- in case upload request leaves checksum in upper case.
* Locust load testing for server: Added locustfile.py
* Working on other deadlock issues: With file uploads, master version and device UUID.
And with timeout issues.
* Changed locking mechanism for requests. Removed ShortLocks table and relying on mySQL exclusive and shared locks for master version.
I believe my explicit locking mechanism, in addition to the intrinsic mySQL locks, were what were causing the deadlock issues I was running into.
* Added debugging output for mySQL queries.
* Updating to Swift 5
Put in fixes in testing code for Swift 5.0.1 dateComponents bug:
https://stackoverflow.com/questions/56555005
* Have now switched over to using IBM-Kitura-based Docker images:
https://github.com/IBM-Swift/swift-ubuntu-docker
* Added MockStorage, a form of CloudStorage which doesn't actually interact with cloud storage, but rather is suited for load testing-- so as to not exceed limits with Google Drive. This goes hand in hand with server configuration key "loadTestingCloudStorage".
* Removed my usage of Kitura Credentials UserProfile extendedProperties. It looks like it was causing crashes in load testing because my usage wasn't thread safe. Plus, I found a better method to bridge data from the request. See also https://forums.swift.org/t/kitura-perfect-mysql-server-crash-double-free-or-corruption-prev/26740/10
Version 0.24.0 (4/15/19)
* Added url mime type.
Version 0.23.0 (4/9/19)
* Added new endpoint to get sharing invitation info.
Version 0.22.1 (4/8/19)
* Updated shared library (SyncServer-Shared) to 10.0.0.
Version 0.22.0 (4/2/19)
* Added new parameters (numberAcceptors, allowSharingAcceptance) to create sharing invitation and redeem sharing invitation, with defaults so this should still allow clients to run with no change.
Version 0.21.2 (3/15/19)
* Update version of shared library to fix log output issue, and improve `data` field handling for upload & download.
Version 0.21.1 (3/14/19)
* Update version of shared library to fix Bool decoding issue.
Version 0.21.0 (3/13/19)
* Updated SMServerLib Swift version
* Making use of Token Time To Live on Kitura Credentials for Google and Facebook
* Updated Dropbox Credentials with Token Time To Live
* Converting to using Codable for request/response messages (away from Gloss)
Codable provides a simpler notation, and Gloss is not supporting Linux any more.
Due to this change, this is a breaking change for the iOS client library.
Version 0.20.10 (2/14/19)
* Adding push notifications (APNS) using AWS SNS.
Version 0.19.1 (12/8/18)
* Fixing issue where sharing users couldn't update (refresh and save to database) owning user access token.
https://github.com/crspybits/SyncServerII/issues/89
12/2/18
* Now have CloudWatch integrated; no new server version.
https://github.com/crspybits/SyncServerII/issues/94
Version 0.19.0 (12/1/18)
* Force iOS client app update
https://github.com/crspybits/SyncServerII/issues/71
https://github.com/crspybits/SyncServerII/issues/67
Version 0.18.6 (11/23/18)
* Improved "gone" case in DoneUploads-- now this will occur in fewer situations.
Should be only when a sharing user, who's owning user was removed, tries to upload
a v0 file.
Version 0.18.5 (11/23/18)
* Dealing with a "gone" case in DoneUploads.
Version 0.18.4 (11/22/18)
* Added debugging/logging output code.
Version 0.18.3 (11/19/18)
* Returning gone for file downloads via a normal response-- to also return app meta data
to client.
Version 0.18.2 (11/18/18)
* Changed reason type for gone response endpoints that use sharing group uuid's.
Version 0.18.1 (11/11/18)
* Download endpoint returns HTTP status gone when a file has been removed/renamed.
* Endpoints now return HTTP status "gone" when an owning user's access token has expired or been revoked.
* Endpoints returning "gone" now also have a reason field in the return result.
* For Version 0.18.*, the following apply:
https://github.com/crspybits/SyncServerII/issues/75
https://github.com/crspybits/SyncServerII/issues/63
https://github.com/crspybits/SyncServerII/issues/93
Version 0.18.0 (11/4/18)
* Removing byte sizes from server/database; replacing with checksums.
* Enabled download endpoint to return the checksum for the file currently in cloud storage so a client can (a) check it against the last uploaded file checksum, and (b) check for network transmission errors.
* Index endpoint returning cloud storage type per file, and per sharing group (for purely sharing users).
* Fixed a longstanding issue, where some failures were not detected, in the Select function.
* Upload endpoint must have checksum for the file being uploaded for the type of cloud storage for the file.
* Download endpoint now also returns "contentsChanged" flag.
Version 0.17.4 (9/23/18)
* Removed a consistency check across upload operations. Now allowing for the possibility of a client interleaving uploads from different sharing group UUID's (without an intervening DoneUploads) to give the client more flexibility. E.g., this could help in some client error recovery use cases.
Version 0.17.3 (9/16/18)
* Fixed git tagging issue.
Version 0.17.2 (9/15/18)
* Added ability to do sharing group update (name change) along with the DoneUploads endpoint. This was needed by the iOS client.
Version 0.17.1 (8/26/18)
* Now have sharing group ids created by client to make client interface consistent.
Version 0.17.0 (8/21/18)
* Multiple sharing groups per user
https://github.com/crspybits/SyncServerII/issues/27
* Add name to sharing groups.
* Repurposed FileIndex endpoint to also return the current users sharing groups.
Dropped the get sharing groups endpoint.
Renamed FileIndex to Index because it's more than just for files.
* Added other endpoints to support multiple sharing groups:
Create sharing group, remove sharing group, remove user from sharing group, update sharing group.
Version 0.16.3 (7/22/18)
* Fixed issue with user deletion.
Version 0.16.2 (7/22/18)
* Added new test case & new version of shared library.
Version 0.16.1 (7/16/18)
* Added endpoint to get sharing group ids.
Version 0.16.0 (7/15/18)
* Ownership of files by original uploading user
https://github.com/crspybits/SyncServerII/issues/76
Version 0.15.1 (6/20/18)
* Fixing an issue with Docker-- used wrong base image.
Version 0.15.0 (6/20/18)
* Bringing up to date with current Kitura and PerfectlySoft
* Update CredentialsDropbox, SyncServer-Shared, SMServerLib, and (my fork of) Perfect-MySQL
Now using actual master branch of Perfect-MySQL-- my PR got merged.
* Now using Swift version 4.1.2 (seems required by current Perfect libs)
* Updated Docker build and runtime to Swift 4.1.2
Version 0.14.1 (4/21/18)
* Added file group UUID's to file uploads and file index-- to enable client to upload/download files in groups.
https://github.com/crspybits/SyncServerII/issues/59
Version 0.14.0 (4/5/18)
* Multi version app meta data per file
https://github.com/crspybits/SyncServerII/issues/60
This is a breaking change because if you upload a change to the app meta data, you need to also increment the app meta data version.
Removing appMetaData from the FileIndex result because it's redundant with that in the file download, and the new endpoints.
Adding new endpoints:
DownloadAppMetaData
UploadAppMetaData
Version 0.13.1 (3/1/18)
* Updated Amazon Linux version in environments
* Standardized return value on cloud storage upload and finding file already exists.
* Added tests.
Version 0.13.0 (2/25/18)
* Add: File name extensions in cloud storage
https://github.com/crspybits/SyncServerII/issues/10
* “Constant” files— that don't download
https://github.com/crspybits/SyncServerII/issues/46
I'm doing this by adding a single initialization "README" type of file to owning user accounts when they are first created.
* Only send the cloud folder name when owning accounts are created
https://github.com/crspybits/SyncServerII/issues/64
Version 0.12.1 (2/4/18)
* Fixed long-standing bug in Google Drive file download-- where file would get interpreted as JSON if it contained JSON, but actually we needed data. Download would fail in that case.
* Also fixed corresponding problem with Dropbox download.
Version 0.12.0 (2/4/18)
* Added a test case for version returned in headers.
* Added userId to response when creating a user and when checking creds for a user.
Version 0.11.1 (2/1/18)
* Added server version to response headers so client can defend itself against incorrect server versions.
Version 0.11.0 (1/14/18)
* Added multi-version files
https://github.com/crspybits/SyncServerII/issues/12
* Fixed a long-standing bug in error handling in certain cases of problems with a deviceUUID
* Fixed a long-standing bug: Was allowing a file to be uploaded when it was was previously deleted.
* Added upload undeletion-- to deal with conflict resolution on clients.
Version 0.10.0 (1/7/18)
* New response type for uploads-- response fields now in a header key.
This to deal with iOS client issues for background downloading.
Version 0.9.0 (12/29/17)
* Upload response now includes actual dates used.
https://github.com/crspybits/SharedImages/issues/44
* Healthcheck improvements
https://github.com/crspybits/SyncServerII/issues/32
Added a test for this.
* Removed dropboxClientId, dropboxClientSecret from Constants.swift-- these are not used. Dropbox doesn't require server-specific creds.
* Added `deployedGitTag` to Constants.swift
* Improved tracking of internal server statistics.
Version 0.8.1 (12/24/17)
* Updates to testing-- getting testing script working better.
* More updates to testing-- getting tests to work without failing.
* New Dockerfile for building-- based off of standard Docker image
Version 0.8.0 (12/17/17)
* Using ServerConstants.HTTPOAuth2AuthorizationCodeKey instead of ServerConstants.GoogleHTTPServerAuthCodeKey
- This is going to require an iOS app update-- the prior version isn't going to work.
* Adding Dropbox authorization and cloud storage access.
- Using Swift/Kitura credentials Dropbox authorization from
https://github.com/crspybits/CredentialsDropbox.git
- Added test cases for this
* Package.swift is now using Swift 4 format.
* Added `runTests.sh` script to make running tests easier. As part of this:
- Added `jq` to Dockerfile image for building SyncServer
- Generalized test cases and removed some to make adding other cloud storage services
and other account sign-ins easier.
- TestSuites.json is the file that describes all of the tests run by runTests.sh
* Removed unused code and related tests: NSObject+Extras.swift
Seems that changes in Swift broke this and I'm not using those methods any more.
Version 0.7.7 (12/2/17)
* Fixed issue: When doing DoneUploads for upload deletions, previously I was using the params.currentSignedInUser!.userId and not the effective user id to lookup info in the FileIndex. As a result, when sharing users did an upload deletion, the files got marked as deleted in the file index, but didn't get deleted from cloud storage.
Version 0.7.6; 11/25/17
* Added dev ops files & script -- to create application bundles for Elastic Beanstalk deployment.
* Lots of related dev ops changes (no changes to the server code itself).
Version 0.7.4; 11/9/17
* Added devops files; getting tests running on Docker.
Version 0.7.3; 10/7/17
* Added comments, log output
* Added parameter to nginx.conf to fix upload size limit bug. See
https://github.com/crspybits/SyncServerII/issues/35
Version 0.7.2; 9/19/17
* Added missing `==` overload.
Version 0.7.1; 9/12/17
* Version bump on Shared library to fix http response header issue.
Version 0.7.0; 9/8/17
* Made SSL using Kitura optional.
See https://crspybits.github.io/SyncServerII/nginx.html
Version 0.6.1; 9/2/17
* Fixed issue: Google auth code was being sent to server when an owning user account was created, but was not being converted to a refresh token and saved.
* Set logging level to DEBUG.
Version 0.6; 8/9/17-- Bug fixes
* Don't store additional creds info for Google shared users
https://github.com/crspybits/SyncServerII/issues/13
* Make sure there is at least one cloud-storage sign-in in config when server starts
https://github.com/crspybits/SyncServerII/issues/9
* Use server-side date/time for file creation dates
https://github.com/crspybits/SyncServerII/issues/4
(Also necessitated removal of date keys for requests for UploadFile, and hence an update
to the SyncServer-Shared library, to version 2.0.0).
* Refresh token not saving result to mySQL
https://github.com/crspybits/SyncServerII/issues/20