[
https://issues.apache.org/jira/browse/FELIX-4195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13741958#comment-13741958
]
Felix Meschberger commented on FELIX-4195:
------------------------------------------
I am not sure, this is any more stable: Consider the power loss just before the
sync call ?
Maybe loading preferences should be more lenient in that reading an empty
preferences file actually is just silently "ignored" and considered as the file
not existing ?
> Sync on a Preference doesn't do a OS side sync
> ----------------------------------------------
>
> Key: FELIX-4195
> URL: https://issues.apache.org/jira/browse/FELIX-4195
> Project: Felix
> Issue Type: Bug
> Components: Preferences Service
> Affects Versions: prefs-1.0.6
> Environment: Angstroem Embedded Linux
> UBIFS on a flash drive
> Reporter: Matt Wiselka
>
> I ran in to the following problem using the Preferences Service on an
> embedded device with a flash memory:
> When a preference is changed the sync method is called to persist it. A
> sudden power loss occurs. On restart the preference file in the bundle cache
> is empty and causes a BackingStoreException: Could not load preference.
> It seems to me as that the OS is caching the write to the flash drive and the
> change is not actually persisted. I was able to fix this issue by performing
> a sync on the FileDescriptor of the OutputStream in the store method of the
> DataFileBackingStoreImpl
> try {
> final FileOutputStream os = (FileOutputStream)
> this.getOutputStream(root.getDescription());
> this.write(root, os);
> os.getFD().sync();
> os.close();
> }
> catch (IOException ioe) {
> throw new BackingStoreException("Unable to store preferences.", ioe);
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira