Commit Graph
100 Commits
Author SHA1 Message Date
Garret Alfert 2fac808343 Split list of ETAGs before removing Weak indicator 2018-01-05 06:55:46 +01:00
Garret Alfert 18670021b1 Handle out of sync metadata in Redis on PUTs
When the IF-MATCH comparison fails, we check the actual metadata on
the Swift server to be sure.
2018-01-05 06:49:42 +01:00
Garret Alfert 24ae9ad893 Allow for weak ETAGs with leading quote
The remoteStorage client currently surrounds all ETAGs with quotes, so
instead of W\"etag" it looks like "W\"etag".
2018-01-03 22:06:03 +01:00
Garret Alfert 8ffd15bb61 Ignore weak ETAG prefix when comparing MATCH headers
Our metadata only contains the actual ETAG value, so we need
to use only that when comparing it.
2018-01-03 21:31:25 +01:00
Garret Alfert 07533e139d Remove migration scripts 2016-09-12 12:32:31 +02:00
Garret Alfert 35abddc4ea Remove container migration checks 2016-09-12 11:49:23 +02:00
Garret Alfert 08a2754936 Skip migration for users with too many files 2016-09-08 11:45:41 +02:00
Garret Alfert 41baecbf35 Use a MigrationRunner to iterate over all unmigrated users 2016-09-07 19:58:32 +02:00
Garret Alfert 74428408b1 Use new Redis migration hash in Liquor Cabinet itself 2016-09-07 18:13:52 +02:00
Garret Alfert 710657748b Use full dir listing instead of per subdir 2016-09-07 17:59:14 +02:00
Garret Alfert 685c82d068 Use Redis hash for storing migration state instead of one key per user 2016-09-07 17:05:27 +02:00
Garret Alfert ad8a75a0ad Use COPY method instead of GET and PUT 2016-09-07 14:07:13 +02:00
Garret Alfert 90a6753d88 Use container path directly, instead of hiding it behind a method 2016-09-06 16:36:43 +02:00
Garret Alfert 6b7bb8144e Fix migration script to work without dir objects 2016-09-06 16:24:12 +02:00
Garret Alfert e6fa6ca586 User proper container and path based on migration state 2016-09-05 18:27:35 +02:00
Garret Alfert 22ce52d00c Migration for moving to a single shared container for all users 2016-09-02 20:03:48 +02:00
Garret Alfert c79b86bff5 Change Redis key for container migration 2016-09-02 16:41:36 +02:00
Garret Alfert fdc819d53d Determine which container to use from Redis 2016-09-02 15:15:48 +02:00
Garret Alfert 49ec6effa7 Remove unused method 2016-09-02 15:10:01 +02:00
Garret Alfert 7a8694fd55 Respond with status 201 when creating new objects
closes #86
2016-08-05 17:43:47 +02:00
Garret Alfert 5891cb9cf0 Make sure to delete existing metadata on DELETE
fixes #80
2016-08-05 17:17:59 +02:00
Garret Alfert 995ba52886 Log user's storage size in Redis 2016-06-13 13:18:10 +02:00
Garret Alfert c1d60586ec Improve some spec wordings 2016-06-03 01:08:52 +02:00
Garret Alfert 28b6a7f22d Merge branch 'master' into feature/update_to_recent_rs_spec
# Conflicts:
#	spec/swift/app_spec.rb
2016-06-02 22:21:16 +02:00
Garret Alfert a349db5243 Spec for directory listing of non-existing directories 2016-06-02 18:57:40 +02:00
Garret Alfert 576e4a9afb Specs for response headers on GET requests 2016-06-02 18:57:37 +02:00
Garret Alfert 16e51038b1 Send ETag of deleted item in header 2016-06-02 18:56:45 +02:00
Garret Alfert 23f0908f38 No need for Expires header anymore 2016-06-02 18:54:49 +02:00
Garret Alfert ed8061b594 Use content type "application/ld+json" for directory listings 2016-06-02 18:54:47 +02:00
Garret Alfert c897959029 Send "Precondition Failed" message body with 412 responses 2016-06-02 18:49:44 +02:00
Garret Alfert cc91b5c4cd Send "Not Found" message body with 404 responses (refs #42) 2016-06-02 13:19:06 +02:00
Garret Alfert 83d8f29a04 Send "Conflict" message body with 409 responses (closes #409) 2016-06-02 13:18:59 +02:00
Garret Alfert 9a9a9c79e5 Send "Unauthorized" message body with 401 responses (refs #42) 2016-06-02 13:18:51 +02:00
Garret Alfert 781687d8a1 Migration for adding metadata for root dir to Redis 2016-03-07 14:14:07 +01:00
Garret Alfert df87deaf0b Don't fail when order of array is different 2016-03-04 22:48:50 +01:00
Garret Alfert 648f86e0f3 Fix typo in specs 2016-03-04 22:40:04 +01:00
Garret Alfert 1d39445ba9 Fix deleting metadata for empty subdirectories 2016-03-04 22:17:33 +01:00
Garret Alfert 5378826c6a Also use content checksum for ETag calculation
Timestamp is not enough, as it might be the same
for two consequent PUTs.
2016-03-04 22:17:25 +01:00
Garret Alfert 3590b7dedc Determine correct metadata key for objects in root dir 2016-03-04 20:47:41 +01:00
Garret Alfert 1c0bd18915 Delete obsolete method 2016-03-04 20:34:48 +01:00
Garret Alfert 43ff83d26b Don't allow PUTS with Content-Range header 2016-03-04 19:33:00 +01:00
Garret Alfert fd3293025d ETags are quoted, doh 2016-03-04 19:32:36 +01:00
Garret Alfert d08bc45489 Don't use or create any directory objects in Swift 2016-03-04 15:33:28 +01:00
Garret Alfert 14a522f09f Load bundled environment to access all libraries 2016-03-03 00:39:35 +01:00
Garret Alfert 9b7b224f79 Use more explicit key name for items 2016-03-02 18:06:42 +01:00
Garret Alfert c2fd9bc6d0 Change Redis metadata key prefix to rs:m 2016-03-02 18:04:38 +01:00
Garret Alfert 88f2dceb27 Use single letters for Redis metadata keys
Saves 16 characters per document object and 10
characters per directory object
2016-03-02 15:00:33 +01:00
Garret Alfert 650da91a1d Shorten Redis metadata keys
Use rsm:<username>:<dir>:i instead of
rs_meta:<username>:<dir>:items
2016-03-02 14:43:28 +01:00
Garret Alfert 067f4a1553 Use shorter Redis key for dir backend config
rsc:db:username instead of rs_config:dir_backend:username
2016-03-02 14:33:48 +01:00
Garret Alfert ff25b40385 Save last modified timestamp for objects as well 2016-03-02 14:05:53 +01:00
Garret Alfert 19f6fcd068 Use actual Last-Modified time we get from Swift 2016-03-02 14:00:59 +01:00
Garret Alfert d18de83893 Strip trailing whitespace from Swift token 2016-03-02 13:59:44 +01:00
Garret Alfert f1f450cc72 Don't add double trailing slash to container URL
The directory name already contains a trailing slash.
2016-03-01 22:57:54 +01:00
Garret Alfert 41074e35b3 Log usernames for failed migration to separate file
This way they can be easily retried later on.
2016-02-29 15:35:37 +01:00
Garret Alfert 33731f793a Set dry_run via environment variable
Can be enabled via `DRYRUN=true`
2016-02-24 19:07:26 +01:00
Garret Alfert 3b391246ed Use proper logger for migration script 2016-02-24 19:07:15 +01:00
Garret Alfert 570e3dcdb5 Set directory backend type during migration 2016-02-24 19:06:48 +01:00
Garret Alfert 54176b6928 Use data directly from Swift for metadata migration 2016-02-22 16:22:38 +01:00
Garret Alfert 5370df9c75 Basic migration script using actual RS dir listings 2016-02-15 15:15:01 +01:00
Garret Alfert c730333143 Don't try to do put or delete requests to root dir in order to update etag 2016-02-02 18:07:12 +01:00
Garret Alfert d7a71d039f Comment out the Riak settings from example config 2016-02-02 01:04:49 +01:00
Garret Alfert 2516e9090e Make Travis only run Swift specs for now 2016-02-02 00:57:53 +01:00
Garret Alfert 2e6ad907ef Merge branch 'master' into redis_metadata_storage 2016-02-02 00:36:30 +01:00
Garret Alfert 954f046dd9 Make Travis install Redis 2016-02-02 00:19:15 +01:00
Garret Alfert 536df23336 Make Travis create a Swift token file 2016-02-02 00:10:47 +01:00
Garret Alfert 409628c9e7 Trying to fix specs when run on Travis 2016-02-01 18:04:35 +01:00
Garret Alfert 9ba85446ef Use parentheses to fix syntax warnings 2016-02-01 15:00:39 +01:00
Garret Alfert 7084a50d1b Make dir_empty? method use Redis metadata 2016-01-29 16:45:17 +01:00
Garret Alfert 573dadf365 Respond with 503 when directory backend is locked 2016-01-29 16:18:49 +01:00
Garret Alfert a4673e9661 Use directory backend config from redis instead of config file 2016-01-29 16:18:09 +01:00
Garret Alfert 16dcc56fba No need to stub has_name_collision? anymore 2016-01-29 15:16:24 +01:00
Garret Alfert 4ca67c7ea9 Do collision detection via Redis metadata 2016-01-28 19:15:50 +01:00
Garret Alfert 4e7c8f68bb Add missing arguments to method call 2016-01-28 17:48:20 +01:00
Garret Alfert d973771192 Remove some duplication 2016-01-26 20:33:43 +01:00
Garret Alfert 0745354b8a Retrieve directory listing from Redis via Lua 2016-01-26 20:32:29 +01:00
Garret Alfert 737be34e73 Configure the source of dir listing (redis or swift) 2016-01-26 20:21:45 +01:00
Garret Alfert 15196ca4b9 Check IF_NONE_MATCH header for directory listings 2016-01-23 14:29:37 -05:00
Garret Alfert bec9f7a6cc Set ETag header for directory listings 2016-01-23 14:29:18 -05:00
Garret Alfert c676c1a6a8 Add metadata entry for root directory 2016-01-23 14:28:14 -05:00
Garret Alfert 599865cf3f Generate directory listing from Redis metadata 2016-01-23 13:26:38 -05:00
Garret Alfert dfc8a59096 Fix redis keys and content for nested directories 2016-01-23 13:20:42 -05:00
Garret Alfert f73c286ce9 Purge all keys from redis before every test run 2016-01-23 12:34:08 -05:00
Garret Alfert 25c170021e Delete metadata from Redis when deleting objects 2016-01-22 16:04:28 -05:00
Garret Alfert 02e5d0b5ab Fix relative path in riak specs 2016-01-22 14:49:57 -05:00
Garret Alfert 972378e67f Don't care for order of array when comparing 2016-01-22 14:46:41 -05:00
Garret Alfert 189d04af25 Save list of directory items in redis 2016-01-20 17:27:00 -05:00
Garret Alfert cd2c0865e8 Save directory metadata in redis (WIP) 2016-01-20 15:53:22 -05:00
Garret Alfert 990ea9cf28 Save object metadata in redis 2016-01-20 15:33:35 -05:00
Garret Alfert 77bd54b009 Move old specs into riak subdir 2016-01-20 15:32:44 -05:00
Garret Alfert 67ebeb47d8 Use new hook-juggler URL in Travis config
Heroku changed their routing using a new domain.
2014-10-21 16:06:36 +02:00
Garret Alfert 8e355ba532 Respond with 409 on naming collisions between documents and folders 2014-09-23 17:59:28 +02:00
Garret Alfert 1603d3d2ff Merge branch 'master' into rs_spec_02
Conflicts:
	lib/remote_storage/riak.rb
	spec/directories_spec.rb
2014-09-23 17:58:21 +02:00
Garret Alfert a6707dd40d Add spec for unescaped special characters 2014-02-24 20:44:23 +01:00
Garret Alfert 9e6cc6178d Don't choke on colons in directory names (fixes #39) 2014-02-24 17:43:43 +01:00
Garret Alfert ed4152095b Code formatting 2014-01-09 23:58:20 +01:00
Garret Alfert 270ac1442e If-None-Match header may contain multiple revisions 2014-01-09 23:51:05 +01:00
Garret Alfert 38e69f1423 Last-Modified header is not needed anymore 2014-01-09 21:00:13 +01:00
Garret Alfert 8073eec851 HEAD requests for directory listings 2014-01-09 20:03:34 +01:00
Garret Alfert f8b1ad730a HEAD requests for documents 2014-01-09 19:26:36 +01:00
Garret Alfert 6d86fa516a Set Content-Length header for documents on GET 2014-01-08 23:27:07 +01:00