[vlc-devel] [RFC PATCH 1/8] contrib: Update & reactivate sqlite
Hugo Beauzée-Luyssen
hugo at beauzee.fr
Wed Jun 27 09:58:28 CEST 2018
On Tue, Jun 26, 2018, at 10:37 AM, Rémi Denis-Courmont wrote:
> Le mardi 26 juin 2018, 14:45:51 EEST Hugo Beauzée-Luyssen a écrit :
> > On Tue, Jun 26, 2018, at 4:29 AM, Rémi Denis-Courmont wrote:
> > > Hmm, my understanding of SQLite locking is probably out of date, and it
> > > seems that the analysis depends on the SQLite method used (e.g. WAL).
> > >
> > > But in any case, using SQLite, or really any read/write storage in VLC
> > > poses certain potential problems:
> > > - users with network mounted home directories
> >
> > I suppose if that folder is not available the medialibrary initialization
> > would fail, and that case must be handled gracefully (ie. not like the
> > current temporary initialization) I suppose that would be similar to
> > launching VLC with --no-media-library.
>
> Yes. At least provided the player is still practically usable without ML.
>
That's the goal yes.
> > Should the folder be unmounted
> > during runtime, the medialibrary can fail gracefully as well, and would
> > restore any potential write operation during startup.
>
> That should be impossible if you keep an open handles to at least one of the
> DB files.
>
> > > - VLC crashing during an update
> >
> > My understanding is that SQLite's journal covers this
>
> My understanding is that it depends on the mode that SQLite is set to use.
>
> > > - VLC freezing during an update
> >
> > I'm not sure there's something to handle there, as far as the medialibrary
> > is concerned
>
> I mean, you don't want the concurrent or consequent VLC instances to fail,
> e.g. waiting for a lock that will never be released.
>
> > > - writes in one VLC process desynching data in another VLC process (e.g.
> > > deleting or updating an entry)
> >
> > That could be an issue indeed. SQLite would return SQLITE_BUSY, it's up to
> > us to determine if we want to retry, and if so for how long, or if we want
> > to do something a bit more clever by communicating across VLC processes, or
> > limitating the ML instances to a single VLC process
>
> I would expect the busy error on conflicting transactions. That's certainly
> something that needs to be handled gracefully.
>
> But my main concern is what do we do if an entry changes after it has been
> read. From SQL point of view, there is probably no conflict. The conflict is
> higher level.
>
> > > - storage space accumulation / check-pointing
> >
> > I don't think that's something specific to sqlite or any database for that
> > matter.
>
> None of the issues are specific to SQLite. That's not an excuse for not
> addressing them.
>
I think we agree, yes.
> > > - database layout changes upon software updates
> >
> > This is handled in the medialibrary and tested by quite a few VLC for
> > Android updates
> > > - I/O error handling
> >
> > In case of reading, we retry for some time and eventually give up. For
> > writing, it's a bit trickier and depends on the failing write. We handle
> > quite a few cases already, but I can't swear all of them are. The code
> > infrastructure to handle such errors is present, for what it's worth, and
> > at the end of the day, I'm not sure we can do much if a write to disk
> > fails, except for not crashing & retrying later
>
> IMO, retrying is kinda pointless because it's unlikely that it will work, and
> even if it does, it might make things worse rather than better (e.g. keep
> filling the disk). All you can do is forget the data that was not written. The
> real difficulty is ensuring that the software does not end up in inconsistent
> state.
>
> --
> Rémi Denis-Courmont
>
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
--
Hugo Beauzée-Luyssen
hugo at beauzee.fr
More information about the vlc-devel
mailing list