From c2fd9bc6d0f1245797673900fc765cd8bda48b36 Mon Sep 17 00:00:00 2001 From: Garret Alfert Date: Wed, 2 Mar 2016 18:04:38 +0100 Subject: [PATCH] Change Redis metadata key prefix to rs:m --- lib/remote_storage/swift.rb | 32 ++++++++++++++++---------------- migrate_metadata_to_redis.rb | 6 +++--- spec/swift/app_spec.rb | 36 ++++++++++++++++++------------------ 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/lib/remote_storage/swift.rb b/lib/remote_storage/swift.rb index 1d0b4f5..1cf7a34 100644 --- a/lib/remote_storage/swift.rb +++ b/lib/remote_storage/swift.rb @@ -87,11 +87,11 @@ module RemoteStorage lua_script = <<-EOF local user = ARGV[1] local directory = ARGV[2] - local items = redis.call("smembers", "rsm:"..user..":"..directory.."/:i") + local items = redis.call("smembers", "rs:m:"..user..":"..directory.."/:i") local listing = {} for index, name in pairs(items) do - local redis_key = "rsm:"..user..":" + local redis_key = "rs:m:"..user..":" if directory == "" then redis_key = redis_key..name else @@ -121,7 +121,7 @@ module RemoteStorage end def get_directory_listing_from_redis(user, directory) - etag = redis.hget "rsm:#{user}:#{directory}/", "e" + etag = redis.hget "rs:m:#{user}:#{directory}/", "e" none_match = (server.env["HTTP_IF_NONE_MATCH"] || "").split(",").map(&:strip) server.halt 304 if none_match.include? etag @@ -313,7 +313,7 @@ module RemoteStorage end -- check for existing directory with the same name as the document - local redis_key = "rsm:"..user..":" + local redis_key = "rs:m:"..user..":" if directory == "" then redis_key = redis_key..key.."/" else @@ -324,12 +324,12 @@ module RemoteStorage end for index, dir in pairs(parent_directories) do - if redis.call("hget", "rsm:"..user..":"..dir.."/", "e") then + if redis.call("hget", "rs:m:"..user..":"..dir.."/", "e") then -- the directory already exists, no need to do further checks return false else -- check for existing document with same name as directory - if redis.call("hget", "rsm:"..user..":"..dir, "e") then + if redis.call("hget", "rs:m:"..user..":"..dir, "e") then return true end end @@ -401,9 +401,9 @@ module RemoteStorage end def update_metadata_object(user, directory, key, metadata) - redis_key = "rsm:#{user}:#{directory}/#{key}" + redis_key = "rs:m:#{user}:#{directory}/#{key}" redis.hmset(redis_key, *metadata) - redis.sadd "rsm:#{user}:#{directory}/:i", key + redis.sadd "rs:m:#{user}:#{directory}/:i", key true end @@ -418,10 +418,10 @@ module RemoteStorage etag = etag_for(get_response.body) end - key = "rsm:#{user}:#{dir}/" + key = "rs:m:#{user}:#{dir}/" metadata = {e: etag, m: timestamp} redis.hmset(key, *metadata) - redis.sadd "rsm:#{user}:#{parent_directory_for(dir)}:i", "#{top_directory(dir)}/" + redis.sadd "rs:m:#{user}:#{parent_directory_for(dir)}:i", "#{top_directory(dir)}/" end true @@ -436,9 +436,9 @@ module RemoteStorage end def delete_metadata_objects(user, directory, key) - redis_key = "rsm:#{user}:#{directory}/#{key}" + redis_key = "rs:m:#{user}:#{directory}/#{key}" redis.del(redis_key) - redis.srem "rsm:#{user}:#{directory}/:i", key + redis.srem "rs:m:#{user}:#{directory}/:i", key end def delete_dir_objects(user, directory) @@ -449,8 +449,8 @@ module RemoteStorage unless dir == "" do_delete_request("#{url_for_directory(user, dir)}/") end - redis.del "rsm:#{user}:#{directory}/" - redis.srem "rsm:#{user}:#{parent_directory_for(dir)}:i", "#{dir}/" + redis.del "rs:m:#{user}:#{directory}/" + redis.srem "rs:m:#{user}:#{parent_directory_for(dir)}:i", "#{dir}/" else unless dir == "" res = do_put_request("#{url_for_directory(user, dir)}/", timestamp.to_s, "text/plain") @@ -460,14 +460,14 @@ module RemoteStorage etag = etag_for(get_response.body) end metadata = {e: etag, m: timestamp} - redis.hmset("rsm:#{user}:#{dir}/", *metadata) + redis.hmset("rs:m:#{user}:#{dir}/", *metadata) end end end def dir_empty?(user, dir) if directory_backend(user).match(/new/) - redis.smembers("rsm:#{user}:#{dir}/:i").empty? + redis.smembers("rs:m:#{user}:#{dir}/:i").empty? else do_get_request("#{container_url_for(user)}/?format=plain&limit=1&path=#{escape(dir)}/") do |res| return res.headers[:content_length] == "0" diff --git a/migrate_metadata_to_redis.rb b/migrate_metadata_to_redis.rb index a421d27..336f498 100755 --- a/migrate_metadata_to_redis.rb +++ b/migrate_metadata_to_redis.rb @@ -85,13 +85,13 @@ class Migrator end def add_item_to_parent_dir(dir, item) - key = "rsm:#{username}:#{parent_directory_for(dir)}:i" + key = "rs:m:#{username}:#{parent_directory_for(dir)}:i" logger.debug "Adding item #{item} to #{key}" redis.sadd(key, item) unless dry_run end def save_directory_data(dir, item, data, timestamp) - key = "rsm:#{username}:#{dir.gsub(/^\//, "")}#{item}" + key = "rs:m:#{username}:#{dir.gsub(/^\//, "")}#{item}" metadata = { e: data["ETag"], m: timestamp_for(data["Last-Modified"]) @@ -102,7 +102,7 @@ class Migrator end def save_document_data(dir, item, data) - key = "rsm:#{username}:#{dir.gsub(/^\//, "")}#{item}" + key = "rs:m:#{username}:#{dir.gsub(/^\//, "")}#{item}" metadata = { e: data["ETag"], s: data["Content-Length"], diff --git a/spec/swift/app_spec.rb b/spec/swift/app_spec.rb index 61204e3..29504f7 100644 --- a/spec/swift/app_spec.rb +++ b/spec/swift/app_spec.rb @@ -31,7 +31,7 @@ describe "App" do put "/phil/food/aguacate", "si" end - metadata = redis.hgetall "rsm:phil:food/aguacate" + metadata = redis.hgetall "rs:m:phil:food/aguacate" metadata["s"].must_equal "2" metadata["t"].must_equal "text/plain; charset=utf-8" metadata["e"].must_equal "bla" @@ -50,20 +50,20 @@ describe "App" do end end - metadata = redis.hgetall "rsm:phil:/" + metadata = redis.hgetall "rs:m:phil:/" metadata["e"].must_equal "rootetag" metadata["m"].length.must_equal 13 - metadata = redis.hgetall "rsm:phil:food/" + metadata = redis.hgetall "rs:m:phil:food/" metadata["e"].must_equal "bla" metadata["m"].length.must_equal 13 - food_items = redis.smembers "rsm:phil:food/:i" + food_items = redis.smembers "rs:m:phil:food/:i" food_items.each do |food_item| ["camaron", "aguacate"].must_include food_item end - root_items = redis.smembers "rsm:phil:/:i" + root_items = redis.smembers "rs:m:phil:/:i" root_items.must_equal ["food/"] end @@ -81,7 +81,7 @@ describe "App" do last_response.status.must_equal 200 - metadata = redis.hgetall "rsm:phil:food/aguacate" + metadata = redis.hgetall "rs:m:phil:food/aguacate" metadata["s"].must_equal "2" end @@ -94,7 +94,7 @@ describe "App" do last_response.status.must_equal 409 - metadata = redis.hgetall "rsm:phil:food" + metadata = redis.hgetall "rs:m:phil:food" metadata.must_be_empty end @@ -107,7 +107,7 @@ describe "App" do last_response.status.must_equal 409 - metadata = redis.hgetall "rsm:phil:food/aguacate/empanado" + metadata = redis.hgetall "rs:m:phil:food/aguacate/empanado" metadata.must_be_empty end end @@ -123,7 +123,7 @@ describe "App" do last_response.status.must_equal 503 - metadata = redis.hgetall "rsm:phil:food/aguacate" + metadata = redis.hgetall "rs:m:phil:food/aguacate" metadata.must_be_empty end end @@ -138,7 +138,7 @@ describe "App" do last_response.status.must_equal 503 - metadata = redis.hgetall "rsm:phil:food/aguacate" + metadata = redis.hgetall "rs:m:phil:food/aguacate" metadata.must_be_empty end end @@ -178,12 +178,12 @@ describe "App" do end end - metadata = redis.hgetall "rsm:phil:food/aguacate" + metadata = redis.hgetall "rs:m:phil:food/aguacate" metadata.must_be_empty end it "deletes the directory objects metadata in redis" do - old_metadata = redis.hgetall "rsm:phil:food/" + old_metadata = redis.hgetall "rs:m:phil:food/" put_stub = OpenStruct.new(headers: {etag: "newetag"}) get_stub = OpenStruct.new(body: "rootbody") @@ -197,15 +197,15 @@ describe "App" do end end - metadata = redis.hgetall "rsm:phil:food/" + metadata = redis.hgetall "rs:m:phil:food/" metadata["e"].must_equal "newetag" metadata["m"].length.must_equal 13 metadata["m"].wont_equal old_metadata["m"] - food_items = redis.smembers "rsm:phil:food/:i" + food_items = redis.smembers "rs:m:phil:food/:i" food_items.must_equal ["camaron"] - root_items = redis.smembers "rsm:phil:/:i" + root_items = redis.smembers "rs:m:phil:/:i" root_items.must_equal ["food/"] end @@ -223,13 +223,13 @@ describe "App" do end end - metadata = redis.hgetall "rsm:phil:food/" + metadata = redis.hgetall "rs:m:phil:food/" metadata.must_be_empty - food_items = redis.smembers "rsm:phil:food/:i" + food_items = redis.smembers "rs:m:phil:food/:i" food_items.must_be_empty - root_items = redis.smembers "rsm:phil:/:i" + root_items = redis.smembers "rs:m:phil:/:i" root_items.must_be_empty end end