trafficserver-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Ho ...@groupon.com>
Subject Re: ESI pages return Content-Length: 0 and empty entity body
Date Fri, 17 Aug 2012 23:14:18 GMT
Hi Kit,

Heh, I just stole the one that was checked in to the upstream repository
earlier this week:

wget -Oplugins/experimental/esi/Makefile.am
https://raw.github.com/apache/trafficserver/master/plugins/experimental/esi/Makefile.am
perl -pi.orig -e 's,experimental/lua,experimental/esi,' configure.ac
autoreconf -i
CFLAGS='-fPIC -Wno-deprecated' CXXFLAGS='-fPIC -Wno-deprecated' ./configure
(cd plugins/experimental/esi && make)

(The silly bit with Perl is because the default configure.ac in your fork
had also not yet been updated.) Note that I had to add -Wno-deprecated
because otherwise the -Wall resulted in some deprecation warnings.

I'll try this out and also give your Makefile a try (but you might want to
merge the upstream changes to the build system, it's nice that there's a
Makefile.am for esi now).

Humbly,

Andrew

--
Andrew Ho
Senior Software Developer
ho@groupon.com



On Fri, Aug 17, 2012 at 3:49 PM, Shu Kit Chan <chanshukit@gmail.com> wrote:

> Just added the Makefile I use.
> You can try it out. It is nothing fancy. A pretty simple one.
>
> On Fri, Aug 17, 2012 at 3:09 PM, Andrew Ho <ho@groupon.com> wrote:
> > Hi Kit,
> >
> > Thanks for your quick response. I had come across your blog entries and
> > previous mailing list posts and they were quite useful for me so far.
> >
> > I noticed that there is neither a Makefile nor a Makefile.am in your
> > repository. How do you usually build the plugin from source?
> >
> >
> > Humbly,
> >
> > Andrew
> >
> > --
> > Andrew Ho
> > Senior Software Developer
> > ho@groupon.com
> >
> >
> >
> > On Fri, Aug 17, 2012 at 1:31 PM, Shu Kit Chan <chanshukit@gmail.com>
> wrote:
> >>
> >> The current latest on git is still "experimental".
> >> I have made a bunch of fixes which James Peach is helping me to verify.
> >> The conversation can be found here -
> >> https://issues.apache.org/jira/browse/TS-1249
> >>
> >> If you really want to try, you can try to compile the forked version I
> >> have.
> >>
> >>
> https://github.com/shukitchan/trafficserver/tree/master/plugins/experimental/esi
> >> and i hope it should work for you.
> >>
> >> It is at least working quite well for me.
> >>
> >> Thanks.
> >>
> >> Kit
> >>
> >>
> >> On Fri, Aug 17, 2012 at 12:42 PM, Andrew Ho <ho@groupon.com> wrote:
> >> > Hi Traffic Server users,
> >> >
> >> > I can't seem to get ESIs working on Traffic Server. When I request an
> >> > ESI
> >> > enabled page, I get a 200 OK status, but "Content-Length: 0" and an
> >> > empty
> >> > entity body. There is no evidence on the origin server side that the
> ESI
> >> > sub-pages were ever loaded. Does this symptom sound familiar to
> anybody?
> >> >
> >> > The gory details follow...
> >> >
> >> > I am using Traffic Server version 3.2.0 (Linux distribution is CentOS
> >> > 5.4,
> >> > and the test hosts are in Amazon EC2):
> >> >
> >> > % traffic_server --version
> >> > [TrafficServer] using root directory '/usr/local'
> >> > Apache Traffic Server - traffic_server - 3.2.0 - (build # 7719 on Aug
>  7
> >> > 2012 at 19:06:21)
> >> >
> >> > The ESI plugin I built was from commit 025cd279 of repository version:
> >> > https://git-wip-us.apache.org/repos/asf/trafficserver.git/
> >> >
> >> > The following are the configuration changes I enacted to the defaults.
> >> > In
> >> > plugin.config, I added this line to enable the ESI plugin:
> >> >
> >> > esi.so
> >> >
> >> > In records.config, I added these lines to enable debug logging:
> >> >
> >> > CONFIG proxy.config.diags.debug.enabled INT 1
> >> > CONFIG proxy.config.diags.debug.tags STRING plugin_esi_intercept*
> >> >
> >> > In remap.config, I added this line to add an origin server:
> >> >
> >> > map / http://dev1.test/~ho/proxied
> >> >
> >> > dev1.test is an internal development host which runs a vanilla Apache
> >> > HTTPD
> >> > configured to serve up content from ~/public_html directories. In
> >> > dev1.test:~ho/public_html/proxied, I have a couple CGI scripts
> >> > (snippet.cgi
> >> > emits a bare HTML fragment, esi.cgi emits an "X-Esi: 1" header and an
> >> > HTML
> >> > document that includes snippet.cgi with a fully-qualified URL):
> >> >
> >> > % cat ~ho/public_html/proxied/snippet.cgi
> >> > #!/usr/local/bin/perl
> >> >
> >> > my $body = <<'EndHTML';
> >> > <p>This is <tt>dev1.test:~ho/public_html/proxied/snippet.cgi</tt>.</p>
> >> > EndHTML
> >> >
> >> > print "Content-Type: text/html\n",
> >> >       "Content-Length: ", length($body), "\n",
> >> >       "\n",
> >> >       $body;
> >> >
> >> > % cat ~ho/public_html/proxied/esi.cgi
> >> > #!/usr/local/bin/perl
> >> >
> >> > my $body = <<'EndHTML';
> >> > <html>
> >> >  <head>
> >> >   <title>ESI test</title>
> >> >  </head>
> >> >  <body>
> >> >   <p>This is <tt>dev1.test:~ho/public_html/proxied/esi.cgi</tt>.</p>
> >> >   <esi:include src="http://dev1.test/~ho/snippet.cgi"
> >> > onerror="continue"/>
> >> >  </body>
> >> > </html>
> >> > EndHTML
> >> >
> >> > print "Content-Type: text/html\n",
> >> >       "Content-Length: ", length($body), "\n",
> >> >       "X-Esi: 1\n",
> >> >       "\n",
> >> >       $body;
> >> >
> >> > From the host running Traffic server, I can definitely load those
> URLs:
> >> >
> >> > % curl -si http://dev1/~ho/proxied/snippet.cgi
> >> > HTTP/1.1 200 OK
> >> > Date: Fri, 17 Aug 2012 19:24:20 GMT
> >> > Server: Apache/2.2.17
> >> > Content-Length: 71
> >> > Content-Type: text/html
> >> >
> >> > <p>This is <tt>dev1.test:~ho/public_html/proxied/snippet.cgi</tt>.</p>
> >> >
> >> > % curl -si http://dev1/~ho/proxied/esi.cgi
> >> > HTTP/1.1 200 OK
> >> > Date: Fri, 17 Aug 2012 19:24:22 GMT
> >> > Server: Apache/2.2.17
> >> > X-Esi: 1
> >> > Content-Length: 219
> >> > Content-Type: text/html
> >> >
> >> > <html>
> >> >  <head>
> >> >   <title>ESI test</title>
> >> >  </head>
> >> >  <body>
> >> >   <p>This is <tt>dev1.test:~ho/public_html/proxied/esi.cgi</tt>.</p>
> >> >   <esi:include src="http://dev1.test/~ho/snippet.cgi"
> >> > onerror="continue"/>
> >> >  </body>
> >> > </html>
> >> >
> >> > And when I issue requests on the hosts running Traffic Server, reverse
> >> > proxying is generally working, as I can load snippet.cgi:
> >> >
> >> > % curl -si http://localhost:8080/snippet.cgi
> >> > HTTP/1.1 200 OK
> >> > Date: Fri, 17 Aug 2012 19:24:55 GMT
> >> > Server: ATS/3.2.0
> >> > Content-Length: 71
> >> > Content-Type: text/html
> >> > Age: 0
> >> > Connection: keep-alive
> >> >
> >> > <p>This is <tt>dev1.test:~ho/public_html/proxied/snippet.cgi</tt>.</p>
> >> >
> >> > However, I get a "Content-Length: 0" and an empty entity body on the
> ESI
> >> > enabled request to esi.cgi (despite a 200 OK status!):
> >> >
> >> > % curl -si http://localhost:8080/esi.cgi
> >> > HTTP/1.1 200 OK
> >> > Date: Fri, 17 Aug 2012 19:25:15 GMT
> >> > Server: ATS/3.2.0
> >> > Content-Type: text/html
> >> > Content-Length: 0
> >> > Connection: keep-alive
> >> >
> >> >
> >> > Here is the logging information captured in traffic.out for that
> >> > request:
> >> >
> >> > [Aug 17 15:30:14.029] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [setupServerIntercept] Setup server intercept successfully
> >> > [Aug 17 15:30:14.029] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [serverIntercept] Received net accept event
> >> > [Aug 17 15:30:14.029] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [init] ContData initialized!
> >> > [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [serverIntercept] Received read ready event
> >> > [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [handleRead] Parsed header
> >> > [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [handleRead] Got content length as 257
> >> > [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [serverIntercept] Received read ready event
> >> > [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [handleRead] Appending 356 bytes to body
> >> > [Aug 17 15:30:14.030] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [handleRead] Appending 257 bytes to body
> >> > [Aug 17 15:30:44.030] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [serverIntercept] Received read complete/eos event 104
> >> > [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [processRequest] Wrote reply of size 761
> >> > [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [serverIntercept] Processed request successfully
> >> > [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [serverIntercept] Completed request processing. Shutting down...
> >> > [Aug 17 15:30:44.031] Server {0x2b895be76040} DIAG:
> >> > (plugin_esi_intercept)
> >> > [~ContData] Destroying continuation data
> >> >
> >> > On the server side, I only see the single request for esi.cgi (and not
> >> > for
> >> > snippet.cgi):
> >> >
> >> > 6071 dev1 x.x.x.x - - [17/Aug/2012:15:30:13 -0400] "GET
> >> > /~ho/proxied/esi.cgi
> >> > HTTP/1.1" 200 219 "-" "-" 193 354 5083
> >> >
> >> > We are evaluating Traffic Server specifically for ESI support, so this
> >> > bug
> >> > is quite a blocker for me. I've tried a few different things based on
> >> > searching the Traffic Server mailing list in the past (for example, I
> >> > made
> >> > sure deflate was disabled on the origin server), and now I'm stuck.
> Does
> >> > anybody know what is going on, or can someone suggest a next idea for
> me
> >> > to
> >> > debug the problem? Thanks!
> >> >
> >> > Humbly,
> >> >
> >> > Andrew
> >> >
> >> > --
> >> > Andrew Ho
> >> > Senior Software Developer
> >> > ho@groupon.com
> >> >
> >
> >
>

Mime
View raw message