rabbitmq / rabbitmq-common Goto Github PK
View Code? Open in Web Editor NEWCommon library used by rabbitmq-server and rabbitmq-erlang-client
License: Other
Common library used by rabbitmq-server and rabbitmq-erlang-client
License: Other
The implementation of the new gen_server2
stats (RabbitMQ >= 3.6.7) wakes up the process before it has the chance to go into hibernation (mailbox messages). The stats timer should be stopped when pre_hibernate
is being handled, and restarted in post_hibernate
.
When trying to set RABBITMQ_CONFIG_FILE
when running run-broker
on linux, it is being transformed to some weird symbols.
On MacOS it is being set without any problems.
make
is 3.81 on both systems
It looks like variable assignment error in makefile.
This could be a linux make
bug.
Demonstration of behaviour: https://gist.github.com/hairyhum/b95528d2c52b4ac43346cae570fc9c3b
As seen from an exception reported by a user. Result of notify_queues/1
is not used, and can be ignored.
Hi,
I have an erlang.mk project which has been using amqp_client and qdate happily for a long time. On a recent 'make distclean' I am suddenly getting the following -
===> Errors generating release
Duplicated modules:
ec_semver_parser specified in erlware_commons and rabbit_common
ec_semver specified in erlware_commons and rabbit_common
qdate pulls in erlware_commons and amqp_client pulls in rabbit_common.
@essen suggests this is a bona fide naming conflict; it looks to me the issue may have been introduced on the rabbitmq-common side.
Is this something that could/should be fixed ?
Thank you -
Many systems today come with Python 3 being the default "python". But the codegen scripts don't work with it. We should support both Python 2 and 3.
Patch incoming.
The Ranch patch incorrectly removed this feature. It needs to be restored.
The current implementation exposes only:
decode(JSON) ->
jsx:decode(JSON, [return_maps]).
The JSX library supports different parameters for decode
and encode
functions
It is useful to expose all these interfaces for future implementations and also for plugins that use the rabbit_json
.
I am working on this issue on rabbitmq-autocluster, and I had to add use jsx:decode
directly. See this comment .
This is what I have in mind to do:
-spec decode(jsx:json_text()) -> jsx:json_term().
decode(JSON) ->
decode(JSON, []).
-spec decode(jsx:json_text(), jsx_to_term:config()) -> jsx:json_term().
decode(JSON, Opts) ->
jsx:decode(JSON, Opts).
There is a little side effect:
Currently, the other RabbitMQ modules use this interface:
rabbit_json:try_decode(Defn) %% this interface implicitly uses `[return_maps]`
and it should be replaced with:
rabbit_json:try_decode(Defn, [return_maps])
I already tried to modify the interface by adding [return_maps]
, then ran the unit tests on the management ui and they passed
make tests
with common test are producing a lot of garbage console output. There will be html
logs generated and most of this output is useless. This output can be sent to log file and console can be filled with dots or some nicer messages, which will still keep travis
happy, but won't frustrate developers.
precondition_failed
raises an badarg
error when the queue name is in unicode:
Error: badarg
Stack trace: [{io_lib,format,
["Channel error on connection ~p (~s, vhost: '~s', user: '~s'), channel ~p:~n~s~n",
[<0.507.0>,<<"127.0.0.1:50536 -> 127.0.0.1:5672">>,<<"/">>,
<<"test">>,1,
[111,112,101,114,97,116,105,111,110,32,"queue.declare",32,
99,97,117,115,101,100,32,97,32,99,104,97,110,110,101,108,
32,101,120,99,101,112,116,105,111,110,32,
"precondition_failed",58,32,
[91,
["105",44,10,
this should be:
io_lib:format("operation ~s caused a channel exception ~s: ~ts", [M, N, E]);
as result:
=ERROR REPORT==== 24-Jan-2017::11:14:56 ===
Channel error on connection <0.462.0> (127.0.0.1:50816 -> 127.0.0.1:5672, vhost: '/', user: 'test'), channel 1:
operation queue.declare caused a channel exception precondition_failed: invalid arg 'x-queue-mode'
for queue '卓匃屟尢桨' in vhost '/': invalid_queue_mode
basho/lager
is unmaintained. A while ago, erlang-lager/lager
project was started to continue progress on lager
, including support for recent OTP versions and rebar3
.
I noticed this doing a build of the umbrella project from master
:
$ cd deps/lager
(19.3)lbakken@shostakovich ~/Projects/rabbitmq/umbrella_master/deps/lager (master *%=)
$ git remote -v
origin https://github.com/basho/lager (fetch)
origin https://github.com/basho/lager (push)
Running a simple git-grep in rabbitmq-common shows it uses xmerl:
tiefling:rabbitmq-common jlouis$ gg xmerl
src/mochijson2.erl:197: json_encode_string_unicode(xmerl_ucs:from_utf8(L), State, [?Q])
src/mochijson2.erl:204: json_encode_string_unicode(xmerl_ucs:from_utf8(B), State, [?Q])
src/mochijson2.erl:297: [xmerl_ucs:to_utf8(C) | Acc];
src/mochijson2.erl:457: [CodePoint] = xmerl_ucs:from_utf16be(<<C:16/big-unsigned-integer,
src/mochijson2.erl:459: Acc1 = lists:reverse(xmerl_ucs:to_utf8(CodePoint), Acc),
src/mochijson2.erl:462: Acc1 = lists:reverse(xmerl_ucs:to_utf8(C), Acc),
src/mochijson2.erl:713: Expect = list_to_binary(xmerl_ucs:to_utf8(CodePoint)),
src/mochijson2.erl:748: UTF8Seq = list_to_binary(xmerl_ucs:to_utf8(16#0001d120)),
src/mochijson2.erl:780: iolist_to_binary(encode(list_to_atom(xmerl_ucs:to_utf8(16#0001d120))))),
src/mochijson2.erl:825: json_bin_is_safe(list_to_binary(xmerl_ucs:to_utf8(16#0001d120)))),
src/mochijson2.erl:828: xmerl_ucs:from_utf8(
src/mochijson2.erl:830: decode(encode(list_to_atom(xmerl_ucs:to_utf8(16#0001d120))))))),
src/mochijson2.erl:836: json_bin_is_safe(list_to_binary(xmerl_ucs:to_utf8([16#110000])))),
src/rabbit_binary_parser.erl:174: xmerl_ucs:from_utf8(Bin),
But the .app file which is generated doesn't contain a reference to xmerl. The amqp_client now does and this avoids breaking releases, but this is a minor nitpick which could help getting fixed in order to make, e.g., dependency mappers more efficient.
Latest (3.7.7) depends on latest published ranch_proxy_protocol
(1.5.0)
but this dep does not compile on OTP21 (emits warnings & has warnings_as_errors).
This is fixed on rpb's master since heroku/ranch_proxy_protocol@4e0f73a but not published yet.
This impacts everyone that uses latest amqp_client
on latest OTP.
I'm here due to Phoenix + elixir1.6 and this error:
λ mix deps.compile ranch_proxy_protocol
===> Compiling ranch_proxy_protocol
===> Compiling src/ranch_proxy_ssl.erl failed
src/ranch_proxy_ssl.erl:90: ssl:ssl_accept/3: deprecated; use ssl:handshake/3 instead
** (Mix) Could not compile dependency :ranch_proxy_protocol, "/Users/pete/.mix/rebar3 bare compile --paths "/Users/pete/Documents/_panda/elixir_core.git/_build/dev/lib/*/ebin"" command failed. You can recompile this dependency with "mix deps.compile ranch_proxy_protocol", update it with "mix deps.update ranch_proxy_protocol" or clean it with "mix deps.clean ranch_proxy_protocol"
My current workaround:
# mix.exs
defp deps do
[
# Remove :ranch_proxy_protocol once :rabbit_common depends on a version newer than 1.5.0
# See https://github.com/heroku/ranch_proxy_protocol/pull/42
{:ranch_proxy_protocol,
override: true,
git: "https://github.com/heroku/ranch_proxy_protocol.git",
ref: "4e0f73a385f37cc6f277363695e91f4fc7a81f24"},
{:amqp, "~> 1.0"},
...
I'm opening this issue to help identify what needs to be done for the different parties.
If the Rabbit team prefers to only depend on published packages, here's the issue that needs attention: heroku/ranch_proxy_protocol#43
Otherwise the above commit can be locked.
Thanks!
When looking at the rabbit_exchange_type
behaviour, I noticed callbacks have a transaction
parameter (which should be either transaction
or none
).
What is the rationale behind this and which callback shall I implement?
NOTE: the issue was edited as I figured out the original problem.
Under some conditions, the memory usage of binaries by mirror queues / gm
processes causes the system to crash. This has been nailed down to the case when ack
/nack
are sent to the node hosting the queue slave
. In that case, the only difference between sending ack
/nack
to master
or slave
is the call to delegate:cast
, which will either send directly to the local process (publishing to master
), or send to the remote delegate (publishing to slave
).
A simple code refactor seems to deeply alleviate this problem, which I assume changes the handling of the binary references by the Erlang VM.
This project depends on lager
right now. It'd be nice if it'd use the built in OTP logger instead, available since OTP22.
I did not manage to find any use of it in rabbitmq-erlang-client.
Looks like code at
rabbitmq-common/src/rabbit_misc.erl
Line 657 in b6c0fa4
rabbitmqctl
run to segfault and dump core.
Erlang 18.X VM is really unhappy with things like:
./bin/erl -noshell -eval 'Port = open_port({fd, 0, 2}, [out]), port_command(Port, "a"), port_close(Port), erlang:halt(10)'
And I think OTP team don't currentl have solution themselves, because they use workarounds like erlang/otp@ba531a1 😄
So I think it's better to remove this troublesome piece of code from rabbitmq, because nobody knows then the erlang 18.X itself will be fixed. And because ops use this segfault as an excuse to stop digging into some other problems further 😄
Reproduce with the following Python code:
import logging
import pika
logging.basicConfig(level=logging.DEBUG)
with pika.BlockingConnection() as connection:
channel = connection.channel()
channel.queue_declare(queue='classic-queue')
with pika.BlockingConnection() as connection:
channel = connection.channel()
channel.queue_declare(queue='classic-queue', arguments={'x-queue-type': 'classic'})
Please help solve this problem. It appears when I try to create a new tag on Gitlab, but everything works locally
Release failed, during .boot generation:
Duplicated modules:
mochiweb_util specified in rabbit_common and mochiweb
mochinum specified in rabbit_common and mochiweb
mochijson2 specified in rabbit_common and mochiweb
The command '/bin/sh -c mix release --env=prod --no-tar' returned a non-zero code: 1
My deps:
[
{:phoenix, "~> 1.3.4"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_ecto, "~> 3.4"},
{:mariaex, "~> 0.8.4"},
{:phoenix_html, "~> 2.13.0"}, #2.12.0
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:plug_cowboy, "~> 1.0"},
{:drab, "~> 0.10.1"}, #0.10.0
{:ecto, "~> 2.2.1"},
{:tzdata, "0.5.19"},
{:timex, "3.4.2"},
{:distillery, "~> 2.0", runtime: false},
{:exoml, "0.0.2"},
{:httpoison, "~> 1.3.0"},
{:browser, "~> 0.4.3"},
{:amqp, "~> 0.2.2"}
]
See this rabbitmq-users
message: link
I'm using rebar
to compile, and add https://github.com/rabbitmq/rabbitmq-common.git
to deps.
But:
/xx/deps/rabbit_common/src/rabbit_misc.erl:19: can't find include file "rabbit_framing.hrl"
Compiling /xx/deps/rabbit_common/src/rabbit_misc.erl failed:
ERROR: compile failed while processing /xx/deps/rabbit_common: rebar_abort
Makefile:13: recipe for target 'compile' failed
make: *** [compile] Error 1
While everything is ok , if make in deps/rabbitmq_common/
.
Any pointers or suggestions would be greatly appreciated.
#151483108
rabbitmq/rabbitmq-server#1270 introduced using wmic.exe
to get the amount of memory used by erl.exe
on Windows. #222 reverted this change and restored behavior to using erlang:memory()
.
This mailing list post provides a method to get memory use from the Erlang VM's allocator statistics. After some searching, it appears that this method in the recon
library achieves the same result.
You can see here some comparison in memory reporting using several different methods. Note that the first value is from recon
and the last two are from the code provided in the rabbitmq-users
post. Those values also closely track what Task Manager showed in its output.
On Linux, the /proc/PID/statm
file will be used, and ps
for other Unix platforms.
These modules are good candidates for rabbitmq-common because they are referenced in multiple repos, including rabbitmq-common itself in some cases. Moving them to rabbitmq-common would also have the side effect of making them easier to import into the new CLI.
This callback function takes #amqqueue{}
as a parameter, and not pid()
.
Filing here because there is no better place than a shared internal library.
We've seen a number of cases where proplist really hurt correctness because we cannot tell the difference between an empty JSON object/proplist and an empty list (JSON array), e.g. rabbitmq/rabbitmq-management#75.
We therefore should switch to a JSON library that uses maps. Granted, this means requiring Erlang 17.5 or later, which we were planning on doing for 3.7.0
anyway. We should use the same library
across the board if we can.
Related: rabbitmq/rabbitmq-server#546.
When cloning rabbitmq-common
without umbrella (e.g. when building rabbitmq-cli
), make
in stable
fails with:
src/rabbit_ct_broker_helpers.erl:20: can't find include lib "rabbit_common/include/rabbit.hrl"
This bug report is for version 3.6.12 of rabbitmq-server/rabbitmq-common.
This information was gathered using rabbitmqctl eval
on the same RabbitMQ test server that showed performance issues under load.
There seems to be an issue in vm_memory_monitor:get_process_memory()
where it actually reports erlang:memory(total)
if the config option vm_memory_calculation_strategy
is unset. As soon as this config option is set, the get_process_memory()
function begins to report consistently with get_ps_memory()
. However rabbitmqctl status
does report that vm_memory_calculation_strategy
is set to rss
even when unset which is the default behavior but not consistent with the memory reporting values. In my glance at the code, this seems to mean that it is falling back on Erlang due to a ps
output parsing issue but cannot verify this due to the function not being exported to the main application. Please let me know if you need any more information or would like me to test anything else.
We'll have to take this into account when building on Windows -
lbakken@DSCH-WIN ~/development/rabbitmq/umbrella (master *=)
$ make FULL=1 BRANCH=master up
hostname: unknown option -- s
Try 'hostname --help' for more information.
make[1]: Entering directory '/home/lbakken/development/rabbitmq/umbrella/deps/amqp_client'
hostname: unknown option -- s
Try 'hostname --help' for more information.
make[2]: Entering directory '/home/lbakken/development/rabbitmq/umbrella/deps/rabbit_common'
make[1]: *** [erlang.mk:7577: /home/lbakken/development/rabbitmq/umbrella/.erlang.mk/recursive-deps-list.log] Interrupt
make: *** [erlang.mk:7638: /home/lbakken/development/rabbitmq/umbrella/.erlang.mk/recursive-deps-list.log] Interrupt
lbakken@DSCH-WIN ~/development/rabbitmq/umbrella (master=)
$ find . -type f \( -name Makefile -o -name '*.mk' \) -exec fgrep 'hostname -s' {} +
./deps/rabbitmq_ct_helpers/tools/tls-certs/Makefile:HOSTNAME := $(shell if [ "$$(uname)" = Darwin ]; then hostname -s; else hostname; fi)
./deps/rabbitmq_java_client/Makefile: $(if $(MAIN_NODE),$(MAIN_NODE),$(RABBITMQ_NODENAME)@$$(hostname -s))
./deps/rabbit_common/mk/rabbitmq-run.mk:HOSTNAME := $(shell hostname -s)
./deps/rabbit_common/mk/rabbitmq-run.mk: nodename="rabbit-$$n@$$(hostname -s)"; \
./deps/rabbit_common/mk/rabbitmq-run.mk: nodename="rabbit-$$n@$$(hostname -s)"; \
./deps/rabbit_common/mk/rabbitmq-tools.mk:CT_LOGS_ARCHIVE ?= $(PROJECT)-ct-logs-$(subst _,-,$(subst -,,$(subst .,,$(patsubst ct_run.ct_$(PROJECT)@$(shell hostname -s).%,%,$(notdir $(lastword $(wildcard logs/ct_run.*))))))).tar.xz
Previously (as in within the last 2 weeks) I was able to have rabbitmq-common as a dependency of my plugin project and the build worked. Now, it doesn't appear to work, and certainly when checking out current master on it's own I get build failures. Entirely possible this is a bug in my local system, or that I'm missing a dependency, but I can't see anything obvious. Might be related to #8 given where the issues are occurring, but that's a complete guess.
Any thoughts?
root@ae0389c87456:/rabbit/rabbitmq-common# make
DEP rabbitmq_codegen
GEN include/rabbit_framing.hrl
GEN src/rabbit_framing_amqp_0_8.erl
GEN src/rabbit_framing_amqp_0_9_1.erl
DEPEND rabbit_common.d
ERLC app_utils.erl credit_flow.erl gen_server2.erl mirrored_supervisor.erl mochijson2.erl pmon.erl priority_queue.erl rabbit_amqqueue.erl rabbit_auth_mechanism.erl rabbit_authn_backend.erl rabbit_authz_backend.erl rabbit_backing_queue.erl rabbit_basic.erl rabbit_binary_generator.erl rabbit_binary_parser.erl rabbit_channel.erl rabbit_channel_interceptor.erl rabbit_command_assembler.erl rabbit_control_misc.erl rabbit_event.erl rabbit_exchange_decorator.erl rabbit_exchange_type.erl rabbit_framing_amqp_0_8.erl rabbit_framing_amqp_0_9_1.erl rabbit_heartbeat.erl rabbit_misc.erl rabbit_msg_store_index.erl rabbit_net.erl rabbit_networking.erl rabbit_nodes.erl rabbit_password_hashing.erl rabbit_policy_validator.erl rabbit_queue_collector.erl rabbit_queue_decorator.erl rabbit_queue_master_locator.erl rabbit_reader.erl rabbit_runtime_parameter.erl rabbit_writer.erl ssl_compat.erl supervisor2.erl time_compat.erl
src/rabbit_net.erl:27: can't find include lib "ssl/src/ssl_api.hrl"
src/rabbit_net.erl:99: record sslsocket undefined
src/rabbit_net.erl:109: record sslsocket undefined
src/rabbit_net.erl:114: record sslsocket undefined
src/rabbit_net.erl:119: record sslsocket undefined
src/rabbit_net.erl:124: record sslsocket undefined
src/rabbit_net.erl:137: record sslsocket undefined
src/rabbit_net.erl:142: record sslsocket undefined
src/rabbit_net.erl:156: record sslsocket undefined
src/rabbit_net.erl:165: record sslsocket undefined
src/rabbit_net.erl:170: record sslsocket undefined
src/rabbit_net.erl:175: record sslsocket undefined
src/rabbit_net.erl:178: record sslsocket undefined
src/rabbit_net.erl:181: record sslsocket undefined
src/rabbit_net.erl:207: record sslsocket undefined
src/rabbit_net.erl:210: record sslsocket undefined
src/rabbit_net.erl:213: record sslsocket undefined
src/rabbit_net.erl:251: record sslsocket undefined
erlang.mk:4919: recipe for target 'ebin/rabbit_common.app' failed
make[1]: *** [ebin/rabbit_common.app] Error 1
erlang.mk:4756: recipe for target 'app' failed
make: *** [app] Error 2
rabbitmq-common/src/rabbit_binary_parser.erl
Line 118 in 2b54e78
but we in the specification
https://www.rabbitmq.com/resources/specs/amqp0-9-1.pdf
section 4.2.1 we have
field-value = 't' boolean
/ 'U' short-int
/ 'u' short-uint
/ 's' short-string
They were introduced in erlang/otp@9d7d120. Filing on behalf of @Ayanda-D.
Hi,
I ran into a problem with this library today. Version 3.6.10 (and supposedly also 3.6.11, but not 3.7.0) includes modules such as mochinum
. This creates obvious problems when you have other dependencies who pulls in the real application/library containing these files, since release building fails (due to the same module being included twice).
What is the best way of getting rid of this?
hex.pm
package due to the above problem, so I can roll my own version of the package with the fix from 3.7.0 backported.I'm also somewhat perplexed that the fix is about 8 months old, but has not yet found its way into a stable production package. Is there a reason for this? And also that someone copied mochi* utils in like this without renaming them in the first place.
Here: https://github.com/rabbitmq/rabbitmq-common/blob/master/Makefile#L3
Putting it in DEPS means Erlang.mk will consider it to be an Erlang application and add it to the 'applications' key in the .app file if autopatch is used (the normal scenario when Erlang.mk users add it as DEPS). It should be a BUILD_DEPS.
@dumbbell ping
Right now, when declaring queues without name, a name is generated using rabbit_guid:gen_secure(). For the sake of identifying these generated queues, it could be useful to use a naming pattern (much like mktemp does) that allows for easy identifying it and still keeping it 'random'.
The main use case would be to identify queues set up by the shovel plugin with more ease.
When i build rabbitmq-common with rebar3 . I have this error . Some one help me
rebar3 compile
===> Verifying dependencies...
===> Package <<"rebar_gdb_plugin">> not found. Fetching registry updates and trying again...
===> Updating package registry...
===> Writing registry to /home/tamnb/.cache/rebar3/hex/default/registry
===> Generating package index...
===> [cloudi_service_oauth1:1.5.1] Only existing version of cloudi_service_db_riak is 1.3.3 which does not match constraint ~> 1.5.1. Using anyway, but it is not guaranteed to work.
===> Writing index to /home/tamnb/.cache/rebar3/hex/default/packages.idx
===> Plugin rebar_gdb_plugin not available. It will not be used.
===> Compiling rabbit_common
===> Compiling /home/tamnb/workspace_Erlang/my_project/_build/default/lib/rabbit_common/src/rabbit_misc.erl failed
/home/tamnb/workspace_Erlang/my_project/_build/default/lib/rabbit_common/src/rabbit_misc.erl:19: can't find include file "rabbit_framing.hrl"
This is my config
{erl_opts, [debug_info,{parse_transform, lager_transform}]}.
{deps, [{lager,"3.0.2",
{git,"https://github.com/basho/lager.git",{tag,"3.0.2"}}},
{protobuffs,"0.8.2",
{git,"https://github.com/basho/erlang_protobuffs.git",{tag,"0.8.2"}}},
{eredis,"1.0.8",
{git,"https://github.com/wooga/eredis.git",{tag,"v1.0.8"}}},
{jiffy,"0.14.7",
{git,"https://github.com/davisp/jiffy.git",{tag,"0.14.7"}}},
{cowboy, "1.0.4",
{git, "https://github.com/ninenines/cowboy.git",{tag,"1.0.4"}}},
{rabbit_common, ".",
{git, "git://github.com/jbrisbin/rabbit_common.git", "rabbitmq-3.5.6"}},
{amqp_client,".",
{git,"https://github.com/rabbitmq/rabbitmq-erlang-client.git",{tag,"rabbitmq_v3_5_3"}}}
]}.
{relx, [{release, { my_project, "0.1.0" },
[my_project,
sasl]},
{sys_config, "./config/sys.config"},
{vm_args, "./config/vm.args"},
{dev_mode, true},
{include_erts, false},
{extended_start_script, true}]
}.
{profiles, [{prod, [{relx, [{dev_mode, false},
{include_erts, true}]}]
}]
}.
There was a lot of log records like epmd: node name already occupied epmd-starter-443584618
, and the number was always the 443584618. Like in https://xkcd.com/221/ )
random:uniform/1
stores PRNG state in process dictionary, and if random:seed/3
wasn't called, it initializes from the same constant seed.
Mix plugin https://github.com/hairyhum/mix_task_archive_deps generates .ez for every dependency. I.e. for plugin it'll also generate things like rabbit_common-3.7.0.milestone14+12.gadaa9ac.ez
It can lead to a problems when .ez generation rules are incompatible between Makefile and mix.
Proper behavior would be for mix archive.build.all
to filter out erlang.mk-managed .ez-s
When we run make run-broker
we want to conditionally enable the Looking Glass tracer with trace pattern of our choosing. For example, make run-broker RABBITMQ_TRACER=rabbit_tracer:connections
would trace all the connection processes. Then once tracing is done, make profile
will build callgrind.out files that can then be opened with qcachegrind.
Currently, there are many calls from modules in rabbitmq-common to modules in rabbitmq-server. The first problem was fixed in rabbitmq/rabbitmq-server#980. We still have the following incorrect calls:
src/rabbit_amqqueue.erl:727 `rabbit_amqqueue:ack/3` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:752 `rabbit_amqqueue:activate_limit_all/2` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:390 `rabbit_amqqueue:add_default_binding/1` calls undefined function `rabbit_binding:add/1`
src/rabbit_amqqueue.erl:769 `rabbit_amqqueue:basic_cancel/4` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:761 `rabbit_amqqueue:basic_consume/10` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:758 `rabbit_amqqueue:basic_get/4` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:888 `rabbit_amqqueue:cancel_sync_mirrors/1` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:676 `rabbit_amqqueue:consumers/1` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:755 `rabbit_amqqueue:credit/5` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:293 `rabbit_amqqueue:declare/6` calls undefined function `rabbit_amqqueue_sup_sup:start_queue_process/3`
src/rabbit_amqqueue.erl:293 `rabbit_amqqueue:declare/6` calls undefined function `rabbit_mirror_queue_misc:initial_queue_node/2`
src/rabbit_amqqueue.erl:293 `rabbit_amqqueue:declare/6` calls undefined function `rabbit_policy:set/1`
src/rabbit_amqqueue.erl:293 `rabbit_amqqueue:declare/6` calls undefined function `rabbit_queue_master_location_misc:get_location/1`
src/rabbit_amqqueue.erl:712 `rabbit_amqqueue:delete/3` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:957 `rabbit_amqqueue:delete_queue/1` calls undefined function `rabbit_binding:remove_transient_for_destination/1`
src/rabbit_amqqueue.erl:978 `rabbit_amqqueue:deliver/2` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:615 `rabbit_amqqueue:i_down/3` calls undefined function `rabbit_amqqueue_process:info_keys/0`
src/rabbit_amqqueue.erl:598 `rabbit_amqqueue:info/1` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:601 `rabbit_amqqueue:info/2` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:609 `rabbit_amqqueue:info_down/2` calls undefined function `rabbit_amqqueue_process:info_keys/0`
src/rabbit_amqqueue.erl:594 `rabbit_amqqueue:info_keys/0` calls undefined function `rabbit_amqqueue_process:info_keys/0`
src/rabbit_amqqueue.erl:319 `rabbit_amqqueue:internal_declare/2` calls undefined function `rabbit_policy:set/1`
src/rabbit_amqqueue.erl:806 `rabbit_amqqueue:internal_delete/1` calls undefined function `rabbit_binding:process_deletions/1`
src/rabbit_amqqueue.erl:794 `rabbit_amqqueue:internal_delete1/2` calls undefined function `rabbit_binding:remove_for_destination/2`
src/rabbit_amqqueue.erl:891 `rabbit_amqqueue:is_mirrored/1` calls undefined function `rabbit_mirror_queue_misc:is_mirrored/1`
src/rabbit_amqqueue.erl:862 `rabbit_amqqueue:node_permits_offline_promotion/1` calls undefined function `rabbit:is_running/0`
src/rabbit_amqqueue.erl:862 `rabbit_amqqueue:node_permits_offline_promotion/1` calls undefined function `rabbit_mnesia:cluster_nodes/1`
src/rabbit_amqqueue.erl:772 `rabbit_amqqueue:notify_decorators/1` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:934 `rabbit_amqqueue:on_node_down/1` calls undefined function `rabbit_binding:combine_deletions/2`
src/rabbit_amqqueue.erl:934 `rabbit_amqqueue:on_node_down/1` calls undefined function `rabbit_binding:new_deletions/0`
src/rabbit_amqqueue.erl:934 `rabbit_amqqueue:on_node_down/1` calls undefined function `rabbit_binding:process_deletions/1`
src/rabbit_amqqueue.erl:934 `rabbit_amqqueue:on_node_down/1` calls undefined function `rabbit_mnesia:is_process_alive/1`
src/rabbit_amqqueue.erl:380 `rabbit_amqqueue:policy_changed/2` calls undefined function `rabbit_mirror_queue_misc:update_mirrors/2`
src/rabbit_amqqueue.erl:723 `rabbit_amqqueue:purge/1` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:215 `rabbit_amqqueue:recover/0` calls undefined function `file_handle_cache:get_limit/0`
src/rabbit_amqqueue.erl:215 `rabbit_amqqueue:recover/0` calls undefined function `rabbit_log:warning/2`
src/rabbit_amqqueue.erl:277 `rabbit_amqqueue:recover_durable_queues/1` calls undefined function `rabbit_amqqueue_sup_sup:start_queue_process/3`
src/rabbit_amqqueue.erl:277 `rabbit_amqqueue:recover_durable_queues/1` calls undefined function `rabbit_log:error/2`
src/rabbit_amqqueue.erl:729 `rabbit_amqqueue:reject/4` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:725 `rabbit_amqqueue:requeue/3` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:792 `rabbit_amqqueue:resume/2` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:699 `rabbit_amqqueue:stat/1` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:886 `rabbit_amqqueue:sync_mirrors/1` calls undefined function `delegate:call/2`
src/rabbit_amqqueue.erl:884 `rabbit_amqqueue:update_mirroring/1` calls undefined function `delegate:cast/2`
src/rabbit_amqqueue.erl:427 `rabbit_amqqueue:with/4` calls undefined function `rabbit_mnesia:is_process_alive/1`
src/rabbit_auth_backend_internal.erl:168 `rabbit_auth_backend_internal:add_user/2` calls undefined function `rabbit_log:info/2`
src/rabbit_auth_backend_internal.erl:168 `rabbit_auth_backend_internal:add_user/2` calls undefined function `rabbit_password:hashing_mod/0`
src/rabbit_auth_backend_internal.erl:214 `rabbit_auth_backend_internal:change_password/2` calls undefined function `rabbit_log:info/2`
src/rabbit_auth_backend_internal.erl:214 `rabbit_auth_backend_internal:change_password/2` calls undefined function `rabbit_password:hashing_mod/0`
src/rabbit_auth_backend_internal.erl:233 `rabbit_auth_backend_internal:change_password_hash/2` calls undefined function `rabbit_password:hashing_mod/0`
src/rabbit_auth_backend_internal.erl:224 `rabbit_auth_backend_internal:clear_password/1` calls undefined function `rabbit_log:info/2`
src/rabbit_auth_backend_internal.erl:190 `rabbit_auth_backend_internal:delete_user/1` calls undefined function `rabbit_log:info/2`
src/rabbit_auth_backend_internal.erl:230 `rabbit_auth_backend_internal:hash_password/2` calls undefined function `rabbit_password:hash/2`
src/rabbit_auth_backend_internal.erl:91 `rabbit_auth_backend_internal:hashing_module_for_user/1` calls undefined function `rabbit_password:hashing_mod/1`
src/rabbit_auth_backend_internal.erl:360 `rabbit_auth_backend_internal:list_vhost_permissions/1` calls undefined function `rabbit_vhost:with/2`
src/rabbit_auth_backend_internal.erl:365 `rabbit_auth_backend_internal:list_vhost_permissions/3` calls undefined function `rabbit_vhost:with/2`
src/rabbit_auth_backend_internal.erl:253 `rabbit_auth_backend_internal:set_permissions/5` calls undefined function `rabbit_log:info/2`
src/rabbit_auth_backend_internal.erl:244 `rabbit_auth_backend_internal:set_tags/2` calls undefined function `rabbit_log:info/2`
src/rabbit_auth_backend_internal.erl:95 `rabbit_auth_backend_internal:user_login_authentication/2` calls undefined function `rabbit_password:salted_hash/3`
src/rabbit_basic.erl:161 `rabbit_basic:message/3` calls undefined function `rabbit_guid:gen/0`
src/rabbit_basic.erl:107 `rabbit_basic:publish/1` calls undefined function `rabbit_exchange:lookup/1`
src/rabbit_basic.erl:114 `rabbit_basic:publish/2` calls undefined function `rabbit_exchange:route/2`
src/rabbit_binary_generator.erl:224 `rabbit_binary_generator:lookup_amqp_exception/2` calls undefined function `rabbit_log:warning/2`
src/rabbit_channel.erl:1486 `rabbit_channel:basic_consume/8` calls undefined function `rabbit_limiter:is_active/1`
src/rabbit_channel.erl:1486 `rabbit_channel:basic_consume/8` calls undefined function `rabbit_limiter:pid/1`
src/rabbit_channel.erl:696 `rabbit_channel:check_resource_access/3` calls undefined function `rabbit_access_control:check_resource_access/3`
src/rabbit_channel.erl:1919 `rabbit_channel:coalesce_and_send/3` calls undefined function `dtree:is_empty/1`
src/rabbit_channel.erl:1919 `rabbit_channel:coalesce_and_send/3` calls undefined function `dtree:smallest/1`
src/rabbit_channel.erl:260 `rabbit_channel:deliver_reply/2` calls undefined function `delegate:invoke_no_result/2`
src/rabbit_channel.erl:271 `rabbit_channel:deliver_reply_local/3` calls undefined function `pg_local:in_group/2`
src/rabbit_channel.erl:421 `rabbit_channel:handle_call/3` calls undefined function `rabbit_trace:init/1`
src/rabbit_channel.erl:446 `rabbit_channel:handle_cast/2` calls undefined function `dtree:drop/2`
src/rabbit_channel.erl:446 `rabbit_channel:handle_cast/2` calls undefined function `dtree:take/3`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_binding:add/2`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_binding:remove/2`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_exchange:assert_equivalence/6`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_exchange:check_type/1`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_exchange:declare/6`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_exchange:delete/2`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_exchange:lookup/1`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_exchange:lookup_or_die/1`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_exchange:route/2`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_guid:binary/2`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_guid:gen_secure/0`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_limiter:is_active/1`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_limiter:limit_prefetch/3`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_limiter:pid/1`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_limiter:unlimit_prefetch/1`
src/rabbit_channel.erl:855 `rabbit_channel:handle_method/3` calls undefined function `rabbit_trace:tap_in/6`
src/rabbit_channel.erl:1547 `rabbit_channel:handle_publishing_queue_down/3` calls undefined function `dtree:take/2`
src/rabbit_channel.erl:1547 `rabbit_channel:handle_publishing_queue_down/3` calls undefined function `dtree:take_all/2`
src/rabbit_channel.erl:1959 `rabbit_channel:i/2` calls undefined function `dtree:size/1`
src/rabbit_channel.erl:1959 `rabbit_channel:i/2` calls undefined function `rabbit_limiter:get_prefetch_limit/1`
src/rabbit_channel.erl:351 `rabbit_channel:init/1` calls undefined function `dtree:empty/0`
src/rabbit_channel.erl:351 `rabbit_channel:init/1` calls undefined function `pg_local:join/2`
src/rabbit_channel.erl:351 `rabbit_channel:init/1` calls undefined function `rabbit_limiter:new/1`
src/rabbit_channel.erl:351 `rabbit_channel:init/1` calls undefined function `rabbit_trace:init/1`
src/rabbit_channel.erl:305 `rabbit_channel:list/0` calls undefined function `rabbit_mnesia:cluster_nodes/1`
src/rabbit_channel.erl:309 `rabbit_channel:list_local/0` calls undefined function `pg_local:get_members/1`
src/rabbit_channel.erl:626 `rabbit_channel:log/3` calls undefined function `rabbit_log:log/4`
src/rabbit_channel.erl:1938 `rabbit_channel:maybe_complete_tx/1` calls undefined function `dtree:is_empty/1`
src/rabbit_channel.erl:1792 `rabbit_channel:notify_limiter/2` calls undefined function `rabbit_limiter:ack/2`
src/rabbit_channel.erl:1792 `rabbit_channel:notify_limiter/2` calls undefined function `rabbit_limiter:is_active/1`
src/rabbit_channel.erl:1862 `rabbit_channel:process_routing_confirm/5` calls undefined function `dtree:insert/4`
src/rabbit_channel.erl:1853 `rabbit_channel:process_routing_mandatory/5` calls undefined function `dtree:insert/4`
src/rabbit_channel.erl:1680 `rabbit_channel:record_sent/4` calls undefined function `rabbit_trace:tap_out/5`
src/rabbit_channel.erl:1886 `rabbit_channel:send_confirms/1` calls undefined function `rabbit_node_monitor:pause_partition_guard/0`
src/rabbit_channel.erl:612 `rabbit_channel:terminate/2` calls undefined function `pg_local:leave/2`
src/rabbit_channel_interceptor.erl:41 `rabbit_channel_interceptor:init/1` calls undefined function `rabbit_registry:lookup_all/1`
src/rabbit_exchange_decorator.erl:88 `rabbit_exchange_decorator:list/0` calls undefined function `rabbit_registry:lookup_all/1`
src/rabbit_exchange_decorator.erl:103 `rabbit_exchange_decorator:maybe_recover/1` calls undefined function `rabbit_exchange:update_decorators/1`
src/rabbit_exchange_decorator.erl:93 `rabbit_exchange_decorator:register/2` calls undefined function `rabbit_exchange:list/0`
src/rabbit_exchange_decorator.erl:93 `rabbit_exchange_decorator:register/2` calls undefined function `rabbit_registry:register/3`
src/rabbit_exchange_decorator.erl:98 `rabbit_exchange_decorator:unregister/1` calls undefined function `rabbit_exchange:list/0`
src/rabbit_exchange_decorator.erl:98 `rabbit_exchange_decorator:unregister/1` calls undefined function `rabbit_registry:unregister/2`
src/rabbit_framing_amqp_0_8.erl:1618 `rabbit_framing_amqp_0_8:lookup_amqp_exception/1` calls undefined function `rabbit_log:warning/2`
src/rabbit_framing_amqp_0_9_1.erl:1208 `rabbit_framing_amqp_0_9_1:lookup_amqp_exception/1` calls undefined function `rabbit_log:warning/2`
src/rabbit_misc.erl:529 `rabbit_misc:execute_mnesia_transaction/1` calls undefined function `file_handle_cache_stats:update/1`
src/rabbit_misc.erl:529 `rabbit_misc:execute_mnesia_transaction/1` calls undefined function `mnesia_sync:sync/0`
src/rabbit_misc.erl:529 `rabbit_misc:execute_mnesia_transaction/1` calls undefined function `worker_pool:submit/2`
src/rabbit_misc.erl:526 `rabbit_misc:with_user_and_vhost/3` calls undefined function `rabbit_vhost:with/2`
src/rabbit_net.erl:260 `rabbit_net:accept_ack/2` calls undefined function `file_handle_cache:obtain/0`
src/rabbit_net.erl:260 `rabbit_net:accept_ack/2` calls undefined function `ranch:accept_ack/1`
src/rabbit_networking.erl:373 `rabbit_networking:close_connection/2` calls undefined function `rabbit_log:info/2`
src/rabbit_networking.erl:354 `rabbit_networking:connections/0` calls undefined function `rabbit_mnesia:cluster_nodes/1`
src/rabbit_networking.erl:358 `rabbit_networking:connections_local/0` calls undefined function `pg_local:get_members/1`
src/rabbit_networking.erl:434 `rabbit_networking:host_lookup_error/2` calls undefined function `rabbit_log:error/2`
src/rabbit_networking.erl:165 `rabbit_networking:log_poodle_fail/1` calls undefined function `rabbit_log:error/2`
src/rabbit_networking.erl:198 `rabbit_networking:make_verify_fun/3` calls undefined function `rabbit_log:error/2`
src/rabbit_networking.erl:343 `rabbit_networking:on_node_down/1` calls undefined function `rabbit_log:info/2`
src/rabbit_networking.erl:350 `rabbit_networking:register_connection/1` calls undefined function `pg_local:join/2`
src/rabbit_networking.erl:245 `rabbit_networking:tcp_listener_addresses/1` calls undefined function `rabbit_log:error/2`
src/rabbit_networking.erl:352 `rabbit_networking:unregister_connection/1` calls undefined function `pg_local:leave/2`
src/rabbit_nodes.erl:237 `rabbit_nodes:all_running/0` calls undefined function `rabbit_mnesia:cluster_nodes/1`
src/rabbit_nodes.erl:208 `rabbit_nodes:cluster_name/0` calls undefined function `rabbit_runtime_parameters:value_global/2`
src/rabbit_nodes.erl:107 `rabbit_nodes:dist_working_diagnostics/1` calls undefined function `rabbit:is_running/1`
src/rabbit_nodes.erl:218 `rabbit_nodes:set_cluster_name/1` calls undefined function `rabbit_runtime_parameters:set_global/2`
src/rabbit_queue_decorator.erl:45 `rabbit_queue_decorator:list/0` calls undefined function `rabbit_registry:lookup_all/1`
src/rabbit_queue_decorator.erl:47 `rabbit_queue_decorator:register/2` calls undefined function `rabbit_registry:register/3`
src/rabbit_queue_decorator.erl:52 `rabbit_queue_decorator:unregister/1` calls undefined function `rabbit_registry:unregister/2`
src/rabbit_reader.erl:1273 `rabbit_reader:auth_mechanism_to_module/2` calls undefined function `rabbit_registry:binary_to_type/1`
src/rabbit_reader.erl:1273 `rabbit_reader:auth_mechanism_to_module/2` calls undefined function `rabbit_registry:lookup_module/2`
src/rabbit_reader.erl:1291 `rabbit_reader:auth_mechanisms/1` calls undefined function `rabbit_registry:lookup_all/1`
src/rabbit_reader.erl:1300 `rabbit_reader:auth_phase/2` calls undefined function `rabbit_access_control:check_user_loopback/2`
src/rabbit_reader.erl:896 `rabbit_reader:create_channel/2` calls undefined function `rabbit_channel_sup_sup:start_channel/2`
src/rabbit_reader.erl:1132 `rabbit_reader:handle_method0/2` calls undefined function `rabbit_access_control:check_vhost_access/3`
src/rabbit_reader.erl:1132 `rabbit_reader:handle_method0/2` calls undefined function `rabbit_alarm:register/2`
src/rabbit_reader.erl:1132 `rabbit_reader:handle_method0/2` calls undefined function `rabbit_connection_helper_sup:start_channel_sup_sup/1`
src/rabbit_reader.erl:1132 `rabbit_reader:handle_method0/2` calls undefined function `rabbit_connection_helper_sup:start_queue_collector/2`
src/rabbit_reader.erl:1378 `rabbit_reader:i/2` calls undefined function `rabbit_ssl:peer_cert_issuer/1`
src/rabbit_reader.erl:1378 `rabbit_reader:i/2` calls undefined function `rabbit_ssl:peer_cert_subject/1`
src/rabbit_reader.erl:1378 `rabbit_reader:i/2` calls undefined function `rabbit_ssl:peer_cert_validity/1`
src/rabbit_reader.erl:308 `rabbit_reader:log/3` calls undefined function `rabbit_log:log/4`
Thus we need to move modules between both applications and probably need to rewrite a few things.
I get this error in every version after 3.6.9
when building the app:
12:03:02.663 [error] GenServer #PID<0.843.0> terminating
** (UndefinedFunctionError) function :rabbit_channel.do/2 is undefined (module :rabbit_channel is not available)
:rabbit_channel.do(#PID<0.837.0>, {:"connection.start", 0, 9, [{"capabilities", :table,
[{"publisher_confirms", :bool, true}, {"exchange_exchange_bindings", :bool, true}, {"basic.nack",
:bool, true}, {"consumer_cancel_notify", :bool, true}, {"connection.blocked", :bool, true},
{"consumer_priorities", :bool, true}, {"authentication_failure_close", :bool, true},
{"per_consumer_qos", :bool, true}, {"direct_reply_to", :bool, true}]}, {"cluster_name", :longstr,
"[email protected]_not_set.invalid"}, {"copyright", :longstr, "Copyright (C) 2007-2017
Pivotal Software, Inc."}, {"information", :longstr, "Licensed under the MPL. See
http://www.rabbitmq.com/"}, {"platform", :longstr, "Erlang/OTP 19.3"}, {"product", :longstr,
"RabbitMQ"}, {"version", :longstr, "3.6.11"}], "AMQPLAIN PLAIN", "en_US"})
(amqp_client) deps/amqp_client/src/amqp_channels_manager.erl:66: :amqp_channels_manager.process_channel_frame/4
(amqp_client) deps/amqp_client/src/amqp_main_reader.erl:142: :amqp_main_reader.process_frame/4
(amqp_client) deps/amqp_client/src/amqp_main_reader.erl:90: :amqp_main_reader.handle_data/2
(stdlib) gen_server.erl:616: :gen_server.try_dispatch/4
(stdlib) gen_server.erl:686: :gen_server.handle_msg/6
(stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: {:inet_async, #Port<0.25641>, 1, {:ok, <<1, 0, 0, 0, 0, 2, 1, 0, 10, 0, 10, 0, 9, 0, 0, 1,
220, 12, 99, 97, 112, 97, 98, 105, 108, 105, 116, 105, 101, 115, 70, 0, 0, 0, 199, 18, 112, 117, 98, 108,
105, 115, 104, 101, 114, 95, ...>>}}
We have an application with rebar3.
We got the warnings in the case of dialyzer configuration like below.
The environment is Erlang/OTP 18.
{dialyzer, [{plt_apps, all_deps},
{warnings, [error_handling,
race_conditions,
unknown,
unmatched_returns,
no_improper_lists]}]}.
0: Unknown type rabbit_amqqueue:name/0
0: Unknown type rabbit_binding:key/0
0: Unknown type rabbit_exchange:name/0
0: Unknown type rabbit_exchange:type/0
0: Unknown type rabbit_framing:amqp_class_id/0
0: Unknown type rabbit_framing:amqp_exception/0
0: Unknown type rabbit_framing:amqp_method_name/0
0: Unknown type rabbit_framing:amqp_property_record/0
0: Unknown type rabbit_framing:amqp_table/0
0: Unknown type rabbit_guid:guid/0
0: Unknown type rabbit_networking:hostname/0
0: Unknown type rabbit_networking:ip_port/0
0: Unknown type rabbit_router:routing_key/0
0: Unknown type set:set/0
I tried to solve them.
Then, I found that these types are defined in simplegeo/rabbitmq-server.
How to solve them ?
See https://groups.google.com/d/msg/rabbitmq-users/txOWyh05GqQ/uRtrYMQZFgAJ to reproduce.
Broker crashes because of an infinite recursion when creating the frames to deliver the message. This happens only with an empty binary payload ([<<>>]
), which is easy to create with the management UI. Other clients (e.g. Java client) may create empty list payloads ([]
), which doesn't trigger the problem.
When several parallel calls are made to time_compat
or ssl_compat
before they were reloaded by code_version
, the code server returns an error and code_version
throws an exception.
Here is the message from the code server:
=ERROR REPORT==== 18-Mar-2016::11:00:20 ===
Module time_compat must be purged before loading
References rabbitmq/rabbitmq-server#346, rabbitmq/rabbitmq-server#347.
Hello,
I'm trying to build my Elixir project on an alpine image.
When I call make I got:
ERLC
src/ssl_compat.erl:47: Warning: ssl:connection_info/1: removed in 20.0; use ssl:connection_information/[1,2] instead
src/ssl_compat.erl:67: Warning: ssl:connection_info/1: removed in 20.0; use ssl:connection_information/[1,2] instead
awk: bad regex '{modules,': Repetition not preceded by valid expression
make[1]: *** [Makefile:80: ebin/rabbit_common.app] Error 1
make: *** [erlang.mk:4913: app] Error 2
I think about a non-supported feature in awk
. Do you think it can be simple to support that ?
Thanks,
Marc-Antoine
Sometimes when test dependencies for plugins (rabbitmq_ct_helpers
or rabbitmq_ct_client_helpers
) fail to build, the test suite still starts and could fail with undef
error.
It's not very clear from the test results what was wrong. And the build error can be lost make test
output.
It probably makes sense to stop make test
when test dependency could not be built.
Hey, it seems the version 3.6.6 is not on hex although it is tagged in the git repository.
Can you publish it?
Thanks a lot
When rabbitmq-perf-test producers crashed with out-of-memory errors, 97 channels were left behind:
Error on AMQP connection <0.3361.0> (10.0.16.31:50086 -> 10.0.16.23:5672, vhost: '8961921b-36f6-48e0-9553-0351c7783376', user: '600878f0-8001-41e3-8198-986d941db2eb', state: running), channel 5:error while terminating:
killed
There were 97 instances of the above error in the rabbit log.
New CLI sends user tags as binaries and those are store as-is. Unfortunately, other components (e.g. management) don't expect binaries. rabbit_auth_backend_internal:set_tags
should convert the input (if necessary) into the correct type.
To reproduce:
With the "old" CLI:
./rabbitmqctl set_user_tags guest administrator management
Logs:
2016-11-10 17:03:12.737 [info] <0.1022.0> Setting user tags for user 'guest' to [administrator,management]
With new CLI:
./rabbitmqctl set_user_tags guest administrator management
Logs:
2016-11-10 17:03:06.971 [info] <0.1015.0> Setting user tags for user 'guest' to [<<"administrator">>,<<"management">>]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.