summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-08-19 22:09:13 +0100
committerMatthew Sackman <matthew@lshift.net>2009-08-19 22:09:13 +0100
commitf7d63a70517bc7e591d4cba0a929abc490348d4f (patch)
tree7fdb10dadab25e006d5260e454394d47f49423a6
parent7188bc964fd65a1eed3d46cdec65195df0371eb2 (diff)
downloadrabbitmq-server-f7d63a70517bc7e591d4cba0a929abc490348d4f.tar.gz
stuff as according to QA.
-rw-r--r--src/rabbit_guid.erl26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/rabbit_guid.erl b/src/rabbit_guid.erl
index f669b9dc..7b0eed13 100644
--- a/src/rabbit_guid.erl
+++ b/src/rabbit_guid.erl
@@ -64,14 +64,26 @@ start_link() ->
[update_disk_serial()], []).
update_disk_serial() ->
- Filename = filename:join(mnesia:system_info(directory), ?SERIAL_FILENAME),
- Serial = case file:read_file(Filename) of
- {ok, Content} ->
- binary_to_term(Content);
- {error, _} ->
- rabbit_persister:serial()
+ Filename = filename:join(rabbit_mnesia:dir(), ?SERIAL_FILENAME),
+ Serial = case file:consult(Filename) of
+ {ok, [Num]} -> Num;
+ {error, _} -> rabbit_persister:serial()
end,
- ok = file:write_file(Filename, term_to_binary(Serial + 1)),
+ Handle = case file:open(Filename, [write]) of
+ {ok, Device} -> Device;
+ {error, Reason} ->
+ throw({error, {cannot_create_guid_file, Filename, Reason}})
+ end,
+ try
+ ok = io:write(Handle, Serial + 1),
+ ok = io:put_chars(Handle, [$.])
+ after
+ case file:close(Handle) of
+ ok -> ok;
+ {error, Reason1} ->
+ throw({error, {cannot_close_guid_file, Filename, Reason1}})
+ end
+ end,
Serial.
%% generate a guid that is monotonically increasing per process.