196 Commits

Author SHA1 Message Date
Clay Gerrard
df22032d79 object-expirer: add round_robin_cache_size option
Drive-Bys:
 * DRY out redundent configuration examples in expiring objects overview
   documentation.
 * Add missing delay_reaping man page docs.

Co-Authored-By: Alistair Coles <alistairncoles@gmail.com>

Change-Id: I8879dbd13527233c878dff764ec411ce9619ee39
2024-11-01 09:54:54 +00:00
Takashi Kajinami
49b19613d2 Remove per-service auto_create_account_prefix
The per-service option was deprecated almost 4 years ago[1].

[1] 4601548dabdec0a4dc89cefba11e963217255be3

Change-Id: I45f7678c9932afa038438ee841d1b262d53c9da8
2023-11-22 01:58:03 +09:00
Tim Burke
716ae48eb8 docs: Fix broken paste/pastedeploy links
Closes-Bug: #2016463
Change-Id: Id500a2429b7412823970a06e3e82b1d1646c70b8
2023-04-27 13:52:55 -07:00
Tim Burke
11b9761cdf Rip out pickle support in our memcached client
We said this would be going away back in 1.7.0 -- lets actually remove it.

Change-Id: I9742dd907abea86da9259740d913924bb1ce73e7
Related-Change: Id7d6d547b103b4f23ebf5be98b88f09ec6027ce4
2022-04-27 11:16:16 -07:00
Matthew Oliver
7a105b5ef0 Add and pipe reconstructor stats through recon
This patch plumbs the object-reconstructor stats that are dropped
into recon cache out through the middleware and swift-recon tool.

This adds a '/recon/reconstruction/object' to the middleware. As such
the swift-recon tool has grown a '-R' or '--reconstruction' option
access this data from each node.

Plus some tests and documentation updates.

Change-Id: I98582732ca5ccb2e7d2369b53abf9aa8c0ede00c
2021-08-20 00:03:40 +00:00
Alistair Coles
bbaed18e9b diskfile: don't remove recently written non-durables
DiskFileManager will remove any stale files during
cleanup_ondisk_files(): these include tombstones and nondurable EC
data fragments whose timestamps are older than reclaim_age. It can
usually be safely assumed that a non-durable data fragment older than
reclaim_age is not going to become durable. However, if an agent PUTs
objects with specified older X-Timestamps (for example the reconciler
or container-sync) then there is a window of time during which the
object server has written an old non-durable data file but has not yet
committed it to make it durable.

Previously, if another process (for example the reconstructor) called
cleanup_ondisk_files during this window then the non-durable data file
would be removed. The subsequent attempt to commit the data file would
then result in a traceback due to there no longer being a data file to
rename, and of course the data file is lost.

This patch modifies cleanup_ondisk_files to not remove old, otherwise
stale, non-durable data files that were only written to disk in the
preceding 'commit_window' seconds. 'commit_window' is configurable for
the object server and defaults to 60.0 seconds.

Closes-Bug: #1936508
Related-Change: I0d519ebaaade35249fb7b17bd5f419ffdaa616c0
Change-Id: I5f3318a44af64b77a63713e6ff8d0fd3b6144f13
2021-07-19 21:18:02 +01:00
Romain LE DISEZ
d8821c75bd proxy-logging: add fields ttfb and pid
Change-Id: I1611e34846e586703e9d3709fa64e8df41f2d685
2020-01-27 15:54:52 -05:00
Zuul
e32689a96d Merge "Deprecate per-service auto_create_account_prefix" 2020-01-07 01:30:20 +00:00
zhufl
47eb78897d Fix the duplicated words issue like "the the "
This is to fix the duplicated words issue, like:
  * "both of which which must be stripped off"
  * "In addition the the values set"
  and so on

Change-Id: Id3d84281f15815b4185c76874575e91a3589981b
2020-01-06 10:34:42 +08:00
Clay Gerrard
4601548dab Deprecate per-service auto_create_account_prefix
If we move it to constraints it's more globally accessible in our code,
but more importantly it's more obvious to ops that everything breaks if
you try to mis-configure different values per-service.

Change-Id: Ib8f7d08bc48da12be5671abe91a17ae2b49ecfee
2020-01-05 09:53:30 -06:00
Zuul
9fa0b211a9 Merge "Seamlessly reload servers with SIGUSR1" 2019-11-14 20:34:48 +00:00
Darrell Bishop
1107f24179 Seamlessly reload servers with SIGUSR1
Swift servers can now be seamlessly reloaded by sending them a SIGUSR1
(instead of a SIGHUP).  The server forks off a synchronized child to
wait to close the old listen socket(s) until the new server has started
up and bound its listen socket(s).  The new server is exec'ed from the
old one so its PID doesn't change.  This makes Systemd happier, so a
ReloadExec= stanza can now be used.

The seamless part means that incoming connections will alwyas get
accepted either by the old server or the new one.  This eliminates
client-perceived "downtime" during server reloads, while allowing the
server to fully reload, re-reading configuration, becoming a fresh
Python interpreter instance, etc.  The SO_REUSEPORT socket option has
already been getting used, so nothing had to change there.

This patch also includes a non-invasive fix for a current eventlet bug;
see https://github.com/eventlet/eventlet/pull/590
That bug prevents a SIGHUP "reload" from properly servicing existing
requests before old worker processes close sockets and exit.  The
existing probtests missed this, but the new ones, in this patch, caught
it.

New probe tests cover both old SIGHUP "reload" behavior as well as the
new SIGUSR1 seamless reload behavior.

Change-Id: I3e5229d2fb04be67e53533ff65b0870038accbb7
2019-11-07 10:15:26 -08:00
Romain LE DISEZ
2f1111a436 proxy: stop sending chunks to objects with a Queue
During a PUT of an object, the proxy instanciates one Putter per
object-server that will store data (either the full object or a
fragment, depending on the storage policy). Each Putter is owning a
Queue that will be used to bufferize data chunks before they are
written to the socket connected to the object-server. The chunks are
moved from the queue to the socket by a greenthread. There is one
greenthread per Putter. If the client is uploading faster than the
object-servers can manage, the Queue could grow and consume a lot of
memory. To avoid that, the queue is bounded (default: 10). Having a
bounded queue also allows to ensure that all object-servers will get
the data at the same rate because if one queue is full, the
greenthread reading from the client socket will block when trying to
write to the queue. So the global rate is the one of the slowest
object-server.

The thing is, every operating system manages socket buffers for incoming
and outgoing data. Concerning the send buffer, the behavior is such that
if the buffer is full, a call to write() will block, otherwise the call
will return immediately. It behaves a lot like the Putter's Queue,
except that the size of the buffer is dynamic so it adapts itself to the
speed of the receiver.

Thus, managing a queue in addition to the socket send buffer is a
duplicate queueing/buffering that provides no interest but is, as shown
by profiling and benchmarks, very CPU costly.

This patch removes the queuing mecanism. Instead, the greenthread
reading data from the client will directly write to the socket. If an
object-server is getting slow, the buffer will fulfill, blocking the
reader greenthread. Benchmark shows a CPU consumption reduction of more
than 30% will the observed rate for an upload is increasing by about
45%.

Change-Id: Icf8f800cb25096f93d3faa1e6ec091eb29500758
2019-11-07 18:01:58 +08:00
zengjia
0ae1ad63c1 Update auth_url in install docs
Beginning with the Queens release, the keystone install guide
recommends running all interfaces on the same port.This patch
updates the swift install guide to reflect that change

Change-Id: Id00cfd2c921da352abdbbbb6668b921f3cb31a1a
Closes-bug: #1754104
2019-07-11 15:03:16 +08:00
Kazuhiro MIYAHARA
443f029a58 Enable to configure object-expirer in object-server.conf
To prepare for object-expirer's general task queue feature [1],
this patch enables to configure object-expirer in object-server.conf.
Object-expirer.conf can be used in the same manner as before, but deprecated.

If both of object-server.conf with "object-expirer" section and
object-expirer.conf are in a node, only object-server.conf is used.
Object-expirer.conf is used only if all object-server.conf doesn't have
"object-expirer" section.

There are two differences between "object-expirer.conf" style and
"object-server.conf" style.

The first difference is `dequeue_from_legacy` default value.
`dequeue_from_legacy` defines task queue mode. In "object-expirer.conf"
style, the default mode is legacy queue. In "object-server.conf" style,
the default mode is general queue. But general mode means no-op mode
for now, because general task queue is not implemented yet.

The second difference is internal client config. In "object-expirer.conf"
style, config file of internal client is the object-expirer.conf itself.
In "object-server.conf" style, config file of internal client is
another file.

[1]: https://review.openstack.org/#/c/517389/

Co-Authored-By: Matthew Oliver <matt@oliver.net.au>

Change-Id: Ib21568f9b9d8547da87a99d65ae73a550e9c3230
2019-05-04 15:45:02 +00:00
Gilles Biannic
a4cc353375 Make log format for requests configurable
Add the log_msg_template option in proxy-server.conf and log_format in
a/c/o-server.conf. It is a string parsable by Python's format()
function. Some fields containing user data might be anonymized by using
log_anonymization_method and log_anonymization_salt.

Change-Id: I29e30ef45fe3f8a026e7897127ffae08a6a80cd9
2019-05-02 17:43:25 -06:00
John Dickinson
02841ee0c6 fix documentation of default
Change-Id: I7c716dea5e0a5b8849b84b1bb25d5294591dcd51
2018-12-18 14:25:23 -08:00
Alistair Coles
904e7c97f1 Add more doc and test for cors_expose_headers option
In follow-up to the related change, mention the new
cors_expose_headers option (and other proxy-server.conf
options) in the CORS doc.

Add a test for the cors options being loaded into the
proxy server.

Improve CORS comments in docs.

Change-Id: I647d8f9e9cbd98de05443638628414b1e87d1a76
Related-Change: I5ca90a052f27c98a514a96ee2299bfa1b6d46334
2018-09-17 12:35:25 -07:00
Zuul
956172623c Merge "fixed a manpage and added the manpage syntax checker to pep8 jobs" 2018-09-15 17:48:49 +00:00
John Dickinson
0c97888bcb fixed a manpage and added the manpage syntax checker to pep8 jobs
also a drive-by fix to the bindep job--it doesn't need to install

Change-Id: Ic9b68bc60bfbf21b45a1b7f9d7ff9998e01ddd26
2018-09-15 10:31:49 -06:00
zhangdebo
a7dd5f655d Replace Chinese quotes with English quotes
Change-Id: Ic7025ba79eadb39f75dd03135fae3326138b3ded
2018-09-15 03:20:24 -04:00
FatemaKhalid
cfeb32c66b Adding keep_idle config value to socket
User can cofigure KEEPIDLE time for sockets in TCP connection.
The default value is the old value which is 600.

Change-Id: Ib7fb166deb8a87ae4e97ba0671048b1ec079a2ef
Closes-Bug:1759606
2018-09-15 01:30:53 +02:00
Zuul
a3cc7ccc69 Merge "Experimental swift-ring-composer CLI to build composite rings" 2018-06-15 04:27:43 +00:00
Alistair Coles
6b626f2f98 Experimental swift-ring-composer CLI to build composite rings
Provides a simple, experimental, CLI tool to generate a
composite ring from a list of component builder files.

For example:

  swift-ring-composer <composite-file> compose \
      <builder-file> <builder-file> --output <ring-file>

Commands available:

- compose: compose a list of builder file to a composite ring
- show: show the metadata for a composite ring

Co-Authored-By: Kota Tsuyuzaki <tsuyuzaki.kota@lab.ntt.co.jp>
Co-Authored-By: Matthew Oliver <matt@oliver.net.au>
Change-Id: I25a79e71c13af352e19e4358f60545265b51584f
2018-06-14 09:50:55 +01:00
wangdequn
026f706563 rectify 'a integer number' to 'an integer number'
Change-Id: I307baf793cd39786b3a8a921f5b02c945e1dbf46
2018-06-14 10:22:30 +08:00
Thiago da Silva
36dbd38e48 Add s3api headers to allowed_headers by default
Previously, these headers had to be added by operators to their
object-server.conf when enabling swift3 middleware. Since s3api
is now imported into swift we should go ahead and add these headers
by default too.

Change-Id: Ib82e175096716e42aecdab48f01f079e09da6a1d
Signed-off-by: Thiago da Silva <thiago@redhat.com>
2018-05-29 16:02:50 -04:00
wangqi
708b24aef1 Deprecate auth_uri option
Option auth_uri from group keystone_authtoken is deprecated[1].
Use option www_authenticate_uri from group keystone_authtoken.

[1]https://review.openstack.org/#/c/508522/

Change-Id: I43bbc8b8c986e54a9a0829a0631d78d4077306f8
2018-04-18 02:07:11 +00:00
Zuul
e4660a3e31 Merge "Add manpage for swift-object-relinker" 2018-04-11 01:35:07 +00:00
gaofei
10542d00ea Replace Chinese punctuation with English punctuation
Curly quotes(Chinese punctuation) usually input from Chinese input method.
When read from english context, it makes some confusion.

Change-Id: Ibd50299ee287c56ec4759ea8ff53d47d006144f8
2018-01-25 05:33:04 +00:00
Alistair Coles
6e394bba0a Add request_tries option to object-expirer.conf-sample
...and update the object-expirer man page.

Change-Id: Idca1b8e3b7d5b40481af0d60477510e2557b88c0
2018-01-15 15:29:11 +00:00
Kazuhiro MIYAHARA
17e6950aa0 Fix manpage docs' daemon names
In current manpage docs, some of daemon names for concurrency
explanation is wrong.

This patch fixes the daemon names.

Change-Id: I2a505c9590ee3a3a7e37e8d949a10db36206faec
2017-12-22 02:18:09 +00:00
Ondřej Nový
611b28f73a Add manpage for swift-object-relinker
Change-Id: I56dd9c646faba91e9f124f343ea0e08f8c3c4249
2017-12-09 19:10:35 +01:00
Alistair Coles
bc2e03d1a6 Add --swift-versions option to swift-recon man page
Related-Change: I3c2e569f0c44168333251bb58bab4b5582e15a45

Change-Id: I9776c0919164e48ac445eacf7d897a23ef8e4572
2017-12-06 09:11:56 -08:00
Zuul
25db6f317d Merge "Replace replication_one_per_device by custom count" 2017-10-30 19:46:34 +00:00
HCLTech-SSW
178d7f37cb Added the man page for container-reconciler.conf
Change-Id: Ic7fc6ddca2ab564b31156fa84b362bc9963825f1
Closes-Bug: #1607025
2017-10-27 08:43:43 +00:00
Romain LE DISEZ
e199192cae Replace replication_one_per_device by custom count
This commit replaces boolean replication_one_per_device by an integer
replication_concurrency_per_device. The new configuration parameter is
passed to utils.lock_path() which now accept as an argument a limit for
the number of locks that can be acquired for a specific path.

Instead of trying to lock path/.lock, utils.lock_path() now tries to lock
files path/.lock-X, where X is in the range (0, N), N being the limit for
the number of locks allowed for the path. The default value of limit is
set to 1.

Change-Id: I3c3193344c7a57a8a4fc7932d1b10e702efd3572
2017-10-24 16:17:41 +01:00
Samuel Merritt
356b110229 Remove swift-temp-url man page.
Commit 250da37a removed bin/swift-temp-url, but left the man page.

Change-Id: Ic518f23678e3c3134f02a46a51a2bcb90d92bdc2
2017-10-18 15:09:12 -07:00
Jenkins
b70436f91c Merge "Add example to container-sync-realms.conf.5 man page" 2017-10-10 20:14:17 +00:00
Jenkins
047d8d12fd Merge "Added the man page for container-sync-realms.conf" 2017-10-09 22:09:19 +00:00
Jenkins
2714024335 Merge "Replace SOSO auth prefix in examples with more-standard AUTH" 2017-10-09 12:09:54 +00:00
Alistair Coles
8b7f15223c Add example to container-sync-realms.conf.5 man page
Related-Change: I0760ce149e6d74f2b3f1badebac3e36da1ab7e77

Change-Id: I129de42f91d7924c7bcb9952f17fe8a1a10ae219
2017-10-09 10:07:20 +01:00
HCLTech-SSW
816331155c Added the man page for container-sync-realms.conf
Updated the comments of reviewers.

Change-Id: I0760ce149e6d74f2b3f1badebac3e36da1ab7e77
Closes-Bug: #1607026
2017-10-09 09:57:35 +01:00
Jenkins
9a09641a7c Merge "Add cautionary note re delay_reaping in account-server.conf-sample" 2017-09-28 01:19:33 +00:00
Tim Burke
79905ae794 Replace SOSO auth prefix in examples with more-standard AUTH
Change-Id: I98643d6acf248840a8360f31e446bc8ecb834898
2017-09-27 23:49:59 +00:00
Alistair Coles
93fc9d2de8 Add cautionary note re delay_reaping in account-server.conf-sample
Change-Id: I2c3eea783321338316eecf467d30ba0b3217256c
Related-Bug: #1514528
2017-09-27 22:52:47 +01:00
Alistair Coles
5c76b9e691 Add concurrent_gets to proxy.conf man page
Change-Id: Iab1beff4899d096936c0e5915f3ec32364b3e517
Closes-Bug: #1559347
2017-09-27 14:11:14 +01:00
Kota Tsuyuzaki
1e79f828ad Remove all post_as_copy related code and configes
It was deprecated and we discussed on this topic in Denver PTG
for Queen cycle. Main motivation for this work is that deprecated
post_as_copy option and its gate blocks future symlink work.

Change-Id: I411893db1565864ed5beb6ae75c38b982a574476
2017-09-16 05:50:41 +00:00
junboli
6998d804ff doc migration: update the doc link address[1/3]
Update the doc link brought by the swift doc migration.
Although we had some effort to fix these before, it still left lots
of bad doc link, I separate these changes into 3 patches aim to fix
all of these, this is the 1st patch for doc/manpages.

Change-Id: Ib49696706e61bbd36ae56b15b1d94aa4ce84531c
2017-09-05 19:13:47 +00:00
Alistair Coles
b599b48f69 Clarify usage of replicator and reconstructor override options
Clarify in usage statement and man pages that CLI override options for
swift-object-reconstructor and swift-object-replicator only have
effect when --once is used.

Also add a link to object reconstructor source code docs to the doc
index page for consistency with the other object services.

Change-Id: If348b340d59a672d3a19d4df231ebdb74f4aed51
2017-07-26 12:53:46 +01:00
Jenkins
2d18ecdf4b Merge "Replace slowdown option with *_per_second option" 2017-06-22 01:18:26 +00:00