View Issue Details

IDProjectCategoryView StatusLast Update
0013130MMASynchronizationpublic2016-04-04 15:08
Reportermarek Assigned To 
PriorityhighSeverityminorReproducibilitysometimes
Status resolvedResolutionfixed 
Product Version1.1.2 
Target Version1.2.0Fixed in Version1.2.0 
Summary0013130: Duplicate profiles can occur due to deletion of storageInfo.xml [MMA]
DescriptionIn case of write limited storage, MMA can write only to application folder where it creates the storageInfo.xml. This folder is deleted on uninstall and storageInfo.xml is lost. So duplicate profiles are created.

It can also cause DB update issue 0013063.

This is not fixable for write limited storages in Kitkat devices. But it can be fixed in Lolipop and higher devices where MMA can create duplicate of storageInfo.xml to /MediaMonkey/files folder. This folder is not deleted on uninstall.
TagsNo tags attached.
Fixed in build589

Relationships

related to 0013119 closedLudek MMW v4 Duplicate profiles can occur due to deletion of storageInfo.xml 
related to 0013063 resolvedmarek MMA LG L-65: Storage prefixes for SD card don't match 
has duplicate 0013129 resolvedmarek MMA Crash on Marshmallow devices after initial config of SAF 
has duplicate 0013193 resolvedmarek MMA Playlists: get lost on playlists edit 

Activities

marek

2016-02-16 16:59

developer   ~0044166

It was partly fixed in 1.1.3.451

There are still issues in Android 6.0 where the getOutputStream method fails due to unreliable exists() method. It has to be retested to find the workaround.

marek

2016-03-01 23:05

developer   ~0044225

I have implemented fix for 1.2.0

The exists() method was simplified and only standard File.exists() method is used (i.e. we do not use exists() method from SAF api that is not reliable). This is quite reliable with one exception - the File.exists() return true right after the file is deleted with SAF api. The delete method is not blocking and this is the cause.

But deletion was not necessary when we write new data to file. So I have removed the deletions and now it looks like working.

I have also fixed one regression that storageInfo.xml was always overwritten even if the data was not changed. This is fixed to speed up the process.

Fixed in build 1.2.0.580

peke

2016-03-28 21:09

developer   ~0044342

Verified 585

Finally fixed and working correctly.

marek

2016-04-04 15:08

developer   ~0044379

I have found the root cause that our exists() method uses count() SQLite function that doesn't work on every device/API.

Fixed in build 589