| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| |\ |
|
| | |
| |
| |
| | |
the store.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
* Don't count messages / bytes read during read, do so in
betas_from_index_entries since unacked msgs don't count
* Introduce qi_pending_ack to prevent us trying to page out messages that
don't touch the store
* Fix purge bookkeeping, account for the fact messages can be paged in to be
purged
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
large ones go to the store.
|
| | |
| |
| |
| | |
alpha -> beta transition, allow it to decrement on beta -> delta as well if the message went to the QI. (We were already correct on delta -> beta, and there isn't a bulk beta -> alpha move.)
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
need to guard msg_store read and remove as we should just naturally not need to do them.
|
| | |
| |
| |
| | |
does it for all messages, but in reality we'd only want to do this for small ones (and make it configurable). Confirms are probably broken, maybe some other things.
|
| |\ \ |
|
| | |\ \ |
|
| | | | | |
|
| | |/ /
| | |
| | |
| | | |
in-memory message to delta, and do the same for beta.
|
| |\ \ \ |
|
| | |\ \ \
| | |/ /
| |/| | |
|
| | | |\ \ |
|
| | | | |\ \ |
|
| | | | | |\ \
| | | | | |/ |
|
| | | | | | |\ |
|
| | | | | | |\ \ |
|
| | | | | | |\ \ \ |
|
| | |\ \ \ \ \ \ \ \
| | |/ / / / / / / |
|
| | | | | | | | | | |
|
| | |/ / / / / / /
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | |
This works around a race in Mnesia where a starting loser would hang
forever. This happens when a starting loser connects to another loser,
negotiates the Mnesia protocol and attempts to acquire a write lock on
the other node's schema. If the other nodes stops right between the
protocol negotiation and the lock request, the starting node never
receives an answer to its request.
Before this fix, the hang occurred after at most 30 minutes looping on
the partitions:autoheal test in rabbitmq-test. With the fix, RabbitMQ
survived an all night long run.
|
| | |\ \ \ \ \ \ \
| | |/ / / / / / |
|
| | | |\ \ \ \ \ \
| | | |/ / / / /
| | |/| | | | | |
|
| | | | | |_|_|/
| | | |/| | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This prevents a plugin from being enabled if it won't be able to
actually run later. A use case for this is a plugin built with Erlang
version N, but executed on Erlang version M, where M isn't capable of
running the bytecode from N. This was the case with Eralng R14B vs.
R15B.
The "rabbitmq-plugins enable <plugin>" command reports the error and the
plugin remains disabled.
A node reports the error too and refuses to start, exactly as if the
plugin was missing.
|
| | | |\ \ \ \ \
| | | |/ / / / |
|
| | | | | | | | |
|
| | | |/ / / / |
|
| | | |\ \ \ \
| | | | |_|/
| | | |/| | |
|
| | | | |\ \ \
| | | | | |/
| | | | |/| |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | | |
it is called.
|
| | | | |/ /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Before this change, the node would join the cluster and the consistency
would be only checked during application restart (rabbitmqctl
start_app). This could lead to crash during the join due to Erlang,
Mnesia or RabbitMQ incompatibilities.
Now, the join_cluster command reports the problem. Here's an example:
$ rabbitmqctl join_cluster <remote_node>
Clustering node <local_node> with <remote_node> ...
Error: {inconsistent_cluster,
"OTP version mismatch: local node is R16B03-1, remote node 17.3"}
|
| | | | | |
| | | | |
| | | | |
| | | | | |
While here, remove the unused PluginVsn variable.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The goal is to make sure the right application is picked, in case the
same one is available as both a RabbitMQ plugin and an external Erlang
application. For instance, this could be the case with the Cowboy
application: a version is available in the plugins, but the user could
add an incompatible version to Erlang/OTP libdir or set ERL_LIBS to
point to it.
There's one exception currently: eldap. This application used to be
available as a 3rd party one. But since Erlang R15B01, it's included
in the standard library. We trust this version to have a stable API.
Therefore, if the node runs on R15B01 or later and eldap version is
1.0+, we use this one. In all other cases, we don't trust it and prefer
the RabbitMQ plugin.
|
| | | |/ /
| |/| | |
|