View Issue Details

IDProjectCategoryView StatusLast Update
0012848MMASynchronizationpublic2015-11-22 21:18
Reporterrusty Assigned To 
PriorityimmediateSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Version1.1.3 
Target Version1.1.3Fixed in Version1.1.3 
Summary0012848: Container playlists and their children don't sync (regression)
DescriptionIn MMA 1.1.3, playlists that are children of empty container playlists fail to sync.
TagsNo tags attached.
Fixed in build507

Relationships

related to 0012853 closedLudek MMW v4 Empty M3U files should be deleted during auto-sync 
parent of 0012962 closedLudek MMW v4 MMA fails to update playlists synced via USB 
related to 0012966 closedLudek MMW v4 USB sync prompts for the deletion of Parent playlists unnecessarily 
related to 0012097 closedLudek MMW v4 Device Playlists: Are not sorted but loaded in order on Device Library. 

Activities

marek

2015-09-11 12:04

developer   ~0042934

The issue is that MMW does not create empty m3u file and therefore this parent playlist is deleted in following MediaStore sync.

I cannot reproduce it on my devices. I have added logs to build 476

Ludek

2015-09-11 12:45

developer   ~0042936

Last edited: 2015-09-11 12:47

I tested USB sync and see the same issue. Note that watching the code MMW has never written empty M3U files, but always just writse them to the MMA's DB (mmstore.db.synced), the true is that if I tweaked MMW to write also empty (0 Bytes) M3Us then the issue no longer appears.

So I can tweak MMW to write empty M3Us, but I am just not sure whether it cannot be problematic for some Android apps to read such a dummy M3Us ?

Wouldn't be better if MMA wouldn't delete such a "0 tracks" containers for which the M3U has never existed? Or does MMA also create empty M3Us during WiFi sync? If yes, MMW could write them too for consistency.

Ludek

2015-09-11 12:55

developer   ~0042937

Last edited: 2015-09-11 12:57

IM duscussion:

Rusty: I don't know the answer to that, but I can tell you that MMA 1.1.2 worked correctly with the empty playlist containers (even though MMW's behavior didn't change), so it should be possible to get it working agoin without changes on MMW's side.

Luded: ok, the true is that such an empty M3U file is candidate for deletion from the user perspective ;)

Marek: Yes, MMA creates this files during wifi sync too. And it was implemented due to MediaStore, because there are often this "ghost" playlists where m3u file doesn't exist. So MMA deletes all playlists with 0 tracks and no file...

Marek: When user deleted some playlist in MediaStore, it stayed there as this empty playlist and Google Play didn't show empty playlists...

Ludek: ok, if it was something that needed to be changed for MMA 1.1.3 then I can tweak it on MMW side, but as I wrote, there is still a probability that user will delete those empty M3Us manually.
But not a big deal probably.

rusty

2015-09-11 13:03

administrator   ~0042938

Last edited: 2015-09-11 13:43

I tested build 475 further, and it seems that:

On a nexus device / android 5.1: the child playlists are created correctly (in MMA and in other apps via the MediaStore) and the empty 'container' playlist appears correctly in MMA as well, BUT also appears as an empty playlist in other apps via the MediaStore (it doesn't appear in the Google Play since Google Play hides empty playlists).

Note: this is the exact same behaviour as MMA 1.1.2

BUT, on a samsung tab 4 pro / kitkat: the parent container and child playlists aren't created (neither for sync to internal memory or external memory) in MMA (even though this worked in MMA 1.1.2 on that device).

Summary:
a) We need to fix the problem that occurs on the samsung tablet
b) We should probably prevent 'container' playlists that contain 0 tracks from being synced to the mediastore.

rusty

2015-09-16 15:56

administrator   ~0042945

Last edited: 2015-09-16 15:57

Rusty:
The discussion as we left it was that:
a) the bug re. missing parent playlists doesn't have to be explicitly fixed (it'll be covered by changes b/c/d below)
b) Marke would will implement
 - stop creating m3u files for empty playlists
 - stop delete empty playlists with childs
 - stop sync empty playlists with childs
c) No conclusion re. whether to create .m3u files for container playlists in MMW (with no children)
d) implement the same for USB sync

BUT then Ludek indicated that this logic is overly complex and could yield regressions, and perhaps the .m3u playlists should just always be created. And I suggested that that always creating playlists would cause usability problems since users would delete empty playlists and they would repeatedly get recreated, so it would be better to just not create them at all.

btw, to be clear about priorities (and to help me make sure that this is clear in my mind as well), MMA/MMW:
i) must represent the hierarchy of MM playlists consistently across MMA/MMW
ii) must bidirectionally sync MM playlists across MMA/MMW
iii) should sync playlists in such a manner that they are accurately represented in 3rd party apps (i.e. they should display all playlists that contain tracks)
iv) should bidirectionally sync playlists from the mediastore

btw, I should add that in terms of the 4 priorities listed above, afaik MMA 1.1.2 meets all of them except for iii) which it only partially meets (it works for Google Music, but not for other music apps).

For MMA 1.1.3 it would be ok if the same behavior/limitation remained. Afaik, the only really critical problem is the regression that child playlists aren't syncing on some devices as described at 0012848.

Marek:
Well I have already implemented it as you suggested:
- empty M3U files for empty playlists are never created
- empty playlists are not synced with MediaStore
- when user syncs some playlists with tracks and these tracks are deleted or they are removed from playlists - the m3u file of this playlist is deleted. This playlist is also removed from MediaStore and de-synced.
So it is consistent...

----

The remaining issue is whether to create a new MMW 4.1.9 build that implements consistent USB sync behavior (perhaps as a separate bug).

Ludek

2015-09-16 19:17

developer   ~0042946

Tracked as 0012853

marek

2015-09-16 20:24

developer   ~0042949

Fixed in build 477

marek

2015-09-16 20:25

developer   ~0042950

Fixed in build 477

peke

2015-09-17 01:31

developer   ~0042951

Verified 477

rusty

2015-11-18 21:22

administrator   ~0043336

Last edited: 2015-11-18 21:24

This issue occurs again in build 504: the parent playlist is synced on Wi-Fi sync, but the children aren't. Debug logs of this are at 0012962.

rusty

2015-11-19 18:46

administrator   ~0043339

New test results:
Re-installed 504
Initiated Wi-Fi sync
Checked with ES Explorer--all playlists appear in app-specific folder (other Playlist directories are empty)
MMA Playlists node shows:
Ari's Bar Mitzvah but sub playlists are missing, New Pop 2.5+, Test Playlists but subplaylists are missing
Debug log: XL4G7BLAFA

marek

2015-11-19 21:17

developer   ~0043340

Fixed in build 505

rusty

2015-11-19 21:47

administrator   ~0043341

Build 505a:
-Now I get a 'sync incomplete' error on Wi-Fi sync against MMW 4.1.9 using the S3/Android 4.4.2.
Debug log: DUL1ZOCBQF
-Same happens with the Tab 8 / Android 4.4.2.
Debug log: FM09297RR6

Test results build 505b:
On the S3: The container playlists sync, but the child playlists are missing (i.e. same as with build 504). i.e. the following playlists synced: Ari's Bar Mitzvah but sub playlists are missing, New Pop 2.5+, Test Playlists but subplaylists are missing.
Debug log: 2PS73L7L6I

rusty

2015-11-22 02:54

administrator   ~0043365

This issue seems to be mostly (but not completely) resolved in build 506. See comments at 0012962:0043364.

Marek, please confirm whether it's resolved or not (once you have a look at the logs).

marek

2015-11-22 19:57

developer   ~0043367

Fixed in build 507

rusty

2015-11-22 21:18

administrator   ~0043368

Verified build 507.