You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Rob Vesse (JIRA)" <ji...@apache.org> on 2013/12/04 14:02:35 UTC

[jira] [Created] (JENA-600) Fuseki Upload does not support compressed data e.g. GZip

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)