Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Invalid
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: jackrabbit-webdav
    • Labels:
      None
    • Environment:
      Mac OS X 10.5 WebDAVFS
      Jackrabbit 1.4.5

      Description

      When trying to upload (put) file, at least of 10Mb, Mac OS X 10.5 Finder (included WebDAVFS client part) fails transfert with error code -36, eventually leaving lock causing more trouble to other Mac OS X client (even if tiger), and eventually crashing WebDAV mount.

      It can be related to Apple change about WebDAV PUT, using Transfert-Encoding: Chunk from 10.5 release (http://discussions.apple.com/message.jspa?messageID=7282319#7282319).

        Activity

        Hide
        Cédric Chantepie added a comment -

        SAKAI seemed to have same trouble : http://bugs.sakaiproject.org/jira/browse/SAK-13841

        Show
        Cédric Chantepie added a comment - SAKAI seemed to have same trouble : http://bugs.sakaiproject.org/jira/browse/SAK-13841
        Hide
        Cédric Chantepie added a comment -

        Headers seems to be same, so difference should be within data :

        [TIGER 10.4]
        PUT /resource HTTP/1.1
        User-Agent: WebDAVFS/1.4.1 (01418000) Darwin/8.11.1 (i386)
        Accept: /
        Authorization: Basic xxxxxxxxxxxxxxx
        Content-Length: 0
        Connection: keep-alive
        Host: zfiler.nozicaa.com

        [LEOPARD 10.5]
        PUT /resource HTTP/1.1
        User-Agent: WebDAVFS/1.7 (01708000) Darwin/9.5.0 (i386)
        Accept: /
        Authorization: Basic xxxxxxxxxxxxxxx
        Content-Length: 0
        Connection: keep-alive
        Host: zfiler.nozicaa.com

        Show
        Cédric Chantepie added a comment - Headers seems to be same, so difference should be within data : [TIGER 10.4] PUT /resource HTTP/1.1 User-Agent: WebDAVFS/1.4.1 (01418000) Darwin/8.11.1 (i386) Accept: / Authorization: Basic xxxxxxxxxxxxxxx Content-Length: 0 Connection: keep-alive Host: zfiler.nozicaa.com [LEOPARD 10.5] PUT /resource HTTP/1.1 User-Agent: WebDAVFS/1.7 (01708000) Darwin/9.5.0 (i386) Accept: / Authorization: Basic xxxxxxxxxxxxxxx Content-Length: 0 Connection: keep-alive Host: zfiler.nozicaa.com
        Hide
        Julian Reschke added a comment -

        So, if this is caused by Transfer-Encoding: chunked, then it really is an issue of the servlet container.

        Can this problem be reproduced with Tomcat?

        Show
        Julian Reschke added a comment - So, if this is caused by Transfer-Encoding: chunked, then it really is an issue of the servlet container. Can this problem be reproduced with Tomcat?
        Hide
        Cédric Chantepie added a comment - - edited

        With tomcat servlet you mean ?
        I'll try with mod_dav from Finder and with Jackrabbit from cp CLI command.

        Show
        Cédric Chantepie added a comment - - edited With tomcat servlet you mean ? I'll try with mod_dav from Finder and with Jackrabbit from cp CLI command.
        Hide
        Cédric Chantepie added a comment - - edited

        Jackrabbit seems to work from 'cp' command, and Finder works with apache mod_dav.

        So I think there is some change in Finder, but Jackrabbit should be able work with that.

        Show
        Cédric Chantepie added a comment - - edited Jackrabbit seems to work from 'cp' command, and Finder works with apache mod_dav. So I think there is some change in Finder, but Jackrabbit should be able work with that.
        Hide
        Alexander Klimetschek added a comment -

        > With tomcat servlet you mean ?

        He talks about the "servlet container". In which container are you running jackrabbit (eg. Tomcat, Jetty, JBoss, etc.)?

        Show
        Alexander Klimetschek added a comment - > With tomcat servlet you mean ? He talks about the "servlet container". In which container are you running jackrabbit (eg. Tomcat, Jetty, JBoss, etc.)?
        Hide
        Julian Reschke added a comment -

        What servlet container is the Jackrabbit WebDAV servlet running in?

        Show
        Julian Reschke added a comment - What servlet container is the Jackrabbit WebDAV servlet running in?
        Hide
        Cédric Chantepie added a comment -

        JBoss with embedded tomcat (jbossweb).

        Show
        Cédric Chantepie added a comment - JBoss with embedded tomcat (jbossweb).
        Hide
        Cédric Chantepie added a comment -

        JBoss with embedded tomcat (jbossweb).

        As far as I can see with tcpdump, when using WebDAVFS under 10.5 the trouble occurs with file of about ~10Mb and last request before error is LOCK.

        [10.5 WebDAVFS (just summary with method names lowercased)]
        propfind folder
        propfind folder/file_to_upload
        propfind folder/file_to_upload
        put folder/file_to_upload (Content-Length: 0)
        propfind folder/._file_to_upload
        lock folder/file_to_upload
        propfind folder/._file_to_upload
        propfind folder/._file_to_upload
        put folder/._file_to_upload (Content-Length: 0)
        lock folder/._file_to_upload
        put folder/._file_to_upload (If: xxxx, Content-Length: >0)
        propfind folder/._file_to_upload
        unlock folder/._file_to_upload
        put folder/file_to_upload (If: xxxx, Content-Length: >0)
        lock folder/file_to_upload
        ---> error code: -36 on client

        [10.4 WebDAVFS (just summary with method names lowercased)]
        propfind folder/file_to_upload
        put folder/file_to_upload (Content-Length: 0)
        propfind folder/._file_to_upload
        put folder/._file_to_upload (Content-Length: 0)
        lock folder/._file_to_upload
        put folder/file_to_upload (If: xxx, Content-Length: >0)
        propfind folder/._file_to_upload
        unlock folder/._file_to_upload
        propfind folder/.DS_Store
        lock folder/._file_to_upload
        put folder/.DS_Store (Content-Length: 0)
        unlock folder/._file_to_upload
        lock folder/.DS_Store
        delete folder/._file_to_upload
        put folder/.DS_Store (If: xxx, Content-Length: >0)
        lock folder/file_to_upload
        propfind folder/.DS_Store
        unlock folder/.DS_Store
        put folder/file_to_upload (If: xxx, Content-Length: >0)
        propfind folder/._.DS_Store
        propfind folder/._.DS_Store
        propfind folder/file_to_upload
        unlock folder/file_to_upload
        propfind folder/._file_to_upload
        propfind folder/._file_to_upload
        propfind folder/._file_to_upload

        ._file is Mac OS X file resource fork, and .DS_Store Mac OS X file about directory.

        Show
        Cédric Chantepie added a comment - JBoss with embedded tomcat (jbossweb). As far as I can see with tcpdump, when using WebDAVFS under 10.5 the trouble occurs with file of about ~10Mb and last request before error is LOCK. [10.5 WebDAVFS (just summary with method names lowercased)] propfind folder propfind folder/file_to_upload propfind folder/file_to_upload put folder/file_to_upload (Content-Length: 0) propfind folder/._file_to_upload lock folder/file_to_upload propfind folder/._file_to_upload propfind folder/._file_to_upload put folder/._file_to_upload (Content-Length: 0) lock folder/._file_to_upload put folder/._file_to_upload (If: xxxx, Content-Length: >0) propfind folder/._file_to_upload unlock folder/._file_to_upload put folder/file_to_upload (If: xxxx, Content-Length: >0) lock folder/file_to_upload ---> error code: -36 on client [10.4 WebDAVFS (just summary with method names lowercased)] propfind folder/file_to_upload put folder/file_to_upload (Content-Length: 0) propfind folder/._file_to_upload put folder/._file_to_upload (Content-Length: 0) lock folder/._file_to_upload put folder/file_to_upload (If: xxx, Content-Length: >0) propfind folder/._file_to_upload unlock folder/._file_to_upload propfind folder/.DS_Store lock folder/._file_to_upload put folder/.DS_Store (Content-Length: 0) unlock folder/._file_to_upload lock folder/.DS_Store delete folder/._file_to_upload put folder/.DS_Store (If: xxx, Content-Length: >0) lock folder/file_to_upload propfind folder/.DS_Store unlock folder/.DS_Store put folder/file_to_upload (If: xxx, Content-Length: >0) propfind folder/._.DS_Store propfind folder/._.DS_Store propfind folder/file_to_upload unlock folder/file_to_upload propfind folder/._file_to_upload propfind folder/._file_to_upload propfind folder/._file_to_upload ._file is Mac OS X file resource fork, and .DS_Store Mac OS X file about directory.
        Hide
        Cédric Chantepie added a comment - - edited

        I do see Transfer-Encoding when using 10.5 with mod_dav, but not with jackrabbit :

        [PUT with apache2 mod_dav]
        PUT /webcav/ServerAdminTools10.5.dmg HTTP/1.1
        User-Agent: WebDAVFS/1.7 (01708000) Darwin/9.5.0 (i386)
        Accept: /
        X-Expected-Entity-Length: 66449565
        If: (<opaquelocktoken:5cf6c38f-5a65-48f1-8575-96478d723484>)
        Authorization: Basic Y2NoYW50ZXA6d2FsbGF5ZQ==
        Connection: close
        Host: collab.intranet.corsaire.fr
        Transfer-Encoding: Chunked

        In fact Jackrabbit get Transfer-Encoding when tomcat is directly used, not through mod_jk, so first I think apache/mod_jk handle this. I don't know if it's ok that apache get it out, so tomcat don't see it, but finally even when using tomcat directly the mac os x trouble occurs.

        Show
        Cédric Chantepie added a comment - - edited I do see Transfer-Encoding when using 10.5 with mod_dav, but not with jackrabbit : [PUT with apache2 mod_dav] PUT /webcav/ServerAdminTools10.5.dmg HTTP/1.1 User-Agent: WebDAVFS/1.7 (01708000) Darwin/9.5.0 (i386) Accept: / X-Expected-Entity-Length: 66449565 If: (<opaquelocktoken:5cf6c38f-5a65-48f1-8575-96478d723484>) Authorization: Basic Y2NoYW50ZXA6d2FsbGF5ZQ== Connection: close Host: collab.intranet.corsaire.fr Transfer-Encoding: Chunked In fact Jackrabbit get Transfer-Encoding when tomcat is directly used, not through mod_jk, so first I think apache/mod_jk handle this. I don't know if it's ok that apache get it out, so tomcat don't see it, but finally even when using tomcat directly the mac os x trouble occurs.
        Hide
        Alexander Klimetschek added a comment - - edited

        > JBoss with embedded tomcat (jbossweb).
        I would guess it is a problem with the servlet container.

        The missing Transfer-Encoding header is part of the request, so it either depends on the client or there is some logic involved depending on the server (and I'd think this is done by the servlet container, not by the servlets itself). You should investigate the responses before. A quick look at the HTTP spec did not reveal when Transfer-Encoding chunked would be "enabled" by the server.

        Show
        Alexander Klimetschek added a comment - - edited > JBoss with embedded tomcat (jbossweb). I would guess it is a problem with the servlet container. The missing Transfer-Encoding header is part of the request, so it either depends on the client or there is some logic involved depending on the server (and I'd think this is done by the servlet container, not by the servlets itself). You should investigate the responses before. A quick look at the HTTP spec did not reveal when Transfer-Encoding chunked would be "enabled" by the server.
        Hide
        Cédric Chantepie added a comment -

        There maybe some servlet container trouble, but triggered by change in os x webdav code.
        Has anyone used jackrabbit webdav from Mac OS X 10.5 with another servlet container than tomcat or jbossweb ?

        I've also some doubt about 'Chunked' with uppercase 'C'. As far as I understand RFC transfer coding value should be case-insensitive but I wonder if mod_jk and/or tomcat expect it as lowercased.

        I'll look at responses.

        Show
        Cédric Chantepie added a comment - There maybe some servlet container trouble, but triggered by change in os x webdav code. Has anyone used jackrabbit webdav from Mac OS X 10.5 with another servlet container than tomcat or jbossweb ? I've also some doubt about 'Chunked' with uppercase 'C'. As far as I understand RFC transfer coding value should be case-insensitive but I wonder if mod_jk and/or tomcat expect it as lowercased. I'll look at responses.
        Hide
        David Nuescheler added a comment -

        i just checked with our servlet engine called CQSE, which is the one included in CRX quickstart.
        as mentioned before it works without a problem, here is the dump...

        C-68-#000000 -> [PUT /content/dam/STROMBERG_2_2.mp4 HTTP/1.1 ]
        C-68-#000045 -> [User-Agent: WebDAVFS/1.7 (01708000) Darwin/9.5.1 (i386) ]
        C-68-#000102 -> [Accept: */* ]
        C-68-#000115 -> [X-Expected-Entity-Length: 302108459 ]
        C-68-#000152 -> [If: (<3ef131eb-eb74-47a4-ae97-a72d94ee6ac9-1>) ]
        C-68-#000200 -> [Authorization: Basic YWRtaW46YWRtaW4= ]
        C-68-#000239 -> [Connection: close ]
        C-68-#000258 -> [Host: localhost:1234 ]
        C-68-#000280 -> [Transfer-Encoding: Chunked ]
        C-68-#000308 -> [ ]
        C-68-#000310 -> [800 ]

        Show
        David Nuescheler added a comment - i just checked with our servlet engine called CQSE, which is the one included in CRX quickstart. as mentioned before it works without a problem, here is the dump... C-68-#000000 -> [PUT /content/dam/STROMBERG_2_2.mp4 HTTP/1.1 ] C-68-#000045 -> [User-Agent: WebDAVFS/1.7 (01708000) Darwin/9.5.1 (i386) ] C-68-#000102 -> [Accept: */* ] C-68-#000115 -> [X-Expected-Entity-Length: 302108459 ] C-68-#000152 -> [If: (<3ef131eb-eb74-47a4-ae97-a72d94ee6ac9-1>) ] C-68-#000200 -> [Authorization: Basic YWRtaW46YWRtaW4= ] C-68-#000239 -> [Connection: close ] C-68-#000258 -> [Host: localhost:1234 ] C-68-#000280 -> [Transfer-Encoding: Chunked ] C-68-#000308 -> [ ] C-68-#000310 -> [800 ]
        Hide
        Cédric Chantepie added a comment -

        How large is your file ?

        Show
        Cédric Chantepie added a comment - How large is your file ?
        Hide
        David Nuescheler added a comment -

        hi cedric,

        as you can see in the "X-Expected-Entity-Length" header, it is 302mb

        regards,
        david

        Show
        David Nuescheler added a comment - hi cedric, as you can see in the "X-Expected-Entity-Length" header, it is 302mb regards, david
        Hide
        Cédric Chantepie added a comment -

        I'll try with a brand new downloaded tomcat 6, to figure out whether it could be a jboss web (embedded tomcat) issue.

        Show
        Cédric Chantepie added a comment - I'll try with a brand new downloaded tomcat 6, to figure out whether it could be a jboss web (embedded tomcat) issue.
        Hide
        Cédric Chantepie added a comment -

        It works with tomcat 6, so either JBoss uses a previous tomcat version or it has badly changed it for inclusion as jbossweb.

        Show
        Cédric Chantepie added a comment - It works with tomcat 6, so either JBoss uses a previous tomcat version or it has badly changed it for inclusion as jbossweb.
        Hide
        Alexander Klimetschek added a comment -

        Closing as it the cause for the issue is not Jackrabbit, but the servlet container.

        Show
        Alexander Klimetschek added a comment - Closing as it the cause for the issue is not Jackrabbit, but the servlet container.

          People

          • Assignee:
            Unassigned
            Reporter:
            Cédric Chantepie
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development