Project

General

Profile

Actions

Bug #15940

closed

503 header send for pdf page versions, and more

Added by old_saruman over 18 years ago. Updated over 18 years ago.

Status:
Closed
Priority:
Must have
Category:
Communication
Target version:
-
Start date:
2006-03-29
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
4.0
PHP Version:
4
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

if you do not disable caching for the pdf-version page type in ts. a 503 header is send and no pdf is show ->browsers shows nothing. but i also could not discover an entry in any of the cache tables? something similar is descript in the german newsgroup 'Error 503 mit TYPO3 4.0 RC2 auf 1und1' for a redirect after a ve_guestbook entry.
on trying to debug this i got lost in the T3 caching universe ... sorry. maybe the FF extension 'tamper data' can help someone debug this. it shows all send headers on page calls.

setup to reproduce

os: debian
rc2
ext: pdf_generator 3.3.0

(issue imported from #M3049)


Related issues 1 (0 open1 closed)

Is duplicate of TYPO3 Core - Bug #16004: Header 503 without the "Page is being generated" messageClosedDmitry Dulepov2006-04-07

Actions
Actions #1

Updated by Ingmar Schlecht over 18 years ago

This means that the new feature Dmitry implemented, i.e. throwing 503-headers when the "page is being generated" message is displayed has a bug, because it throws the 503-header also in cases where it should not be thrown.

Someone else on the German mailinglist had the same problem, but could unfortunately not provide further details.

cheers,
Ingmar

Actions #2

Updated by Dmitry Dulepov over 18 years ago

It means that page is NOT generated properly by typo3.

"503" temporary content is placed to the cache only until proper content is returned by pagegen script. Then "503" is removed.

I will take a look at it. Since it works with normal pages, my initial assumption is that pdf generator is not doing something. I can be wrong of course...

Actions #3

Updated by Can Yavuz over 18 years ago

The same problem occurs with tt_news, when you included it via TypoScript on every page (through a template marker or something) and disallowed the caching of the extension with "plugin.tt_news.allowCaching = 0". Then TYPO3 sends on every page call the 503 header.

Actions #4

Updated by Dmitry Dulepov over 18 years ago

Can Yavuz, thanks, this helps a lot!

Actions #5

Updated by Dmitry Dulepov over 18 years ago

Could not reproduce it with pdf_generator. Here is debug output from wget:

dima@BIGBRO:~/tmp/htmldoc-1.8.25> wget -d -O out.pdf "http://typo3w/index.php?id=1&type=123" 
Setting --output-document (outputdocument) to out.pdf
DEBUG output created by Wget 1.10.1 on linux-gnu.

--16:35:45--  http://typo3w/index.php?id=1&type=123
           => `out.pdf'
Resolving typo3w... 127.0.0.1
Caching typo3w => 127.0.0.1
Connecting to typo3w|127.0.0.1|:80... connected.
Created socket 4.
Releasing 0x08088f28 (new refcount 1).

---request begin---
GET /index.php?id=1&type=123 HTTP/1.0
User-Agent: Wget/1.10.1
Accept: */*
Host: typo3w
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Date: Sun, 02 Apr 2006 13:35:45 GMT
Server: Apache/2.2.0 (Unix) mod_ssl/2.2.0 OpenSSL/0.9.8a DAV/2 PHP/4.4.1 mod_apreq2-20050712/2.1.3-dev mod_perl/2.0.2 Perl/v5.8.7
X-Powered-By: PHP/4.4.1
Set-Cookie: fe_typo_user=c22936256f; path=/
Content-Disposition: inline
Cache-control: private
Connection: Keep-Alive, Keep-Alive
Content-Length: 713445
Keep-Alive: timeout=5, max=100
Content-Type: application/pdf

---response end---
200 OK
Registered socket 4 for persistent reuse.

Stored cookie typo3w -1 (ANY) / <session> <insecure> [expiry none] fe_typo_user c22936256f
Length: 713,445 (697K) [application/pdf]

100%[===============================================================================================================>] 713,445       --.--K/s

16:35:45 (26.91 MB/s) - `out.pdf' saved [713445/713445]

dima@BIGBRO:~/tmp/htmldoc-1.8.25> wget -d -O out.pdf "http://typo3w/index.php?id=1&type=123&no_cache=1" 
Setting --output-document (outputdocument) to out.pdf
DEBUG output created by Wget 1.10.1 on linux-gnu.

--16:37:09--  http://typo3w/index.php?id=1&type=123&no_cache=1
           => `out.pdf'
Resolving typo3w... 127.0.0.1
Caching typo3w => 127.0.0.1
Connecting to typo3w|127.0.0.1|:80... connected.
Created socket 4.
Releasing 0x08088f70 (new refcount 1).

---request begin---
GET /index.php?id=1&type=123&no_cache=1 HTTP/1.0
User-Agent: Wget/1.10.1
Accept: */*
Host: typo3w
Connection: Keep-Alive

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 200 OK
Date: Sun, 02 Apr 2006 13:37:09 GMT
Server: Apache/2.2.0 (Unix) mod_ssl/2.2.0 OpenSSL/0.9.8a DAV/2 PHP/4.4.1 mod_apreq2-20050712/2.1.3-dev mod_perl/2.0.2 Perl/v5.8.7
X-Powered-By: PHP/4.4.1
Set-Cookie: fe_typo_user=b88a62c57e; path=/
Content-Disposition: inline
Cache-control: private
Connection: Keep-Alive, Keep-Alive
Content-Length: 713445
Keep-Alive: timeout=5, max=100
Content-Type: application/pdf

---response end---
200 OK
Registered socket 4 for persistent reuse.

Stored cookie typo3w -1 (ANY) / <session> <insecure> [expiry none] fe_typo_user b88a62c57e
Length: 713,445 (697K) [application/pdf]

100%[===============================================================================================================>] 713,445       --.--K/s

16:37:09 (23.38 MB/s) - `out.pdf' saved [713445/713445]

dima@BIGBRO:~/tmp/htmldoc-1.8.25>

Continuing to tt_news...

Actions #6

Updated by Dmitry Dulepov over 18 years ago

Neither it happens with tt_news. I believe it is already fixed. See discussion named "problem with caching still exists in current CVS" here: http://lists.netfielders.de/pipermail/typo3-team-core/2006-March/thread.html

I set bug to "resolved" now. Feel free to set back to assigned if you still have problems with recent CVS version.

Actions #7

Updated by Dmitry Dulepov over 18 years ago

See notes for details

Actions #8

Updated by Ingmar Schlecht over 18 years ago

Hi Dmitry,

I'm afraid this bug has to be reopend, because I managed to reproduce the error.

It occurs when fronend plugins of the type USER (not USER_INT!) disable caching using the following line:
$GLOBALS['TSFE']->set_no_cache();

Looks like a good candidate for a 4.0.1.

cheers
Ingmar

Actions #9

Updated by Dmitry Dulepov over 18 years ago

Fortunately there are not so many of them. Sad that it was not discovered before 4.0 final... Anyway, I will look at it.

Thanks again! This is really helpful.

Actions #10

Updated by Dmitry Dulepov over 18 years ago

The following patch should fix the problem:

Index: class.tslib_fe.php
===================================================================
RCS file: /cvsroot/typo3/TYPO3core/typo3/sysext/cms/tslib/class.tslib_fe.php,v
retrieving revision 1.104.2.21
diff -u -r1.104.2.21 class.tslib_fe.php
--- class.tslib_fe.php  25 Mar 2006 18:07:03 -0000      1.104.2.21
+++ class.tslib_fe.php  9 Apr 2006 10:55:02 -0000
@@ -2782,7 +2782,7 @@
                }

                        // Send appropriate status code in case of temporary content
-               if ($this->tempContent) {
+               if ($this->tempContent && !$this->no_cache) {
                        $this->addTempContentHttpHeaders();
                }

Actions #11

Updated by Ingmar Schlecht over 18 years ago

Sounds reasonable.

But I wonder why $this->tempContent is set to 1 in the first place when set_no_cache() is used?

Shouldn't the tempContent flag be true/false depending on whether the content output to the browser is the "Page is being generated" message?
So how come the value is 1 even if the normal page is generated, just with the set_no_cache()?

cheers
Ingmar

Actions #12

Updated by Dmitry Dulepov over 18 years ago

Q: But I wonder why $this->tempContent is set to 1 in the first place when set_no_cache() is used?
A: This is how cache works. Before page generation even starts, temporary content is created and put to cache. This is "Page is being..." message. Such generation always happens. tempContent is set to true to indicate that we have temporary content. After content generation code looks if content is cachable. If it is, it replaces temporary content with generated content. If no, it removes temporary content from the database. In any case, tempContent flag is set even before we know if page is cachable or not. If we do not set it, we will not know that we have to send 503 status if error occurs.

Q: Shouldn't the tempContent flag be true/false depending on whether the content output to the browser is the "Page is being generated" message?
A: This how it should work. Just take into acount that this message also goes to cache.

Q: So how come the value is 1 even if the normal page is generated, just with the set_no_cache()?
A: Because of cache logic. Temporary content is generated always. Then there are two branches in the code (see near line 2573 in tslib_fe.php): one for cached content, one for non-cached. In fact your question gave me idea for better patch ;) I'll need to check it better but here it is for testing:

Index: class.tslib_fe.php
===================================================================
RCS file: /cvsroot/typo3/TYPO3core/typo3/sysext/cms/tslib/class.tslib_fe.php,v
retrieving revision 1.104.2.21
diff -u -r1.104.2.21 class.tslib_fe.php
--- class.tslib_fe.php  25 Mar 2006 18:07:03 -0000      1.104.2.21
+++ class.tslib_fe.php  9 Apr 2006 11:56:29 -0000
@@ -2575,6 +2575,7 @@
                        $this->realPageCacheContent();
                } elseif ($this->tempContent)   {               // If there happens to be temporary content in the cache and the cache was not cleared due to new content put in it... ($this->no_cache=0)
                        $this->clearPageCacheContent();
+            $this->tempContent = false;
                }

                        // Sets sys-last-change:

It should be applied to current CVS version without previous patch.

Actions

Also available in: Atom PDF