Skip to content

Commit

Permalink
Fix replication in local cluster mode.
Browse files Browse the repository at this point in the history
  • Loading branch information
pmundkur committed May 30, 2012
1 parent e4cce67 commit b8136a9
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
3 changes: 2 additions & 1 deletion master/src/ddfs/ddfs_gc_main.erl
Expand Up @@ -1065,7 +1065,8 @@ try_put_blob(#state{rr_pid = RR, gc_peers = Peers}, BlobName, OkNodes, BL) ->
{ok, [PutUrl]} ->
Srcs = [{find_peer(Peers, N), N} || N <- OkNodes],
{SrcPeer, SrcNode} = ddfs_util:choose_random(Srcs),
RR ! {put_blob, BlobName, SrcPeer, SrcNode, PutUrl},
RealPutUrl = ddfs_util:local_cluster_url(PutUrl, put),
RR ! {put_blob, BlobName, SrcPeer, SrcNode, RealPutUrl},
pending;
E ->
{error, E}
Expand Down
21 changes: 21 additions & 0 deletions master/src/ddfs/ddfs_util.erl
Expand Up @@ -10,6 +10,7 @@
is_valid_name/1,
pack_objname/2,
parse_url/1,
local_cluster_url/2,
safe_rename/2,
startswith/2,
timestamp/0,
Expand Down Expand Up @@ -132,6 +133,26 @@ parse_url(Url) when is_list(Url) ->
_ -> not_ddfs
end.

-type method() :: get | put.
-spec local_cluster_url(binary() | string(), method()) -> string().
local_cluster_url(Url, Meth) when is_binary(Url) ->
local_cluster_url(binary_to_list(Url), Meth);
local_cluster_url(Url, Meth) when is_list(Url) ->
local_cluster_url(Url, Meth, disco:local_cluster()).
local_cluster_url(Url, _Meth, false) -> Url;
local_cluster_url(Url, Meth, true) ->
Method = string:to_upper(atom_to_list(Meth)),
ProxyPort = disco:get_setting("DISCO_PROXY_PORT"),
U = binary_to_list(list_to_binary(Url)),
{S, HostPort, Path, _Q, _F} = mochiweb_util:urlsplit(U),
Host = case string:tokens(HostPort, ":") of
[H] -> H;
[H|_] -> H
end,
ProxyUrl = [S, "://127.0.0.1:", ProxyPort, "/proxy/",
Host, "/", Method, Path],
lists:flatten(ProxyUrl).

-spec safe_rename(string(), string()) -> 'ok' | {'error', 'file_exists'
| {'chmod_failed', _} | {'rename_failed', _}}.
safe_rename(Src, Dst) ->
Expand Down

0 comments on commit b8136a9

Please sign in to comment.