summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHubert Plociniczak <hubert@lshift.net>2008-10-30 17:04:20 +0000
committerHubert Plociniczak <hubert@lshift.net>2008-10-30 17:04:20 +0000
commitedf5a1f7d0a0d0da0ea4789e25fc601f2b988efa (patch)
tree80d2dc7959f1cb52c312df988bd545104a1cabe3
parent2fff4a6a015d3b2379f76feb09ecca54860332c5 (diff)
parent8545ff685735423be8e952887ea640eef7fdbb79 (diff)
downloadrabbitmq-server-edf5a1f7d0a0d0da0ea4789e25fc601f2b988efa.tar.gz
Merge two default branches into single one
-rw-r--r--packaging/RPMS/Fedora/Makefile31
-rw-r--r--packaging/RPMS/Fedora/rabbitmq-server.logrotate2
-rw-r--r--packaging/RPMS/Fedora/rabbitmq-server.spec30
-rw-r--r--packaging/debs/Debian/debian/control2
-rw-r--r--packaging/debs/Debian/debian/rabbitmq-server.logrotate2
-rw-r--r--src/buffering_proxy.erl13
-rw-r--r--src/rabbit_amqqueue.erl22
-rw-r--r--src/rabbit_channel.erl6
8 files changed, 53 insertions, 55 deletions
diff --git a/packaging/RPMS/Fedora/Makefile b/packaging/RPMS/Fedora/Makefile
index 814c79f0..33032f11 100644
--- a/packaging/RPMS/Fedora/Makefile
+++ b/packaging/RPMS/Fedora/Makefile
@@ -4,32 +4,23 @@ VERSION=0.0.0
SOURCE_TARBALL_DIR=../../../dist
TARBALL=$(SOURCE_TARBALL_DIR)/rabbitmq-server-$(VERSION).tar.gz
TOP_DIR=$(shell pwd)
-RPM_VERSION=$(shell echo $(VERSION) | tr - _)
-DEFINES=--define '_topdir $(TOP_DIR)' --define '_tmppath $(TOP_DIR)/tmp' --define 'main_version $(VERSION)' --define 'rpm_version $(RPM_VERSION)' --define 'debian 1'
+DEFINES=--define '_topdir $(TOP_DIR)' --define '_tmppath $(TOP_DIR)/tmp' --define 'debian 1'
rpms: clean server
#Create proper environment for making rpms
prepare:
- mkdir -p $(TOP_DIR)/BUILD
- mkdir -p $(TOP_DIR)/SOURCES
- mkdir -p $(TOP_DIR)/SPECS
- mkdir -p $(TOP_DIR)/SRPMS
- mkdir -p $(TOP_DIR)/RPMS
- mkdir -p $(TOP_DIR)/tmp
- cp $(TOP_DIR)/$(TARBALL) $(TOP_DIR)/SOURCES
- cp $(TOP_DIR)/rabbitmq-server.spec $(TOP_DIR)/SPECS
- cp $(TOP_DIR)/init.d $(TOP_DIR)/BUILD
- cp $(TOP_DIR)/rabbitmqctl_wrapper $(TOP_DIR)/BUILD
- cp $(TOP_DIR)/rabbitmq-server.logrotate $(TOP_DIR)/BUILD
+ mkdir -p BUILD SOURCES SPECS SRPMS RPMS tmp
+ cp $(TOP_DIR)/$(TARBALL) SOURCES
+ cp rabbitmq-server.spec SPECS
+ sed -i 's/%%VERSION%%/$(VERSION)/' SPECS/rabbitmq-server.spec
+
+ cp init.d SOURCES/rabbitmq-server.init
+ cp rabbitmqctl_wrapper SOURCES/rabbitmq-server.wrapper
+ cp rabbitmq-server.logrotate SOURCES/rabbitmq-server.logrotate
server: prepare
- rpmbuild -ba $(TOP_DIR)/SPECS/rabbitmq-server.spec $(DEFINES) --target noarch
+ rpmbuild -ba SPECS/rabbitmq-server.spec $(DEFINES) --target noarch
clean:
- rm -rf $(TOP_DIR)/SOURCES/
- rm -rf $(TOP_DIR)/SPECS/
- rm -rf $(TOP_DIR)/RPMS/
- rm -rf $(TOP_DIR)/SRPMS/
- rm -rf $(TOP_DIR)/BUILD/
- rm -rf $(TOP_DIR)/tmp/
+ rm -rf SOURCES SPECS RPMS SRPMS BUILD tmp
diff --git a/packaging/RPMS/Fedora/rabbitmq-server.logrotate b/packaging/RPMS/Fedora/rabbitmq-server.logrotate
index 64cd01a1..ab87e4a5 100644
--- a/packaging/RPMS/Fedora/rabbitmq-server.logrotate
+++ b/packaging/RPMS/Fedora/rabbitmq-server.logrotate
@@ -9,4 +9,4 @@
postrotate
/sbin/service rabbitmq-server rotate-logs
endscript
-} \ No newline at end of file
+}
diff --git a/packaging/RPMS/Fedora/rabbitmq-server.spec b/packaging/RPMS/Fedora/rabbitmq-server.spec
index 43837ba3..214f6918 100644
--- a/packaging/RPMS/Fedora/rabbitmq-server.spec
+++ b/packaging/RPMS/Fedora/rabbitmq-server.spec
@@ -1,9 +1,12 @@
Name: rabbitmq-server
-Version: %{rpm_version}
+Version: %%VERSION%%
Release: 1
License: MPLv1.1
Group: Development/Libraries
-Source: http://www.rabbitmq.com/releases/rabbitmq-server/v%{main_version}/%{name}-%{main_version}.tar.gz
+Source: http://www.rabbitmq.com/releases/rabbitmq-server/v%{version}/%{name}-%{version}.tar.gz
+Source1: rabbitmq-server.init
+Source2: rabbitmq-server.wrapper
+Source3: rabbitmq-server.logrotate
URL: http://www.rabbitmq.com/
Vendor: LShift Ltd., Cohesive Financial Technologies LLC., Rabbit Technlogies Ltd.
%if 0%{?debian}
@@ -12,7 +15,7 @@ BuildRequires: python, python-json
%endif
Requires: erlang, logrotate
Packager: Hubert Plociniczak <hubert@lshift.net>
-BuildRoot: %{_tmppath}/%{name}-%{main_version}-%{release}-root
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
Summary: The RabbitMQ server
Requires(post): chkconfig
Requires(pre): chkconfig initscripts
@@ -22,10 +25,10 @@ RabbitMQ is an implementation of AMQP, the emerging standard for high
performance enterprise messaging. The RabbitMQ server is a robust and
scalable implementation of an AMQP broker.
-%define _mandir /usr/share/man
-%define _sbindir /usr/sbin
-%define _libdir %(erl -noshell -eval "io:format('~s~n', [code:lib_dir()]), halt().")
-%define _maindir %{buildroot}%{_libdir}/rabbitmq_server-%{main_version}
+
+%define _erllibdir %(erl -noshell -eval "io:format('~s~n', [code:lib_dir()]), halt().")
+%define _maindir %{buildroot}%{_erllibdir}/rabbitmq_server-%{version}
+
%pre
if [ $1 -gt 1 ]; then
@@ -35,7 +38,7 @@ if [ $1 -gt 1 ]; then
fi
%prep
-%setup -n %{name}-%{main_version}
+%setup -n %{name}-%{version}
%build
make
@@ -46,24 +49,23 @@ rm -rf %{buildroot}
make install TARGET_DIR=%{_maindir} \
SBIN_DIR=%{buildroot}%{_sbindir} \
MAN_DIR=%{buildroot}%{_mandir}
- VERSION=%{main_version}
+ VERSION=%{version}
mkdir -p %{buildroot}/var/lib/rabbitmq/mnesia
mkdir -p %{buildroot}/var/log/rabbitmq
mkdir -p %{buildroot}/etc/rc.d/init.d/
#Copy all necessary lib files etc.
-cp ../init.d %{buildroot}/etc/rc.d/init.d/rabbitmq-server
+install -m 0755 %SOURCE1 %{buildroot}/etc/rc.d/init.d/rabbitmq-server
chmod 0755 %{buildroot}/etc/rc.d/init.d/rabbitmq-server
mv %{buildroot}/usr/sbin/rabbitmqctl %{buildroot}/usr/sbin/rabbitmqctl_real
-cp ../rabbitmqctl_wrapper %{buildroot}/usr/sbin/rabbitmqctl
-chmod 0755 %{buildroot}/usr/sbin/rabbitmqctl
+install -m 0755 %SOURCE2 %{buildroot}/usr/sbin/rabbitmqctl
cp %{buildroot}%{_mandir}/man1/rabbitmqctl.1.gz %{buildroot}%{_mandir}/man1/rabbitmqctl_real.1.gz
mkdir -p %{buildroot}/etc/logrotate.d
-cp ../rabbitmq-server.logrotate %{buildroot}/etc/logrotate.d/rabbitmq-server
+install %SOURCE3 %{buildroot}/etc/logrotate.d/rabbitmq-server
%post
# create rabbitmq group
@@ -95,7 +97,7 @@ fi
%files
%defattr(-,root,root,-)
-%{_libdir}/rabbitmq_server-%{main_version}/
+%{_erllibdir}/rabbitmq_server-%{version}/
%{_mandir}/man1/rabbitmq-multi.1.gz
%{_mandir}/man1/rabbitmq-server.1.gz
%{_mandir}/man1/rabbitmqctl.1.gz
diff --git a/packaging/debs/Debian/debian/control b/packaging/debs/Debian/debian/control
index 675e15f4..749791a4 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-base | erlang-base-hipe, erlang-nox, erlang-dev, erlang-src, make, python, python-json
+Build-Depends: cdbs, debhelper (>= 5), erlang-nox, erlang-dev, python-json
Standards-Version: 3.7.2
Package: rabbitmq-server
diff --git a/packaging/debs/Debian/debian/rabbitmq-server.logrotate b/packaging/debs/Debian/debian/rabbitmq-server.logrotate
index 247635d1..bfd6b8da 100644
--- a/packaging/debs/Debian/debian/rabbitmq-server.logrotate
+++ b/packaging/debs/Debian/debian/rabbitmq-server.logrotate
@@ -9,4 +9,4 @@
postrotate
/etc/init.d/rabbitmq-server rotate-logs
endscript
-} \ No newline at end of file
+}
diff --git a/src/buffering_proxy.erl b/src/buffering_proxy.erl
index d2505701..dc168608 100644
--- a/src/buffering_proxy.erl
+++ b/src/buffering_proxy.erl
@@ -40,7 +40,8 @@ start_link(M, A) ->
ProxyPid = self(),
Ref = make_ref(),
Pid = spawn_link(
- fun () -> mainloop(ProxyPid, Ref, M,
+ fun () -> ProxyPid ! Ref,
+ mainloop(ProxyPid, Ref, M,
M:init(ProxyPid, A)) end),
proxy_loop(Ref, Pid, empty)
end).
@@ -48,13 +49,15 @@ start_link(M, A) ->
%%----------------------------------------------------------------------------
mainloop(ProxyPid, Ref, M, State) ->
- ProxyPid ! Ref,
NewState =
receive
{Ref, Messages} ->
- lists:foldl(fun (Msg, S) ->
- drain(M, M:handle_message(Msg, S))
- end, State, lists:reverse(Messages));
+ NewSt =
+ lists:foldl(fun (Msg, S) ->
+ drain(M, M:handle_message(Msg, S))
+ end, State, lists:reverse(Messages)),
+ ProxyPid ! Ref,
+ NewSt;
Msg -> M:handle_message(Msg, State)
end,
?MODULE:mainloop(ProxyPid, Ref, M, NewState).
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index bd64f1e4..7b2f801a 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -295,25 +295,23 @@ ack(QPid, Txn, MsgIds, ChPid) ->
commit_all(QPids, Txn) ->
Timeout = length(QPids) * ?CALL_TIMEOUT,
safe_pmap_ok(
+ fun (QPid) -> exit({queue_disappeared, QPid}) end,
fun (QPid) -> gen_server:call(QPid, {commit, Txn}, Timeout) end,
QPids).
rollback_all(QPids, Txn) ->
safe_pmap_ok(
+ fun (QPid) -> exit({queue_disappeared, QPid}) end,
fun (QPid) -> gen_server:cast(QPid, {rollback, Txn}) end,
QPids).
notify_down_all(QPids, ChPid) ->
Timeout = length(QPids) * ?CALL_TIMEOUT,
safe_pmap_ok(
- fun (QPid) ->
- rabbit_misc:with_exit_handler(
- %% we don't care if the queue process has terminated
- %% in the meantime
- fun () -> ok end,
- fun () -> gen_server:call(QPid, {notify_down, ChPid},
- Timeout) end)
- end,
+ %% we don't care if the queue process has terminated in the
+ %% meantime
+ fun (_) -> ok end,
+ fun (QPid) -> gen_server:call(QPid, {notify_down, ChPid}, Timeout) end,
QPids).
binding_forcibly_removed(BindingSpec, QueueName) ->
@@ -388,10 +386,13 @@ pseudo_queue(QueueName, Pid) ->
binding_specs = [],
pid = Pid}.
-safe_pmap_ok(F, L) ->
+safe_pmap_ok(H, F, L) ->
case [R || R <- rabbit_misc:upmap(
fun (V) ->
- try F(V)
+ try
+ rabbit_misc:with_exit_handler(
+ fun () -> H(V) end,
+ fun () -> F(V) end)
catch Class:Reason -> {Class, Reason}
end
end, L),
@@ -399,4 +400,3 @@ safe_pmap_ok(F, L) ->
[] -> ok;
Errors -> {error, Errors}
end.
-
diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl
index 7cec5f86..0544d32e 100644
--- a/src/rabbit_channel.erl
+++ b/src/rabbit_channel.erl
@@ -736,7 +736,8 @@ internal_commit(State = #ch{transaction_id = TxnKey,
case rabbit_amqqueue:commit_all(sets:to_list(Participants),
TxnKey) of
ok -> new_tx(State);
- {error, Errors} -> exit({commit_failed, Errors})
+ {error, Errors} -> rabbit_misc:protocol_error(
+ internal_error, "commit failed: ~w", [Errors])
end.
internal_rollback(State = #ch{transaction_id = TxnKey,
@@ -751,7 +752,8 @@ internal_rollback(State = #ch{transaction_id = TxnKey,
TxnKey) of
ok -> NewUAMQ = queue:join(UAQ, UAMQ),
new_tx(State#ch{unacked_message_q = NewUAMQ});
- {error, Errors} -> exit({rollback_failed, Errors})
+ {error, Errors} -> rabbit_misc:protocol_error(
+ internal_error, "rollback failed: ~w", [Errors])
end.
fold_per_queue(F, Acc0, UAQ) ->