Libswoc (https://github.com/solidwallofcode/libswoc), "Solid Wall Of C++"
library, is a collection of C++ utility classes. They are based on existing ATS
core classes, except for Lexicon. Documentation is available here -
http://docs.solidwallofcode.com/libswoc.
The correspondence is
I would like to propose a change to how TS handles unresponsive upstream
destinations. The current logic is
* If there is a round robin, skip elements that are down.
* Attempt to connect.
* If the connect fails, and the upstream is marked down and within the down
server cache time, restrict the
Given the lack of objection, I will consider this accepted and have Walt
proceed with implementation.
In the current documentation is the C API function TSIOBufferReaderRead which
reads from an IOBufferReader in to a fixed buffer, the dual of
TSIOBufferWriter. This function is not actually implemented which has caused
some consternation. In working on providing an implementation, I came across
I've been looking at how to do the RPC replacement that was agreed on at Cork.
After looking at grpc, Avro, and Thrift, I don't like any of them for our use
case. I've moved to the camp that says we should build our own thin wrapper
around YAML messages, very similar to a REST style API. We do
I've written up some of my notes and thoughts on hash containers and how to
proceed here - https://solidwallofcode.github.io/notes/hash-table.en.html
Please respond to this email string if you have comments of your own.
Oath has developed an internal patch for our 7.1.x fork which removes cluster
support. This is effectively a back port of changes that are already on master.
The question is whether it would be OK to submit as a backport to 7.1.3. It's
fairly large but it should make backporting from master to
This came up with issues #2380 and #2388 and PR #2783. I had been waiting for
some internal feedback on my proposal but since this is now active I am sending
in my API proposal for attaching plugin data to NetVConnections (TSVConn).
Susan fixed this in PR 2291.
> You should be able to see the attempted compile output in one of the streams,
> such as .../_tmp_tls_hooks_tls_hooks_ts/streamm.all.txt, which should provide
> an indication of the reason for the failure. I know there have been some
> problems involving the flags
You should be able to see the attempted compile output in one of the streams,
such as .../_tmp_tls_hooks_tls_hooks_ts/streamm.all.txt, which should provide
an indication of the reason for the failure. I know there have been some
problems involving the flags stored in tsxs which you could be
For full up plugin testing we (Yahoo!) are using the AUTest framework. In fact
there are already plugin based tests checked in to master (see
tests/gold_tests/pluginTests/header_rewrite for an example). I think that is
fine for testing the plugin in situ and we should adopt it as our preferred
Yes, it looks like it should clean up after itself but apparently isn't. I'd
try putting a debug message in the destructor and verify it at least is getting
called. I haven't looked at that code myself unfortunately.
> Hi,
> The motivation for my question is because I am seeing a small leak in
Last week a small group gathered to talk about various technical issues in
Traffic Server with a strong focus on "upstream selection" which is currently
handled by various mechanisms such as parent selection and CARP. These are the
notes from that meeting. As usual, nothing was actually decided
Any chance we can change TSPLuginRegistrationInfo to have (char const*) instead
of (char*)? The latter has never made sense.
My view is the SSN hooks should be called on the user agent connect /
disconnect, the base client session object. That would mean that for an Http/2
session, the SSN hook is called only when the user agent initially connects for
HTTP/2 and once when the HTTP/2 connect is terminated, and *not*
Based on some discussions here at the summit, we would like to add the ability
for the core to report certain error conditions to plugins. We have at least
one use case where it is critical to be able to distinguish different causes
for a 502 error (origin server down, cache write lock missed,
Based on some discussions here at the summit, we would like to add the ability
for the core to report certain error conditions to plugins. We have at least
one use case where it is critical to be able to distinguish different causes
for a 502 error (origin server down, cache write lock missed,
This is in response to discussions on IRC and TS-3426. This would replace all
of the current API functions to control cacheability.
TSHttpTxnCacheablility
==
Synopsis
`#include ts/ts.h`
.. c:function:: TSHttpCacheability TSHttpTxnCacheabilityGet(TSHttpTxn
+1 for starting the removal of this experimental API. The group using the
redirect logic are also using 3.2.X so they're going to have to do a real
upgrade regardless.
I wonder if it was meant to be e-hits = 1; - that would almost make sense
with the comment.
Tuesday, January 20, 2015, 10:00:40 PM, you wrote:
Hi all,
I have a question about the tick function of RamCacheCLFUS, the code is :
..
e-hits = 1;
if (e-hits) {
e-hits =
Friday, January 16, 2015, 12:17:35 PM, you wrote:
Yeh +1 from me on not firing TXN_START unless it's really HTTP. Though, maybe
the right approach is to keep the current event timing, but only fire
TXN_START on HTTP ports?
We still want to fire that event on HTTP transactions on SSL ports
We had a discussion on the IRC about how to handle tracking for fixes based on
Coverity discovered issues. The general consensus was that we want some level
of tracking but (1) having a JIRA ticket per fix was too much and (2) having a
single JIRA ticket (e.g. TS-1475) was too little.
Apache Traffic Server v5.1.2 Released
The Apache Software Foundation and the Apache Traffic Server project are
pleased to announce the release of Apache Traffic Server v5.1.2! This is our
latest stable release, and is immediately available for download at:
+1
[VOTE] Release Apache Traffic Server 5.1.2 (RC0)
Hello All,
Sorry for the delays but we have a release candidate for 5.1.2 ready now. This
is primarily to address a potential
security issue. Upgrading from 5.1.x should be trivial.
Changes since 5.1.1:
TS-3223 - Internal buffer sizing issue
We seems to have a number of superfluous APIs for following redirects. Would
anyone object to removing the following APIs in 6.0:
TSRedirectUrlSet
TSRedirectUrlGet
TSHttpTxnRedirectRequest
Yes. I have at least two (former) clients who are using TSRedirectUrlSet() to
OK, I'm confused. In chat you said it was today (Wed) but this email says
Thursday. Please clarify :-).
Tuesday, November 18, 2014, 2:35:03 PM, you wrote:
Hi guys,
I've booked a room at 2:30pm pacific at Yahoo's campus here -
http://yhoo.it/1xMUa5d. When you arrive please park in guest
Yes. I looked at the code a bit last night and it would possible, but
difficult, to return a parse fail value from that logic because of how is used.
As Cynthia noted, the fundamental problem is the HOST field is not checked for
validity during the initial request parsing and after that, the
On a semi-related topic, we are seeing the use of various features that require
(1) a lot of values and (2) would be nice to be able to do from the API.
TSNetAccept and TSNetConnect being two excellent examples.
I see two approaches
1) Have a micro-DSL that describes the options, in the proxy
We are simply incapable of doing anything in a simple way.
I see James' point but I disagree with his implementation.
I would recommend setting the refcount to 1 on allocate and doing just
if (mutextp-refcount_dec() == 0) {
mutextp-free();
Monday, November 3, 2014, 2:57:00 PM, you wrote:
This change is part of TS-2683 - I will try to update the CHANGES file
with a consolidated list of changes made for TS-2683. Will that work?
If you could, also put the commit SHA in a comment on the ticket. That's very
useful later on. This
Monday, November 3, 2014, 8:09:07 AM, you wrote:
I was surprised and disappointed in the result:
http://pgp.cs.uu.nl/mk_path.cgi?FROM=B87F79A9TO=94D96DE2PATHS=trust+paths
That service seems not to find AMC's key on the keyserver
and so cannot establish trust paths. I am able to establish
Apache Traffic Server v5.1.1 Released
The Apache Software Foundation and the Apache Traffic Server project are
pleased to announce the release of Apache Traffic Server v5.1.1! This is our
latest stable release, and is immediately available for download at:
Checking my various installs, all of this seems normal. The question I would
have for Bill is how traffic_server.stdout became owned by root - chown is a
privileged operation so if the script wasn't running as root, how did that get
done?
The trafficserver script should always be run as root.
Thursday, October 9, 2014, 10:39:01 PM, you wrote:
On Oct 9, 2014, at 6:08 PM, Shu Kit Chan chanshu...@gmail.com wrote:
It seems to be similar to this jira ticket -
https://issues.apache.org/jira/browse/TS-1463
Yeah, Kit is spot on. This is a known problem with the plugin, and it’s an
Tuesday, October 7, 2014, 11:25:22 AM, you wrote:
Hi,
my proxy receive requests for localhost (127.0.0.1:), how can I deny
access to local resources?
Would a remap rule work? That is, remap all requests to localhost to an error
page.
Saturday, October 4, 2014, 10:57:27 AM, you wrote:
Make one of your public include files autoconf generated? Like we do for the
C APIs definitions file.
Close, but I think what would be better is to combine this with Brian's
original thought.
So in Brian's shared pointer header, he has
Monday, October 6, 2014, 4:51:12 AM, you wrote:
- Requests to URI /a are cached
- If condition x matched, requests to /a must bypass the cache and served
from
the origin without putting the response into the cache
Look TSHttpTxnServerRespNoStoreSet().
Monday, September 29, 2014, 4:21:02 PM, you wrote:
At some point would be it worthwhile to go through the least privilege
exercise on traffic_manager too? For example, I assume that traffic_manager
would not need DAC override privilege.
I expect that traffic_manager would retain
Sunday, September 28, 2014, 8:10:04 PM, you wrote:
Hi,
The problem is not the delimiter (space or comma) and it is the keyword
tr-full.
In addition to traffic.out, there are the files diags.log and error.log in
the same directory. You should check them for errors.
The most likely case is
Wednesday, September 24, 2014, 5:28:02 PM, you wrote:
OS X and RHEL 5 both have Bison 2.3 (also the error message is now misleading
because I did not --enable-wccp)
I changed this by committing the generated files and tweaking the TsConfig make
file to depend on those where the Bison/Flex
I have been working with a problem where ATS adherence to the HTTP spec is
causing a client to break.
The issue is propagating header fields on a conditional response. What ATS does
it strip all but a few select headers when returning a 304 response to the
client. There are two scenarios of
Sunday, September 21, 2014, 6:37:51 PM, you wrote:
So, I guess I don't understand why TSVConnTunnelToAddr is not useful? Could
you elaborate?
I, personally, just don't like it. I think the general use case will be to
simply tunnel without changing the server address, and since you can't
Friday, September 19, 2014, 10:12:29 AM, you wrote:
+ sni_servername.release(); // otherwise we'll free the source string.
Why don't you want to free the source string in this case?
Because it's still in the source object and therefore it would be freed again
at some point in the
TSHttpHdrHostGet
==
Synopsis
`#include ts/ts.h`
.. c:function:: const char* TSHttpHdrHostGet(TSMBuffer bufp, TSMLoc offset, int
*length)
Description
---
Get the host for the request. :arg:`bufp` and :arg:`offset` must reference an
HTTP request header. A
Apache Traffic Server v5.1.0 Released
The Apache Software Foundation and the Apache Traffic Server project are
pleased to announce the release of Apache Traffic Server v5.1.0! This is our
latest stable release, and is immediately available for download at:
Hello All,
Due to issue with building OmniOS, we had to respin the release candidate. This
is RC1. It should be functionally the same, the changes were renaming
equivalent types and changes to include file ordering.
Changes since 5.0.0:
Sorry for the error, the vote will be open until Tuesday, 16 Sep 2014.
Hello All,
Sorry for the delays but we have a release candidate for 5.1.0 ready now.
Changes since 5.0.0:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310963version=12324894
A summary of the new features are here:
Tuesday, September 2, 2014, 3:04:55 AM, you wrote:
How does ATS manage the expired objecs? If an object has expired/removed , I
assume allocated space for it can later be used by other objects.
ATS doesn't have allocated space in the cache. It's a circular buffer. All
objects, including
Rasim,
Monday, September 1, 2014, 10:22:06 AM, you wrote:
Looks like it is not feasible/possible to remove URL hash map solution
completely.. However, storage optimization was another topic in our mind,
which content hash can save the day. We are thinking this can be a nice
feature if
Luca,
Monday, September 1, 2014, 1:49:13 PM, you wrote:
You can also choose to store it in cache and delete dupe in a second moment.
You could, but once you've written to cache, you have advanced the write
cursor. Deleting the duplicate later has no effect except changing a directory
entry.
Well, it would definitely be possible to store an indirection object to
implement Bill's idea. The URL is used to do a lookup and the object that is
returned is a forwarding header, which then causes another lookup. Basically
it's a form of remap for the cache, using the cache itself to store
+1
We are currently blocked by one bug, TS-3022, which involves a double free for
the OCSP support. I've spent a couple of day looking at the code and trying to
replicate the problem but have not made any progress. I've checked with another
major user who has enabled this and they have not seen
Igor,
I'm using the TSSslVConn to cache a pointer to the global cert table
(loaded from ssl_multicert.config). Since in theory the
ssl_multicert.config could be reloaded at any point, we acquire() a copy
does this mean we would now support reloading of the ssl config w/o restart?
No. It
All;
I have created the 5.1.x branch. This is in preparation for the 5.1.0 release
of Traffic Server. All commits to this branch must be explicitly approved by
the Release Manager (amc). If you have something you really need to get in to
5.1.0, fix it on master first and then ask to have that
Adam,
adace@mound:~/Src/apache/trafficserver git checkout 5.1.x
Branch 5.1.x set up to track remote branch 5.1.x from origin.
Switched to a new branch '5.1.x'
adace@mound:~/Src/apache/trafficserver
Does that sound right?
Yes.
All;
I forgot to note that as part of the last triage a number of bugs were moved
from 5.1.0 to 5.2.0 because of the lack of an available patch. If one of these
was yours, you will need to work on it on master for 5.2.0 and explicitly
request a back port to 5.1.0.
James,
I can answer a few of these.
Thanks for the docs, this looks very promising. When you are ready to submit
patches, this will need API review
https://cwiki.apache.org/confluence/display/TS/API+Review+Process.
Actually, Susan forgot to mention that you can review the code at
I think there are two reasonable approaches -
1) Iterator style. In this case we either create a new iterator type or re-use
the FieldHandle as an iterator. In this case you get a handle to the first
field, and then re-use it for each field. This saves the expense of allocating
a new handle
This came up yesterday on the IRC. The problem is that every call to
TSMimeHdrFieldNext allocates a MIME field handle which gets very slow if you
use the function heavily. One suggested approach was to switch the allocator
from a global to a per thread.
I think it might be better to add
Leif,
Is the goal here to iterate over all headers? If so, maybe some sort of
iterator functionality would be more appropriate, similar to how we added the
iterator (with a callback) for lib records (i.e. TSRecordDump() )? Can that
help simplifying / improve such operations?
If you added
Leif,
But if the goal is to always iterate over all headers, I’m guessing (but not
sure?) that it could be done more efficiently with an API that assumes so ?
But alas, I don’t know what the use case here is, I’ve yet to see one where
iterating over all headers is required (you usually
All;
It's getting close to time for beginning the 5.1 release cycle. I would like to
close it out on Monday, 18 Aug. If this is an issue let me know ASAP. Thanks.
James,
Friday, July 25, 2014, 3:59:18 PM, you wrote:
Still reviewing, but I wish this had been a number of smaller patches. For
example, const'ing the MD5 stuff and adding ~PluginIdentity() could have been
independent patches ...
Yes, the ~PluginIdentity() is a leak from some other work I
As part of TS-2362 (Cache backwards compatibility) I must be able to switch the
URL hashing at run time. Some release after 3.2 changed the URL from MMH to MD5
so it must be switched back to be compatible but not if there are no old cache
stripes. There has also been a pending desire for other
I would like to note that another purpose of the FQDN change is to provide
better encapsulation for server session management with an eye to future work
in making that more accessible to plugins and other core code.
Theo,
Sunday, July 20, 2014, 11:19:11 AM, you wrote:
Any reason to not simply use ck_hs and ck_ht from concurrency kit? That was
one of the points of looking at that library.
On Jul 19, 2014 11:33 PM, Alan M. Carroll a...@network-geographics.com
wrote:
Only administrative reasons
Based on work trying to clean up Coverity issues, we have run in to pattern
that looks like this
X x = alloc_some_resource();
if (! cond1) { Log(error); destroy(x); return FAIL; }
if (! cond2) { Log(error); destroy(x); return FAIL; }
// ... etc ...
return x;
The problem is that frequently
Nick,
You should talk to Brian G. He had a bug last month in transform that looked a
lot like this. See TS-2820.
https://issues.apache.org/jira/browse/TS-2820
Tuesday, June 17, 2014, 11:16:35 AM, you wrote:
There's a common idiom in /plugins/ and /examples/.
Where a plugin uses a
James,
The correct syntax for referring to function arguments is :c:arg:`foo`
Except sockaddr in this case is not a functiona argument, it is a type. The
argument is addr.
:data:`NULL`
WARNING: py:data reference target not found: NULL
I would argue against using constructs that generate
James,
Monday, June 9, 2014, 10:44:15 AM, you wrote:
:data:`NULL`
WARNING: py:data reference target not found: NULL
Weird, that's used in other places. Does :c:data:`NULL` generate an error too?
Yes, I get dozens of messages from that every time I build the docs.
SPDY never makes the
James,
Monday, May 26, 2014, 9:19:27 PM, you wrote:
Hi Alan,
So AFAICT this is not a true superset of the TSClientProtoStack API. FWIW, I
also think that removing that API should have been reviewed.
This proposal is not intended as a replacement for TSClientProtoStack, but to
solve a
James,
Monday, May 26, 2014, 8:00:59 PM, you wrote:
Where is proxy.process.spdy.total_streams decremented?
I don't think it is - it is counting the total number of streams, which can
only increase. The ACTIVE variants count the number of objects currently
extant. This is parallel to things
TSHttpConnectWithPluginID
=
Allows the plugin to initiate an http connection. This will tag the HTTP state
machine with extra data that can be accessed by the logging interface.
Synopsis
`#include ts/ts.h`
.. c:function:: TSVConn
William,
I've thought about that. I think this is at the limits of what I this is
reasonable for argument lists. If we want more (and we would want at least
transparency) I would rather go with an options structure which can contain a
much larger number of options. This is a bit ugly in C, but
James,
+# if TS_HAS_SPDY
+extern int spdy_config_load ();
+spdy_config_load(); // must be before HttpProxyPort init.
+# endif
This seems really fragile, is it going to stay, or do you have a plan to
remove it?
That's the way everything else is initialized, a specific method is
James,
I still don't understand this focus on client session chaining. AFAICT there
is no client session chaining other than an implementation detail in the
current SPDY implementation. I don't see how client session is a general
concept at all.
In order to do other things (such as
James,
Monday, May 19, 2014, 7:45:29 PM, you wrote:
I will bow out of the naming issue just do whatever the consensus is.
The default value of 1000 is *huge*. 10 would be better IMHO.
1000 was the existing hardwired value.
We should not be adding more default entries to records.config; the
Hmmm, is that always going to be the case? I’d imagine that we (long term)
support the following types of sessions:
I think it will be. In fact, I would argue that the possible future
proliferation of session mixing is another reason to have a SPDY client
session, so that we can have a
I've been thinking about some of the SPDY issues that have come up and have a
couple of ideas.
First, the SPDY SM is really a client session. It handles input from a client
socket and drives the transactions through the system, without interacting
(directly) with any of the origin servers or
Phil,
+1. Works in local testing and in some field deployments.
Brendan,
This might be TS-2564. I'm currently investigating another crash that seems
related.
+1
I'd like to propose that we pull libck into our tree and use it to replace
some of our stuff like the freelist, ink_atomic_list and hash tables.
http://concurrencykit.org/
Right now there are not enough distro's to make just linking against system
libs feasible, but I'd like to set it
+1
Given the nature of ATS and its focus exclusively on high performance
environments, I suggest we throw off the bonds of 32bit support going
forward. I’m unaware of anyone running ATS on 32bit systems or developing
ATS on 32bit systems.
I propose removing 32bit support in Apache
Jean,
Please look at TS-2564. Also, the traffic.out logfile should have more details
on the crash.
Wednesday, April 9, 2014, 2:25:57 AM, you wrote:
Hello,
I tried to upgrade a 2 server's cluster from ATS 4.0.2 to 4.2.0.
Everything is fine on one server when to other one keeps crashing with
Wednesday, April 9, 2014, 11:18:28 AM, you wrote:
As per documentation of ATS, it says raw disk performance is better than
formatted disk.
I verified page load performance . it degrades page load time with raw disk.
During my test, I mentioned path of raw disk partition in storage.config
Thursday, March 20, 2014, 1:28:45 PM, you wrote:
So when ATS receives a regex purge request, it must scan the disk for each
and every object in order to retrieve it's URL and compare it to the
pattern being searched. Is this assumption correct?
Yes.
Are our assumptions correct? If so, is
I'm still researching the presence bits but as far as I can tell so far they
should be written and read from the cache. There may be some alignment issues
but I don't see how can happen and not scrozzle the rest of the HdrHeap. I need
to trace through a bit more and see if it's possibly a
This is ready for initial review. This is an alpha, which means it compiles and
works on my magic dev box. However, this is a sufficiently major code change
that I would like some review.
A few key points:
1) This effectively reverts TS-1925 because, it turns out, 3.2.X used the MMH
hash for
Thursday, January 30, 2014, 12:24:43 PM, you wrote:
https://code.google.com/p/cpp-btree/
I personally need this because it implements an ordered set where all our
hash table implementations are obviously unordered.
Have you looked at the red/black tree implementation in lib/ts/IpMap.h?
, January 30, 2014, 12:43:22 PM, you wrote:
On Thu, Jan 30, 2014 at 11:39 AM, Alan M. Carroll
a...@network-geographics.com wrote:
Thursday, January 30, 2014, 12:24:43 PM, you wrote
https://code.google.com/p/cpp-btree/
I personally need this because it implements an ordered set where all our
I am working on adding a couple of configuration variables and have run in to
the problem of sharing enumerations between the plugin API and the internals.
As far as I can tell this is currently done in one of two ways:
1) Use straight numeric values (e.g. if (share_server_session == 2))
2)
Tuesday, January 21, 2014, 6:01:17 AM, you wrote:
Hi,
I implemented a solution for HTTP Upgrade in ATS under Seamless Access SW (a
Mobixell product).
We'll be happy to contribute with the solution but I don't know what the
procedure is.
I can take point on that. Do you have access to
I am working on command line access to the state of physical storage in the
cache. Currently the interface looks like
traffic_line --device /dev/sdb --cmd offline
The --device must match a path in storage.config and if so, that physical
device is marked offline as if it had failed. I'm in the
Wednesday, December 18, 2013, 4:51:31 PM, you wrote:
- where does the original Content-Length header come from?
The cached response header.
Or the upstream response - right?
Will the first plugin transform receive the original CL + the 'range
transformed' CL?
Well, the range transform is
Tuesday, December 10, 2013, 10:29:36 PM, you wrote:
On Dec 9, 2013, at 2:53 PM, Alan M. Carroll a...@network-geographics.com
wrote:
I've been failing at solving the range transform issue for quite a while. I
think now we need to do something a little bit bigger to make it work
correctly
https://cwiki.apache.org/confluence/display/TS/Transform+Plugin+Content+Length+Control
I read the proposal and found it very reasonable. Better yet, it
sounds like it could be possible to make this API/ABI compatible.
I think 4.2.X seems reasonable, although I will try for 4.1.X.
I've been failing at solving the range transform issue for quite a while. I
think now we need to do something a little bit bigger to make it work correctly
and I have outlined that as an API proposal in the wiki.
1 - 100 of 255 matches
Mail list logo