summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2010-04-24 14:28:06 +0100
committerMatthew Sackman <matthew@lshift.net>2010-04-24 14:28:06 +0100
commit00e61d46b64953e503e84a37a144ed81a743d302 (patch)
tree8bf879d18e8f346fdaeb442cb871ccfba64db2f1
parent6763c0db04b4d3332a8f4175f68edc4fcb98a792 (diff)
parenta11602c05cc18553325f2a2f87d43c7d1617e2f4 (diff)
downloadrabbitmq-server-git-00e61d46b64953e503e84a37a144ed81a743d302.tar.gz
merging default into bug 21673
-rw-r--r--packaging/RPMS/Fedora/rabbitmq-server.spec2
-rw-r--r--packaging/debs/Debian/debian/control2
-rw-r--r--packaging/macports/Portfile.in2
-rw-r--r--src/rabbit_guid.erl7
-rw-r--r--src/rabbit_persister.erl29
5 files changed, 14 insertions, 28 deletions
diff --git a/packaging/RPMS/Fedora/rabbitmq-server.spec b/packaging/RPMS/Fedora/rabbitmq-server.spec
index 3ed907c898..b052d889b3 100644
--- a/packaging/RPMS/Fedora/rabbitmq-server.spec
+++ b/packaging/RPMS/Fedora/rabbitmq-server.spec
@@ -13,7 +13,7 @@ Source4: rabbitmq-asroot-script-wrapper
Source5: rabbitmq-server.ocf
URL: http://www.rabbitmq.com/
BuildArch: noarch
-BuildRequires: erlang, python-simplejson
+BuildRequires: erlang, python-simplejson, xmlto, libxslt
Requires: erlang, logrotate
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{_arch}-root
Summary: The RabbitMQ server
diff --git a/packaging/debs/Debian/debian/control b/packaging/debs/Debian/debian/control
index d4e2cd1763..479c356829 100644
--- a/packaging/debs/Debian/debian/control
+++ b/packaging/debs/Debian/debian/control
@@ -2,7 +2,7 @@ Source: rabbitmq-server
Section: net
Priority: extra
Maintainer: Tony Garnock-Jones <tonyg@rabbitmq.com>
-Build-Depends: cdbs, debhelper (>= 5), erlang-dev, python-simplejson
+Build-Depends: cdbs, debhelper (>= 5), erlang-dev, python-simplejson, xmlto, xsltproc
Standards-Version: 3.8.0
Package: rabbitmq-server
diff --git a/packaging/macports/Portfile.in b/packaging/macports/Portfile.in
index e1f582124a..153727be9a 100644
--- a/packaging/macports/Portfile.in
+++ b/packaging/macports/Portfile.in
@@ -23,7 +23,7 @@ checksums \
sha1 @sha1@ \
rmd160 @rmd160@
-depends_build port:erlang
+depends_build port:erlang port:xmlto port:libxslt
depends_run port:erlang
platform darwin 7 {
diff --git a/src/rabbit_guid.erl b/src/rabbit_guid.erl
index dfb17058c2..1ae8f7dac4 100644
--- a/src/rabbit_guid.erl
+++ b/src/rabbit_guid.erl
@@ -78,7 +78,7 @@ update_disk_serial() ->
end,
Serial.
-%% generate a guid that is monotonically increasing per process.
+%% generate a GUID.
%%
%% The id is only unique within a single cluster and as long as the
%% serial store hasn't been deleted.
@@ -92,7 +92,7 @@ guid() ->
%% A persisted serial number, in combination with self/0 (which
%% includes the node name) uniquely identifies a process in space
%% and time. We combine that with a process-local counter to give
- %% us a GUID that is monotonically increasing per process.
+ %% us a GUID.
G = case get(guid) of
undefined -> {{gen_server:call(?SERVER, serial, infinity), self()},
0};
@@ -101,8 +101,7 @@ guid() ->
put(guid, G),
erlang:md5(term_to_binary(G)).
-%% generate a readable string representation of a guid. Note that any
-%% monotonicity of the guid is not preserved in the encoding.
+%% generate a readable string representation of a GUID.
string_guid(Prefix) ->
Prefix ++ "-" ++ base64:encode_to_string(guid()).
diff --git a/src/rabbit_persister.erl b/src/rabbit_persister.erl
index 3235a837e8..f16b7a33cd 100644
--- a/src/rabbit_persister.erl
+++ b/src/rabbit_persister.erl
@@ -40,7 +40,7 @@
-export([transaction/1, extend_transaction/2, dirty_work/1,
commit_transaction/1, rollback_transaction/1,
- force_snapshot/0, serial/0, fetch_content/1]).
+ force_snapshot/0, fetch_content/1]).
-include("rabbit.hrl").
@@ -53,7 +53,7 @@
-define(MAX_WRAP_ENTRIES, 500).
--define(PERSISTER_LOG_FORMAT_VERSION, {2, 5}).
+-define(PERSISTER_LOG_FORMAT_VERSION, {2, 6}).
-record(pstate, {log_handle, entry_count, deadline,
pending_logs, pending_replies,
@@ -64,7 +64,7 @@
%% the other maps a key to one or more queues.
%% The aim is to reduce the overload of storing a message multiple times
%% when it appears in several queues.
--record(psnapshot, {serial, transactions, messages, queues, next_seq_id}).
+-record(psnapshot, {transactions, messages, queues, next_seq_id}).
%%----------------------------------------------------------------------------
@@ -84,7 +84,6 @@
-spec(commit_transaction/1 :: ({txn(), queue_name()}) -> 'ok').
-spec(rollback_transaction/1 :: ({txn(), queue_name()}) -> 'ok').
-spec(force_snapshot/0 :: () -> 'ok').
--spec(serial/0 :: () -> non_neg_integer()).
-spec(fetch_content/1 :: (queue_name()) -> [{message(), boolean()}]).
-endif.
@@ -118,9 +117,6 @@ rollback_transaction(TxnKey) ->
force_snapshot() ->
gen_server:call(?SERVER, force_snapshot, infinity).
-serial() ->
- gen_server:call(?SERVER, serial, infinity).
-
fetch_content(QName) ->
gen_server:call(?SERVER, {fetch_content, QName}, infinity).
@@ -130,8 +126,7 @@ init([DurableQueues]) ->
process_flag(trap_exit, true),
FileName = base_filename(),
ok = filelib:ensure_dir(FileName),
- Snapshot = #psnapshot{serial = 0,
- transactions = dict:new(),
+ Snapshot = #psnapshot{transactions = dict:new(),
messages = ets:new(messages, []),
queues = ets:new(queues, []),
next_seq_id = 0},
@@ -149,10 +144,8 @@ init([DurableQueues]) ->
[Recovered, Bad]),
LH
end,
- {Res, RecoveredContent, LoadedSnapshot} =
+ {Res, RecoveredContent, NewSnapshot} =
internal_load_snapshot(LogHandle, DurableQueues, Snapshot),
- NewSnapshot = LoadedSnapshot#psnapshot{
- serial = LoadedSnapshot#psnapshot.serial + 1},
case Res of
ok ->
ok = take_snapshot(LogHandle, NewSnapshot);
@@ -176,9 +169,6 @@ handle_call({commit_transaction, TxnKey}, From, State) ->
do_noreply(internal_commit(From, TxnKey, State));
handle_call(force_snapshot, _From, State) ->
do_reply(ok, flush(true, State));
-handle_call(serial, _From,
- State = #pstate{snapshot = #psnapshot{serial = Serial}}) ->
- do_reply(Serial, State);
handle_call({fetch_content, QName}, _From, State =
#pstate{recovered_content = RC}) ->
List = case dict:find(QName, RC) of
@@ -357,8 +347,7 @@ flush(ForceSnapshot, State = #pstate{pending_logs = PendingLogs,
pending_logs = [],
pending_replies = []}.
-current_snapshot(_Snapshot = #psnapshot{serial = Serial,
- transactions = Ts,
+current_snapshot(_Snapshot = #psnapshot{transactions = Ts,
messages = Messages,
queues = Queues,
next_seq_id = NextSeqId}) ->
@@ -368,8 +357,7 @@ current_snapshot(_Snapshot = #psnapshot{serial = Serial,
fun ({{_QName, PKey}, _Delivered, _SeqId}, S) ->
sets:add_element(PKey, S)
end, sets:new(), Queues)),
- InnerSnapshot = {{serial, Serial},
- {txns, Ts},
+ InnerSnapshot = {{txns, Ts},
{messages, ets:tab2list(Messages)},
{queues, ets:tab2list(Queues)},
{next_seq_id, NextSeqId}},
@@ -397,13 +385,12 @@ internal_load_snapshot(LogHandle,
{K, [Loaded_Snapshot | Items]} = disk_log:chunk(LogHandle, start),
case check_version(Loaded_Snapshot) of
{ok, StateBin} ->
- {{serial, Serial}, {txns, Ts}, {messages, Ms}, {queues, Qs},
+ {{txns, Ts}, {messages, Ms}, {queues, Qs},
{next_seq_id, NextSeqId}} = binary_to_term(StateBin),
true = ets:insert(Messages, Ms),
true = ets:insert(Queues, Qs),
Snapshot1 = replay(Items, LogHandle, K,
Snapshot#psnapshot{
- serial = Serial,
transactions = Ts,
next_seq_id = NextSeqId}),
{RecoveredContent, Snapshot2} =