Skip to content

Commit 0a63fa9

Browse files
committed
Merge branch 'master' into quic-latest
* master: Don't rely on SSLNetVC when HttpSM gathers info about SSL (#7961) conf_remap: demote 'Invalid configuration' to warning (#7991) Cleans up the code bit, including milliseconds consistency (#7989) Pass through expect header and handle 100-continue response (#7962) Treat TRACE with body as bad request (#7905) Thread safe Mersenne Twister 64 using c++11 (#7859) ESI plugin documentation updates. (#7970) Add log name configuration and stderr/stdout support. (#7937) Cleanup: Constify MIMEHdr (#7949) Fixed compile error with Linux AIO unit test (#7958) Note YAML parser library bug, and work-around, in documentation. (#7963) Ensure that the content-length value is only digits (#7964) String the url fragment for outgoing requests (#7966) Fix for HTTP/2 frames (#7965) Improve parsing error messages for strategies.yaml. (#7948) fix the scheme of h2 0rtt tests (#7957) Fix double test flakiness due to EOS/TXN_CLOSE race (#7956) Use proxy.config.log.hostname for rotated log filenames (#7943) Fixed memory leak in the QUIC stream manager (#7951) Fixup TS_USE_LINUX_NATIVE_AIO AIO_MODE_NATIVE (#7832) Update GitHub stale action to auto close old PRs (#7952) Revert "Do not invalidate cached resources upon error responses to unsafe methods (#7864)" (#7954) regex_revalidate: add stats for miss/stale counts (#7950) Do not invalidate cached resources upon error responses to unsafe methods (#7864) Add an HTTP/2 304 "Not Modified" AuTest. (#7882) regex_revalidate: optionally retain rule epoch state across restarts (#7939) Fixed memory leak in QUIC ack frame unit test (#7947) cache_promote: Don't promote on uncacheable requests (#7942) Fix dynamic-stack-buffer-overflow of cachekey plugin (#7945) Compilation error fixes for QUIC unit tests (#7944) Adds bytes counting as a trigger to the cache_promote LRU (#7765) Add a JSON schema for strategies.yaml (#7932) Remove second call to TRANSACT_RETURN while handling cache write lock (#7873) Close connection after every bad request for HTTP/1.1 (#7885) Pin Sphinx to 3.x to unblock `make html` (#7940) Add support for Remap rule hit stats (#7936) Remove scrap log object dead code (#7935) Add STL forward iterators to DLL container. (#7934) Add log SQUID code testing to redirect.test.py Au test. (#7870) Fix race condition on server session state (#7921) regex_reval: bug where rule type is always reported as the first (#7928) Remove duplicate entry in overridable txn vars. (#7930) Satisfy ci/jenkins/bin/clang-format.sh (#7929) Add a basic Au test using strategies.yaml, with consistent hashing. (#7911) Add a chunked negative revalidating test. (#7907) Ensure that URL components are valid when alternate eviction is logged (#7924) fix grammar (#7927) AuTest: Enable h2spec generic test cases (#7926) Adjust vc read errors (#7923) Remove bucket search from IntrusiveHashMap::erase (#7848) Ensure TS_VCONN_CLOSE_HOOK hook is called during TS_EVENT_VCONN_CLOSE. (#7913) Update docs languages file to add 9.1.x for en and ja (#7917) * Adds a new peering ring mode to next hop selection strategies. (#7897) Add Au test for strategies.yaml, with consistent hashing, with fallover. (#7914) Make HttpSM server reference a Transaction instead of a Session (#7849) Set accept_options of Http1Transaction in Http1ClientSession::new_connection() (#7894) Reset Http1Transaction before adding vc to keep_alive_queue (#7892) Add dead server policy control and metric. Improve messages. (#7757) Ensure the HTTP protion of the protocol string is upper case (#7904) Fixed spelling mistakes in the docs (#7896) add MISS capability to the regex_revalidate plugin (#7899) docs: fix capitalization of Linux (#7898) Redirect - Make TS to honour the number_of_redirections configuration value (#7867) Clean up producer more regularly (#7386) Fix crash in open_close_h2 (#7586) Cleanup Http2ClientSession SessionHandler (#7876) Enforce HTTP parsing restrictions on HTTP versions supported (#7875) Do not delete the continuation twice (#7862) Cleanup: refer Http2ClientSession::mutex (#7853) Autest - Proxy Verifier Extension, add context template $-base string substitution in the replay file. (#7866) Fixed some spelling mistakes in comments (#7869) Fixed ASAN issues with MMH test (#7868) Cleanup: Move member functions defined inside of class definitions of Http2ConnectionState & Http2ConnectionSettings (#7854) Add URI Signing cdnistd Claim Implementation (#7822) Adds a new --enable-all-asserts configure option (#7858) Unifdef test code for MMH and moved it into its own test file (#7841) Clean up lua plugin doc for overridable configurations (#7844) Save and propagate epoll network error (#7809) Add method to write an IpAddr value to a sockaddr. (#7821) Add proxy.config.http.max_proxy_cycles (#7657) Update NextHop strategies so that unavailable server retry codes (#7837) generator: allow for POST requests (#7635) Fixed double declaration types for log buffer tracking (#7847) Extra braces for clang 5 / ubuntu 16.04 on array initialization (#7842) Conflicts: iocore/net/quic/QUICStreamFactory.cc
2 parents 312cf39 + bd93f2a commit 0a63fa9

230 files changed

Lines changed: 6598 additions & 1721 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/stale.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
name: Mark stale issues and pull requests
22

3+
# Documentation
4+
# https://github.com/marketplace/actions/close-stale-issues
5+
36
on:
47
push:
58
paths:
@@ -9,9 +12,7 @@ on:
912

1013
jobs:
1114
stale:
12-
1315
runs-on: ubuntu-latest
14-
1516
steps:
1617
- uses: actions/stale@v3
1718
with:
@@ -20,8 +21,10 @@ jobs:
2021
stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. Marking it stale to flag it for further consideration by the community.'
2122
stale-issue-label: 'Stale'
2223
stale-pr-label: 'Stale'
24+
exempt-issue-labels: 'In Progress'
25+
exempt-pr-labels: 'In Progress'
2326
days-before-pr-stale: 90
2427
days-before-issue-stale: 365
25-
days-before-pr-close: -1
28+
days-before-pr-close: 7
2629
days-before-issue-close: -1
27-
debug-only: true
30+
debug-only: false

configs/strategies.schema.json

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-06/schema#",
3+
"$id": "https://github.com/apache/trafficserver/tree/master/configs/strategies.schema.json",
4+
"$ref": "#/definitions/Strategies",
5+
"definitions": {
6+
"Strategies": {
7+
"type": "object",
8+
"additionalProperties": false,
9+
"properties": {
10+
"hosts": {
11+
"type": "array",
12+
"description": "An array of hosts assinged to a group",
13+
"items": {
14+
"$ref": "#/definitions/Host"
15+
}
16+
},
17+
"groups": {
18+
"type": "array",
19+
"description": "A group otherwise known as a ring, is a collection of hosts",
20+
"items": {
21+
"type": "array",
22+
"items": {
23+
"$ref": "#/definitions/Group"
24+
}
25+
}
26+
},
27+
"strategies": {
28+
"type": "array",
29+
"description": "A next hop selection strategy definition",
30+
"items": {
31+
"$ref": "#/definitions/Strategy"
32+
}
33+
}
34+
},
35+
"required": [
36+
"groups",
37+
"hosts",
38+
"strategies"
39+
],
40+
"title": "Trafficserver Strategies"
41+
},
42+
"Group": {
43+
"type": "object",
44+
"additionalProperties": false,
45+
"description": "A host member within a group or ring",
46+
"properties": {
47+
"host": {
48+
"type": "string",
49+
"description": "The hosts fully qualified hostname or IP address"
50+
},
51+
"protocol": {
52+
"type": "array",
53+
"description": "The set of protocols supported on this host",
54+
"items": {
55+
"$ref": "#/definitions/Protocol"
56+
}
57+
},
58+
"weight": {
59+
"type": "number",
60+
"description": "The optional weighting to apply for this host within a ring"
61+
}
62+
},
63+
"required": [
64+
"host",
65+
"protocol"
66+
],
67+
"title": "Group"
68+
},
69+
"Protocol": {
70+
"type": "object",
71+
"additionalProperties": false,
72+
"properties": {
73+
"scheme": {
74+
"$ref": "#/definitions/Scheme"
75+
},
76+
"port": {
77+
"type": "integer",
78+
"description": "the protocol port number",
79+
"minimum": 80,
80+
"maximum": 65534
81+
},
82+
"health_check_url": {
83+
"type": "string",
84+
"description": "the optional url that may be used for a health checking system",
85+
"format": "uri",
86+
"qt-uri-protocols": [
87+
"http",
88+
"https",
89+
"tcp"
90+
]
91+
}
92+
},
93+
"required": [
94+
"port",
95+
"scheme"
96+
],
97+
"title": "Protocol"
98+
},
99+
"Host": {
100+
"type": "object",
101+
"additionalProperties": false,
102+
"properties": {
103+
"host": {
104+
"type": "string",
105+
"description": "The fully qualified host name or IP address of the host"
106+
},
107+
"protocol": {
108+
"type": "array",
109+
"items": {
110+
"$ref": "#/definitions/Protocol"
111+
}
112+
}
113+
},
114+
"required": [
115+
"host",
116+
"protocol"
117+
],
118+
"title": "Host"
119+
},
120+
"Strategy": {
121+
"type": "object",
122+
"additionalProperties": false,
123+
"properties": {
124+
"strategy": {
125+
"type": "string",
126+
"description": "the name assigned to this strategy"
127+
},
128+
"policy": {
129+
"type": "string",
130+
"description": "the host selection algorithm for the strategy",
131+
"enum": [
132+
"rr_ip",
133+
"rr_strict",
134+
"first_live",
135+
"latched",
136+
"consistent_hash"
137+
]
138+
},
139+
"hash_key": {
140+
"type": "string",
141+
"description": "when using consistent_hash, this specifies the chosen key used for the hash",
142+
"enum": [
143+
"hostname",
144+
"path",
145+
"path+query",
146+
"path+fragment",
147+
"cache_key",
148+
"url"
149+
]
150+
},
151+
"go_direct": {
152+
"type": "boolean",
153+
"description": "wether, true/false, users of the strategy may bypass parents and go directly to the origin"
154+
},
155+
"parent_is_proxy": {
156+
"type": "boolean",
157+
"description": "all the hosts assigned to the strategy are all caching proxy servers"
158+
},
159+
"cache_peer_result": {
160+
"type": "boolean",
161+
"description": "cache or do not cache proxy peer responses when using a peering ring mode and consistent hashing"
162+
},
163+
"groups": {
164+
"type": "array",
165+
"description": "the groups of hosts assigned to the strategy",
166+
"items": {
167+
"type": "array",
168+
"items": {
169+
"$ref": "#/definitions/Group"
170+
}
171+
}
172+
},
173+
"scheme": {
174+
"$ref": "#/definitions/Scheme"
175+
},
176+
"failover": {
177+
"$ref": "#/definitions/Failover"
178+
}
179+
},
180+
"required": [
181+
"groups",
182+
"policy",
183+
"scheme",
184+
"strategy"
185+
],
186+
"title": "Strategy"
187+
},
188+
"Failover": {
189+
"type": "object",
190+
"description": "failover configuration for the strategy",
191+
"additionalProperties": false,
192+
"properties": {
193+
"max_simple_retries": {
194+
"type": "integer",
195+
"description": "the maximum number of retries for a transaction when using simple retry",
196+
"minimum": 0,
197+
"maximum": 5
198+
},
199+
"max_unavailable_retries": {
200+
"type": "integer",
201+
"description": "the maximum number of retries for a transaction when using unavailable server retry",
202+
"minimum": 0,
203+
"maximum": 5
204+
},
205+
"ring_mode": {
206+
"type": "string",
207+
"description": "the ring host selection mode",
208+
"enum": [
209+
"exhaust_ring",
210+
"alternate_ring",
211+
"peering_ring"
212+
]
213+
},
214+
"response_codes": {
215+
"type": "array",
216+
"description": "list of simple retry http response codes",
217+
"items": {
218+
"type": "integer",
219+
"minimum": 400,
220+
"maximum": 599
221+
}
222+
},
223+
"markdown_codes": {
224+
"type": "array",
225+
"description": "list of unavailable server retry http response codes",
226+
"items": {
227+
"type": "integer",
228+
"minimum": 400,
229+
"maximum": 599
230+
}
231+
},
232+
"health_check": {
233+
"type": "array",
234+
"description": "the health checking mode used for the strategy",
235+
"items": {
236+
"type": "string",
237+
"enum": [
238+
"active",
239+
"passive"
240+
]
241+
}
242+
}
243+
},
244+
"title": "Failover"
245+
},
246+
"Scheme": {
247+
"type": "string",
248+
"description": "the supported protocols used within the strategy",
249+
"enum": [
250+
"http",
251+
"https"
252+
],
253+
"title": "Scheme"
254+
}
255+
}
256+
}

configs/strategies.yaml.default

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,15 +95,24 @@
9595
# hash_key: hostname # optional key to use for Hashing. Enum of 'url' or 'uri' or 'hostname' or 'path' or 'path+query' or 'cache_key' or 'path+fragment'
9696
# go_direct: true # transactions may routed directly to the origin true/false default is true.
9797
# parent_is_proxy: false # next hop hosts are origin servers when set to 'false', defaults to true and indicates next hop hosts are ats cache's.
98+
# cache_peer_result: true # only used when the 'ring_mode' is set to 'peering_ring' and the policy is 'consistent_hash'. The default value is
99+
# true which means to always allow caching responses. When set to 'false' reponses received from peer hosts will not be
100+
# cached, only responses received from upstream parents or origins will be cached.
98101
# groups: # groups of hosts, these groups are used as rings in consistent hash and arrays of host groups for round_robin.
99102
# - *g1
100103
# - *g2
101104
# scheme: http
102105
# failover:
103106
# max_simple_retries: 2 # default is 1, indicates the maximum number of simple retries for the listed response codes.
104-
# ring_mode: exhaust_ring # enumerated as exhaust_ring or alternate_ring
107+
# ring_mode: exhaust_ring # enumerated as exhaust_ring, alternate_ring, or peering_ring
105108
# #1) in 'exhaust_ring' mode all the servers in a ring are exhausted before failing over to secondary ring
106109
# #2) in 'alternate_ring' mode causes the failover to another server in secondary ring.
110+
# #3) 'peering_ring' is implemented for only a policy of 'consistent_hash' and requires that the strategy
111+
# has two host groups defined. The first group is the 'peer' group of caches that also includes this host
112+
# itself. The second group is the 'upstream' group of caches. All parent host lookups are looked up from
113+
# the peer group using consistent hashing. If the resolved parent is "this" host, a new parent from the
114+
# upstream list using consistent hashing will be chosen instead. If any of the peer caches are
115+
# unreachable or timeout, a new parent is chosen from the upstream list for retries.
107116
# response_codes: # defines the responses codes for failover in exhaust_ring mode
108117
# - 404
109118
# - 502

configure.ac

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ AC_SUBST([build_number])
151151
#
152152
# Debug
153153
#
154-
155154
AC_MSG_CHECKING([whether to enable debugging])
156155
AC_ARG_ENABLE([debug],
157156
[AS_HELP_STRING([--enable-debug],[turn on debugging])],
@@ -168,6 +167,15 @@ AC_ARG_ENABLE([mime-sanity-check],
168167
)
169168
AC_MSG_RESULT([$enable_mime_sanity_check])
170169

170+
AC_MSG_CHECKING([whether to enable all asserts, a cheaper debug])
171+
AC_ARG_ENABLE([all-asserts],
172+
[AS_HELP_STRING([--enable-all-asserts],[turn on all code asserts, both debug and release])],
173+
[],
174+
[enable_all_asserts=no]
175+
)
176+
AC_MSG_RESULT([$enable_all_asserts])
177+
178+
171179
# Enable code coverage instrumentation only if requested by the user.
172180
AC_MSG_CHECKING([whether to code coverage])
173181
AC_ARG_ENABLE([coverage],
@@ -957,14 +965,18 @@ if test "x${enable_debug}" = "xyes"; then
957965
TS_ADDTO(AM_CFLAGS, [${cc_oflag_dbg}])
958966
TS_ADDTO(AM_CXXFLAGS, [${cxx_oflag_dbg}])
959967
TS_ADDTO(AM_CPPFLAGS, [-DDEBUG -D_DEBUG])
960-
if test "x${enable_mime_sanity_check}" = "xyes"; then
961-
TS_ADDTO(AM_CPPFLAGS, [-DENABLE_MIME_SANITY_CHECK])
962-
fi
963968
else
964969
TS_ADDTO(AM_CFLAGS, [${cc_oflag_opt}])
965970
TS_ADDTO(AM_CXXFLAGS, [${cxx_oflag_opt}])
966971
fi
967972

973+
if test "x${enable_mime_sanity_check}" = "xyes"; then
974+
TS_ADDTO(AM_CPPFLAGS, [-DENABLE_MIME_SANITY_CHECK])
975+
fi
976+
if test "x${enable_all_asserts}" = "xyes"; then
977+
TS_ADDTO(AM_CPPFLAGS, [-DENABLE_ALL_ASSERTS])
978+
fi
979+
968980
# Flags for ASAN
969981
if test "x${enable_asan}" = "xyes"; then
970982
if test "x${enable_tsan}" = "xyes" -o "x${enable_tsan}" = "xstatic"; then

doc/Pipfile

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,16 @@ verify_ssl = true
2222
[dev-packages]
2323

2424
[packages]
25-
sphinx = "*"
25+
26+
# The latest 4.x sphinx release, currently 4.0.2, fails `make html`. For
27+
# details, see: https://github.com/apache/trafficserver/issues/7938
28+
#
29+
# The 3.x releases build fine, however. So we currently pin to that.
30+
#
31+
# Once that issue, either with sphinx or our docs, is resolved, then we should
32+
# unpin sphinx by setting the following to "*".
33+
sphinx = "==3.*"
34+
2635
sphinx-rtd-theme = "*"
2736
sphinxcontrib-plantuml = "*"
2837
# i18n

doc/admin-guide/files/index.en.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,9 @@ Configuration Files
8686

8787
:doc:`volume.config.en`
8888
Defines cache space usage by individual protocols.
89+
90+
.. note::
91+
92+
Currently the YAML parsing library has a bug where line number counting
93+
(for error messages) ignores comment lines that start with **#**. A
94+
work-around is to put a space before the **#**.

0 commit comments

Comments
 (0)