johnzon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörg Sautter (JIRA) <j...@apache.org>
Subject [jira] [Updated] (JOHNZON-215) JsonReader.readObject() calls Reader.close()
Date Mon, 17 Jun 2019 10:10:00 GMT

     [ https://issues.apache.org/jira/browse/JOHNZON-215?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jörg Sautter updated JOHNZON-215:
---------------------------------
    Description: 
We try to use the JsonReader to read a Reader based on a channel holding an exclusive file
lock and later on we truncate the channel, write the content and close the channel / release
the lock.

As soon as we call JsonReader.readObject() the reader and the channel is closed and the file
locks are gone. This should - from our point of view - not happen at this point, only a explicit
call to .close() should close the underlying resources.

This is a code snippet to reproduce the issue:

{{StringReader sr = new StringReader("{}");}}
{{Reader wrapper = new Reader() {}}
{{@Override}}
{{public int read(char[] cbuf, int off, int len) throws IOException}}{{{}}

{{return sr.read(cbuf, off, len);}}

{{}}}

{{@Override}}
{{public void close() throws IOException}}{{{}}

{{throw new UnsupportedOperationException("someone closed the stream!");}}

{{}}}

{{};}}

{{Json.createReader(wrapper).readObject();}}

  was:
We try to use the JsonReader to read a Reader based on a channel holding an exclusive file
lock and later on we truncate the channel, write the content and close the channel / release
the lock.

As soon as we call JsonReader.readObject() the reader and the channel is closed and the file
locks are gone. This should - from our point of view - not happen at this point, only a explicit
call to .close() should close the underlying resources.

This is a code snippet to reproduce the issue:

{{StringReader sr = new StringReader("{}");}}
{{ Reader wrapper = new Reader() {}}
{{ @Override}}
{{ public int read(char[] cbuf, int off, int len) throws IOException}}{{{}}

{{return sr.read(cbuf, off, len);}}

{{}}}

{{@Override}}
{{ public void close() throws IOException}}{{{}}

{{throw new UnsupportedOperationException("someone closed the stream!");}}

{{}}}

{{};}}

{{Json.createReader(wrapper).readObject();}}


> JsonReader.readObject() calls Reader.close()
> --------------------------------------------
>
>                 Key: JOHNZON-215
>                 URL: https://issues.apache.org/jira/browse/JOHNZON-215
>             Project: Johnzon
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.12
>            Reporter: Jörg Sautter
>            Priority: Major
>
> We try to use the JsonReader to read a Reader based on a channel holding an exclusive
file lock and later on we truncate the channel, write the content and close the channel /
release the lock.
> As soon as we call JsonReader.readObject() the reader and the channel is closed and the
file locks are gone. This should - from our point of view - not happen at this point, only
a explicit call to .close() should close the underlying resources.
> This is a code snippet to reproduce the issue:
> {{StringReader sr = new StringReader("{}");}}
> {{Reader wrapper = new Reader() {}}
> {{@Override}}
> {{public int read(char[] cbuf, int off, int len) throws IOException}}{{{}}
> {{return sr.read(cbuf, off, len);}}
> {{}}}
> {{@Override}}
> {{public void close() throws IOException}}{{{}}
> {{throw new UnsupportedOperationException("someone closed the stream!");}}
> {{}}}
> {{};}}
> {{Json.createReader(wrapper).readObject();}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message