Rob Vesse created JENA-600:
------------------------------

             Summary: Fuseki Upload does not support compressed data e.g. GZip
                 Key: JENA-600
                 URL: https://issues.apache.org/jira/browse/JENA-600
             Project: Apache Jena
          Issue Type: Bug
          Components: Fuseki
    Affects Versions: Fuseki 1.0.0
            Reporter: Rob Vesse
            Assignee: Rob Vesse
             Fix For: Fuseki 1.0.1


If you want to upload a large file to Fuseki it would be nice if it supported 
compressed data formats such as GZip.

Currently trying to upload a GZipped file results in the following:

{noformat}
13:00:01 INFO  Fuseki               :: [1] POST http://localhost:3030/ds/upload
13:00:01 INFO  Fuseki               :: [1] Upload: Filename: 
med-triangles.nt.gz, Content-Type=application/x-gzip, Charset=null => N-Triples
org.apache.jena.atlas.AtlasException: java.nio.charset.MalformedInputException: 
Input length = 1
        at org.apache.jena.atlas.io.IO.exception(IO.java:206)
        at 
org.apache.jena.atlas.io.CharStreamBuffered$SourceReader.fill(CharStreamBuffered.java:79)
        at 
org.apache.jena.atlas.io.CharStreamBuffered.fillArray(CharStreamBuffered.java:156)
        at 
org.apache.jena.atlas.io.CharStreamBuffered.advance(CharStreamBuffered.java:139)
        at 
org.apache.jena.atlas.io.PeekReader.advanceAndSet(PeekReader.java:251)
        at org.apache.jena.atlas.io.PeekReader.init(PeekReader.java:244)
        at org.apache.jena.atlas.io.PeekReader.peekChar(PeekReader.java:169)
        at org.apache.jena.atlas.io.PeekReader.makeUTF8(PeekReader.java:108)
        at 
org.apache.jena.riot.tokens.TokenizerFactory.makeTokenizerUTF8(TokenizerFactory.java:41)
        at org.apache.jena.riot.RiotReader.createParser(RiotReader.java:130)
        at 
org.apache.jena.fuseki.servlets.SPARQL_REST.parse(SPARQL_REST.java:298)
        at 
org.apache.jena.fuseki.servlets.SPARQL_Upload.uploadWorker(SPARQL_Upload.java:236)
        at 
org.apache.jena.fuseki.servlets.SPARQL_Upload.uploadNonTxn(SPARQL_Upload.java:124)
        at 
org.apache.jena.fuseki.servlets.SPARQL_Upload.upload(SPARQL_Upload.java:117)
        at 
org.apache.jena.fuseki.servlets.SPARQL_Upload.perform(SPARQL_Upload.java:83)
        at 
org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeLifecycle(SPARQL_ServletBase.java:184)
        at 
org.apache.jena.fuseki.servlets.SPARQL_ServletBase.executeAction(SPARQL_ServletBase.java:165)
        at 
org.apache.jena.fuseki.servlets.SPARQL_ServletBase.execCommonWorker(SPARQL_ServletBase.java:153)
        at 
org.apache.jena.fuseki.servlets.SPARQL_ServletBase.doCommon(SPARQL_ServletBase.java:73)
        at 
org.apache.jena.fuseki.servlets.SPARQL_Upload.doPost(SPARQL_Upload.java:66)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
        at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
        at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:457)
        at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)
        at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
        at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
        at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
        at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
        at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
        at org.eclipse.jetty.server.Server.handle(Server.java:370)
        at 
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
        at 
org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
        at 
org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
        at 
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
        at 
org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
        at 
org.eclipse.jetty.server.nio.BlockingChannelConnector$BlockingChannelEndPoint.run(BlockingChannelConnector.java:298)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.nio.charset.MalformedInputException: Input length = 1
        at java.nio.charset.CoderResult.throwException(CoderResult.java:277)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:338)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
        at java.io.InputStreamReader.read(InputStreamReader.java:184)
        at java.io.Reader.read(Reader.java:140)
        ... 42 more
{noformat}

It should be possible to determine the appropriate type by examining the file 
extension of the attachments and then open an appropriate GZip stream over the 
uploaded data stream.

I'm gonna take a look at doing this later today.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to