1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-05 21:57:51 +03:00

4443 Commits

Author SHA1 Message Date
Martin Schwenke
f6be6f387a tests: new function ip2ipmask() for integration testing
Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit 8164d9b29bf9080ccc76b1305fb6c07f1ed61d55)
2013-01-07 12:19:33 +11:00
Martin Schwenke
4f0d68cba6 ctdbd: Clean up orphaned interfaces when an IP is deleted
Add a new function ctdb_remove_orphaned_ifaces() and call it in
ctdb_control_del_public_address().

ctdb_remove_orphaned_ifaces() uses a naive implementation that does
things in a very obvious way.  There are many ways to improve the
performance - some are mentioned in a comment in the code.  However, I
doubt that this will be a bottleneck even with a large number of
public IPs.  Running the eventscript is likely to outweigh the cost of
this cleanup.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit cc1a3ae911d3fee8b87fda5de5ab6d9499d7510a)
2013-01-07 12:19:33 +11:00
Amitay Isaacs
1eddc33d70 tests/complex: Add NFS test when CTDB is killed on one of the nodes
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit b849fb4923d6a34141fe19006a974de81508ceda)
2013-01-07 12:08:39 +11:00
Martin Schwenke
217ad07b72 Eventscripts: Change the default reconfigure action to do nothing
A default action of restarting the service doesn't obey the principle
of least surprise.  It cause the NFS service to be implicitly
reintroduced.

This allows no-op functions to be removed from some eventscripts and
service restart functions to be added to others.

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit c75b5e5b4d000f5c7dab403df8238ceed390c1c0)
2013-01-07 10:35:39 +11:00
Martin Schwenke
3d408ca1e1 Eventscripts: Do not restart NFS on reconfigure
It looks like this restart was accidentally reintroduced in commit
fc0678d351187cfa4c71123f97c0f493aacd5d16 when $service_reconfigure
became unset so the default action of restarting the service would
occur.  From there cleanups have explicitly reintroduced it and
carried it through the code.

Also update the unit tests affected by this change.

The restart was originally removed in commit
bc481c3f1a44c50648488c4f8a7f15ec395d446f.

The default reconfigure action of restarting a service is clearly
suboptimal and will be addressed in a separate patch.

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit 2629de72e1f37b5e46772c2ef8d8d0012fc4ed37)
2013-01-07 10:35:39 +11:00
Martin Schwenke
6fbd3ea2c2 ctdbd: Initialise the node flags in just one place
Currently flags are initialised in 2 places.  One of them is in
ctdb_tcp_listen_automatic(), which just seems wrong.  This makes the
code easier to follow by just doing it in ctdb_start_daemon().

This means that the flags are now initialised later than previously.
However, it is still done before the transport is started and before
clients can connect.

In future it might make sense to do a similar thing with setting the
PNN.  However, the current optimisation is reasonably obvious...

Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 2bbee8ac23ad5b7adf7122d8c91d5f0d54582507)
2013-01-07 10:35:39 +11:00
Martin Schwenke
80a2bb84e7 ctdbd: Remove debug option --node-ip, use --listen instead
This effectively reverts d96cb02c2c24f9eabbc53d3d38e90dea49cff3e0

Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 496387a585b2c5778c808cf02b8e1435abde4c3e)
2013-01-07 10:35:39 +11:00
Martin Schwenke
5cf98c80ff tests: Local daemons should use --listen instead of --node-ip
Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 3221fce9ee2f6fdd3bb17a5e1629ad52a32f90d6)
2013-01-07 10:35:39 +11:00
Martin Schwenke
df7152fe87 Initscript: when checking status, print output of "ctdb ping" if it fails
At the moment the caller has no idea why it thinks CTDB isn't running
and we can't debug failures...

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit 776590bf84d221092298346a28d7fc0552a67c9d)
2013-01-07 10:35:38 +11:00
Michael Adam
f5b15e21c5 ctdb:recover: fix a comment typo
Signed-off-by: Michael Adam <obnox@samba.org>

(This used to be ctdb commit 5067392d2e06795559f25828b65c129608b65c0b)
2013-01-05 01:15:19 +01:00
Michael Adam
b64e237f9b events/50.samba: fix testparm background update
creating the smb.conf cache with "-v" results in a cache file
that fails to load with "testparm -s ..." later on due to
"copy = " not being processable. (Copying the empty service name fails).

Signed-off-by: Michael Adam <obnox@samba.org>

(This used to be ctdb commit 81788cfabe960497b050c5ee4e4e487ee061012a)
2013-01-05 01:15:19 +01:00
Amitay Isaacs
a73f13ada7 daemon: Add a tunable to enable automatic database priority setting
Samba versions 3.6.x and older do not set the database priority.
This can cause deadlock between Samba and CTDB since the locking order
of database will be different. A hack was added for automatic promotion
of priority for specific databases to avoid deadlock.  This code should
not be invoked with Samba version 4.x which correctly specifies the
priority for each database.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Michael Adam <obnox@samba.org>

(This used to be ctdb commit 4a9e96ad3d8fc46da1cd44cd82309c1b54301eb7)
2013-01-05 01:14:57 +01:00
Amitay Isaacs
13518b9e33 daemon: Check if log_latency_ms is set before using it
This fixes a bug where wrong variable is checked.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit f81e9add466b1d9b2796c09c6ba63b77296ea149)
2012-11-30 12:21:30 +11:00
Martin Schwenke
606ddb1647 Git should ignore generated include/version.h file
Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit 905cd1293aa97dc7839a59b4f68eca02981f0891)
2012-11-27 18:43:34 +11:00
Volker Lendecke
83862c5c8d vacuum: Avoid some tallocs in ctdb recovery
In a heavily loaded and volatile database a lot of SCHEDULE_FOR_DELETION
requests can come in between fast vacuuming runs. This can lead to
significant ctdb cpu load due to the cost of doing talloc_free. This
reduces the number of objects a bit by coalescing the two objects
of delete_record_data into one. It will also avoid having to allocate
another talloc header for a SCHEDULE_FOR_DELETION key. Not the full fix
for this problem, but it might contribute a bit.

(This used to be ctdb commit 9a02f61547ddf74629aca21639d8fb61c1df7cbb)
2012-11-26 10:31:53 +11:00
Amitay Isaacs
b2e96641eb doc: Update ping_pong documentation to add -c option
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit d05faf294e58e22ae3fbc76162258f1ae8178129)
2012-11-21 19:40:22 +11:00
Michael Adam
05cf7bce49 utils🏓 add a -c switch to check the lock before reading/writing
This is to verify that the fcntl F_GETLK call reports F_UNLCK if called
from a process already holding a lock. This is for example used by samba's
strict locking code in combination with "posix locking = true".

Signed-off-by: Michael Adam <obnox@samba.org>

(This used to be ctdb commit 4f42d17b74ce891691eee1cead498959cc8e4837)
2012-11-20 00:48:52 +01:00
Michael Adam
8732e2356f recovery: data corruption of persistent DBs after recoveries: don't delete emtpy records
The record-by-record mode of recovery deletes empty records.
For persistent databases, this can lead to data corruption
by deleting records that should be there:

- Assume the cluster has been running for a while.

- A record R in a persistent database has been created and
  deleted a couple of times, the last operation being deletion,
  leaving an empty record with a high RSN, say 10.

- Now a node N is turned off.

- This leaves the local database copy of D on N with the empty
  copy of R and RSN 10. On all other nodes, the recovery has deleted
  the copy of record R.

- Now the record is created again while node N is turned off.
  This creates R with RSN = 1 on all nodes except for N.

- Now node N is turned on again. The following recovery will chose
  the older empty copy of R due to RSN 10 > RSN 1.

==> Hence the record is gone after the recovery.

On databases like Samba's registry, this can damage the higher-level
data structures built from the various tdb-level records.

This patch fixes that problem by not deleting empty records in recoveries
for persistent databases.

Signed-off-by: Michael Adam <obnox@samba.org>

(This used to be ctdb commit 6860c79aea416f56cfd7a6af790bbdf495dbc54e)
2012-11-20 00:48:24 +01:00
Michael Adam
9c65a7ef81 recoverd: fix a comment typo
Signed-off-by: Michael Adam <obnox@samba.org>

(This used to be ctdb commit 909269a4a3690e1245117ca1af935401455785e6)
2012-11-20 00:48:23 +01:00
Michael Adam
79468f338a vacuum: fix a comment typo
Pair-Programmed-With: Volker Lendecke <vl@samba.org>
Signed-off-by: Michael Adam <obnox@samba.org>

(This used to be ctdb commit bab744e3c49efef2e05dc09e8ea9bd3e3fa58716)
2012-11-19 14:53:14 +01:00
Martin Schwenke
8fad7670f1 Eventscripts: 10.interface should list configured interfaces
The current code lists available interfaces.  If IPs are configured in
some other way than the public addresses file (e.g. ctdb addip) and their
interfaces default to being marked down then, since down interfaces are
not available, these interfaces can never be marked up.

The configured interfaces should be listed instead.

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit d8f010355b715e49709836e057a5d0f110919897)
2012-11-19 15:54:50 +11:00
Martin Schwenke
0f1bcebc80 ctdbd: Make the link status of new interfaces more flexible
Neither up nor down is a good default value for the link status of a
new interface.  Up means that IPs can be assigned to interfaces before
the true state is known and they can move away quickly if the interface
is actually down.  Down means that IPs can't be assigned to an interface
for a variable amount of time - until a monitor cycle occurs - and this
can result in imbalanced IPs.

This is a neat compromise.  Before the startup event completes, IPs
can't be assigned to interfaces because all interfaces begin in a down
state.  As soon as the startup event completes, IPs can be allocated
to any interface that has been marked up by the eventscript.  Later,
during normal operation, newly added IPs can be assigned to new
interfaces immediately.  The IPs will still move away if an interface
is noticed to be down in the next monitor cycle, but that is the
exception rather than the rule.

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit 9275a69a414482f1053ae14528d5972575b9214e)
2012-11-19 15:53:13 +11:00
Amitay Isaacs
442d9905fe locking: Do not use RECLOCK for tracking DB locks and latencies
RECLOCK is for recovery lock in CTDB. Do not override the meaning for
tracking locks on databases.  Database lock latency has nothing to do
with recovery lock latency.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 54e24a151d2163954e5a2a1c0f41a2b5c19ae44b)
2012-11-14 15:51:59 +11:00
Amitay Isaacs
56ee668a51 tools/ctdb: Do not use function return value as pnn
This fixes the wrong code where same variable 'ret' is used to track the pnn
and the return value of a function call.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 718233c445cd6627ab3962b6565c2655f1f8efd0)
2012-11-14 11:00:21 +11:00
Amitay Isaacs
85c8deca3f recoverd: Track the nodes that fail takeover run and set culprit count
If any of the nodes fail takeover run (either due to timeout or failure
to complete within takeover_timeout interval) from main loop, recovery
master will give up trying takeover run with following message:

  "Unable to setup public takeover addresses. Try again later"

And as a side-effect the monitoring is disabled on all the nodes. Before
ctdb_takeover_run() is called from main loop, monitoring get disabled via
startrecovery event. Since ctdb_takeover_run() fails, it never runs
recovered event and monitoring does not get re-enabled.

In main_loop, ctdb_takeover_run() is called with a takeover_fail_callback.
This callback will get called if any of the nodes fail in handling
takeip/releaseip/ipreallocated events in ctdb_takeover_run().

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit a5c6bb1fffb8dc3960af113957a1fd080cc7c245)
2012-11-14 10:59:54 +11:00
Martin Schwenke
f082f4006f Eventscripts: 10.interface startup event should only process interfaces once
Provided that monitor_interfaces() sets the state of each interface,
there's no need to mark all interfaces as up before running
monitor_interfaces() in the startup event.  monitor_interfaces() will
set the true status of each interface anyway.  The duplication is
unnecessary and may cause extra action in the recovery daemon because
the state of some interfaces is changed an extra time.

Instead, add a comment at the top of the loop in monitor_interfaces()
to warn against early loop exits.

Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit f243a916ee71013f7402b9c396c2ead88eb3aab0)
2012-11-14 10:57:48 +11:00
Volker Lendecke
4c5852bf0f build: Fix the build with old system-installed tevent
We depend on the tracing callback mechanism in ctdb.

(This used to be ctdb commit 5f58c811127a89f162b6a41ddcd6e944801740a5)
2012-11-08 12:57:58 +11:00
Martin Schwenke
861d5304ac ctdbd: Fix compilation warning in locking code
Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit cd64035d71ddff6aebe6c15a49e09527283425d2)
2012-10-31 12:33:25 +11:00
Amitay Isaacs
a6d9b6f473 web: Update instructions for building from tarball
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit ceac026713a7ee30ea865ed4a9422900ed76fdf6)
2012-10-31 12:19:08 +11:00
Amitay Isaacs
4ca7f95d4f tests: Do not check release suffix in ctdb version test
release suffix added by RPM is to track packaging changes. Core CTDB
version does not include the release suffix.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit aad1584da8a8425bc6f5163c95810e9d2390dc91)
2012-10-31 12:19:03 +11:00
Amitay Isaacs
79aeac6bfe packaging: Use maketarball.sh script to create tarball for RPM
This removes the duplicate code for building tarball and reuses existing
script.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 16a91c2a4d03b46743611e2fe844bb2cef95e46a)
2012-10-30 18:01:38 +11:00
Amitay Isaacs
49bddd6f1e packaging: Use optional argument as targetdir when creating tarball
In addition, do not modify CTDB version string with extra suffix.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 3d4838db51dd8199b9c29aebb6e7bfbd2a27b8bb)
2012-10-30 15:58:14 +11:00
Amitay Isaacs
b0f90052cb tool/ctdb: Always support ctdb version command, don't make it optional
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit f8af7d8de76e68e5c4bde15f832a31ce9107e8c7)
2012-10-30 11:56:00 +11:00
Amitay Isaacs
1a6ccd1bf1 build: Add rules to create include/version.h when building from git tree
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 8df7ea6b20417833792932487a082b3c71bb6837)
2012-10-30 11:55:59 +11:00
Amitay Isaacs
92207245ba packaging: Create include/version.h to define CTDB_VERSION_STRING
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit b151f9b62299ec5b887c62cef780547a39c0ba9d)
2012-10-30 11:55:59 +11:00
Volker Lendecke
2d1d5d312e Add a \n to an error message
(This used to be ctdb commit 9be3b23adbfc844b71bf1d4ddf0fbc3b269f15fa)
2012-10-25 17:11:15 +11:00
Volker Lendecke
295dfa771a Avoid a bashism in 60.ganesha
This file is #!/bin/sh. On sn-devel at least, with this /bin/sh the
shell does not like == for string equality.

(This used to be ctdb commit e2213db479129ce9c2b2fb88ec8c53cbd33d54b3)
2012-10-24 18:31:16 +11:00
Amitay Isaacs
594284f2d7 web: Update broken links to manpages
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit e94070de52232d6cefae0c6276df88b8fc380a4e)
2012-10-24 12:59:14 +11:00
Amitay Isaacs
42d8e379fe packaging: Bundle README, COPYING and html version of manpages
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 6871415f6cb50c4f9753067359f0e264d3f93871)
2012-10-22 18:15:17 +11:00
Amitay Isaacs
56e1d523a5 doc: Do not keep the built version of manpages in version control
Generated docs will be bundled with release tarballs. No need to keep
them in git. This avoids the need to commit the generated doc version
if source xml is modified.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit f3888712298f1de7cc7eb51f50c22080fa64e3c0)
2012-10-22 18:15:17 +11:00
Amitay Isaacs
231898db1f packaging: Use common code to generate VERSION string
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 0019291371af1e63ee132ed173ba7f52a0291a44)
2012-10-22 18:15:17 +11:00
Amitay Isaacs
5ea3a56b62 packaging: Factor out the code to genreate VERSION string
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 19fb26346567d2249b1237f92d871022db2ba8cd)
2012-10-22 18:15:17 +11:00
Amitay Isaacs
68b32e53ce packaging: Build docs and include them in tarball
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 69f0473b72aadab5bd5791ccff2facd0cd469d43)
2012-10-22 18:15:17 +11:00
Amitay Isaacs
43b25d1948 build: Extract building of manpages in a separate Makefile
This can then be used to build manpages/html when creating tarball.
Do not build docs during a regular build, but only for install.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 3274cffe2052953b34141a82de6053b747532a88)
2012-10-22 18:15:17 +11:00
Amitay Isaacs
5b6625793d doc: README - add information about CTDB, license and website
(This used to be ctdb commit db987eeb3c6e10552a1c1334bf263eb66fcad9ab)
2012-10-22 17:39:49 +11:00
Amitay Isaacs
9e4453451b web: Add posix locking information to prerequisites
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit b3eac871895cc586bcc671835e882b136e466b98)
2012-10-22 17:39:47 +11:00
Amitay Isaacs
46199534b5 web: Add the links to ftp/http ctdb download area
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 12e4a3e2953842b4c3842bf920fe2086df4fe46c)
2012-10-22 17:39:45 +11:00
Amitay Isaacs
30642440f0 web: Remove reference to non-existent config files
Signed-off-by: Amitay Isaacs <amitay@gmail.com>

(This used to be ctdb commit 4250c7ebe369e73cf29ff910bb9bfc929735408c)
2012-10-22 17:39:42 +11:00
Martin Schwenke
b63c3deb63 doc: getlog and clearlog changes for recovery daemon logs
Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit c18ec8ec234cb71da6cc77b1aadc398f57187947)
2012-10-22 12:47:04 +11:00
Martin Schwenke
3189eef7d9 tests: Local daemons should use the logging ringbuffer
Signed-off-by: Martin Schwenke <martin@meltin.net>

(This used to be ctdb commit 7547e011005f0dd5bd38e67572280126cf16e229)
2012-10-22 12:47:04 +11:00