diff options
author | Matthew Sackman <matthew@lshift.net> | 2009-08-19 22:09:13 +0100 |
---|---|---|
committer | Matthew Sackman <matthew@lshift.net> | 2009-08-19 22:09:13 +0100 |
commit | f7d63a70517bc7e591d4cba0a929abc490348d4f (patch) | |
tree | 7fdb10dadab25e006d5260e454394d47f49423a6 | |
parent | 7188bc964fd65a1eed3d46cdec65195df0371eb2 (diff) | |
download | rabbitmq-server-f7d63a70517bc7e591d4cba0a929abc490348d4f.tar.gz |
stuff as according to QA.
-rw-r--r-- | src/rabbit_guid.erl | 26 |
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. |