Hi Sven, Many thanks for your answer.
On Thu, Nov 18, 2021 at 12:36 PM Sven Meier <s...@meiers.net> wrote: > Hi Ernesto, > > I've tested FilePageStore without TRUNCATE_EXISTING - in that case the > file will not shrink, when the page has reduced its size. > Ok. > > Luckily this doesn't disturb Java's default deserialization, the excess > is just ignored. > But what if a project uses another serializer? > > Good point. For us something like this will be enough: https://github.com/apache/wicket/pull/484 > Regards > > Sven > > > On 17.11.21 10:57, Ernesto Reinaldo Barreiro wrote: > > Hi Sven, > > > > Getting rid of the StandardOpenOption.TRUNCATE_EXISTING here > > > > > https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/pageStore/FilePageStore.java#L189 > > > > seems to "fix" the problem in windows and I also do not see problems in > > linux. To be honest I have no idea of the full implications of this > change. > > > > > > > > On Tue, Nov 16, 2021 at 11:40 PM Sven Meier <s...@meiers.net> wrote: > > > >> Hi Ernesto, > >> > >> I'm no expert in this, but as I understood it FileChannel should be save > >> to be written to in parallel: > >> > >> > >> > https://docs.oracle.com/javase/1.5.0/docs/api/java/nio/channels/FileChannel.html > >> > >> "File channels are safe for use by multiple concurrent threads. ... > >> Only one operation that involves the channel's position or can change > >> its file's size may be in progress at any given time; attempts to > >> initiate a second such operation while the first is still in progress > >> will block until the first operation completes. ... The view of a file > >> provided by an instance of this class is guaranteed to be consistent > >> with other views of the same file provided by other instances in the > >> same program." > >> > >> This sounds related though: > >> > >> > >> > https://stackoverflow.com/questions/45441249/why-does-java-filechannel-truncate-fail-predictably-on-windows-only > >> > >> Regards > >> Sven > >> > >> > >> On 16.11.21 19:56, Ernesto Reinaldo Barreiro wrote: > >>> Hi Sven, > >>> > >>> Many thanks for your answer. Main problem is I do not have Windows > >>> around... this happens only in our Jenkins (which needs to be a windows > >>> machine). I did some googling around and it seems it can be the > operating > >>> system itself if you access the same file in a very fast sequence: this > >>> might be our case, as we are generating many web sockets messages > >> (pushing > >>> components) and this seems to trigger page serialization. > >>> > >>> On Linux and Mac we have no problems at all. > >>> > >>> > >>> On Tue, Nov 16, 2021 at 7:28 PM Sven Meier <s...@meiers.net> wrote: > >>> > >>>> Hi Ernesto, > >>>> > >>>> maybe an issue with concurrent file writes? > >>>> > >>>> I've tested the new FilePageStore on Linux only, and as it seems I > >>>> didn't add any synchronization to it. > >>>> > >>>> Could you try out FilePageStoreTest? > >>>> > >>>> Regards > >>>> Sven > >>>> > >>>> > >>>> On 16.11.21 16:18, Ernesto Reinaldo Barreiro wrote: > >>>>> Hi, > >>>>> > >>>>> We are trying to use FilePageStore and we are getting following > >>>>> exception (a lot of them actually) > >>>>> > >>>>> he requested operation cannot be performed on a file with a > user-mapped > >>>>> section open > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:92) > >>>>> ~[?:?] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) > >>>>> ~[?:?] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) > >>>>> ~[?:?] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > sun.nio.fs.WindowsFileSystemProvider.newFileChannel(WindowsFileSystemProvider.java:121) > >>>>> ~[?:?] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> java.nio.channels.FileChannel.open(FileChannel.java:298) ~[?:?] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> java.nio.channels.FileChannel.open(FileChannel.java:357) ~[?:?] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > org.apache.wicket.pageStore.FilePageStore.writeFile(FilePageStore.java:188) > >>>>> [wicket-core-9.6.0.jar:9.6.0] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > org.apache.wicket.pageStore.FilePageStore.addPersistedPage(FilePageStore.java:178) > >>>>> [wicket-core-9.6.0.jar:9.6.0] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > org.apache.wicket.pageStore.AbstractPersistentPageStore.addPage(AbstractPersistentPageStore.java:128) > >>>>> [wicket-core-9.6.0.jar:9.6.0] > >>>>> [2021-11-16T07:34:00.699Z] at > >>>>> > >> > org.apache.wicket.pageStore.AsynchronousPageStore$PageAddingRunnable.run(AsynchronousPageStore.java:292) > >>>>> [wicket-core-9.6.0.jar:9.6.0] > >>>>> [2021-11-16T07:34:00.699Z] at java.lang.Thread.run(Thread.java:833) > >> [?:?] > >>>>> This does not happen for other operating systems. Is this a known > >>>>> limitation? Is there anything else that needs to be configured at > >>>> operating > >>>>> system level? > >>>>> > >>>>> Thanks in advance. > >>>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >>>> For additional commands, e-mail: users-h...@wicket.apache.org > >>>> > >>>> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > >> For additional commands, e-mail: users-h...@wicket.apache.org > >> > >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > -- Regards - Ernesto Reinaldo Barreiro