inode not preserved

Android file sharing API seems to be dependent on the inode number.

I’m syncing a calendar.ics file from Linux to Android to be used by ICSx5 app. Even when the file inode doesn’t change on Linux, it is changed on Android on every change operation. This results in failure when ICSx5 tries to access the file again:

java.io.IOException: Couldn't open file from storage
	at at.bitfire.icsdroid.CalendarFetcher.fetchLocal$icsx5_75_2_2_standardRelease(Unknown Source:155)
	at at.bitfire.icsdroid.CalendarFetcher.fetch(Unknown Source:42)
	at at.bitfire.icsdroid.ProcessEventsTask.processEvents(SourceFile:0)
	at at.bitfire.icsdroid.ProcessEventsTask.sync(Unknown Source:77)
	at at.bitfire.icsdroid.SyncWorker.doWork(Unknown Source:276)
	at androidx.work.CoroutineWorker$startWork$1.invokeSuspend(Unknown Source:32)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Unknown Source:11)
	at kotlinx.coroutines.DispatchedTask.run(Unknown Source:98)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(Unknown Source:0)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(Unknown Source:14)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(Unknown Source:28)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(Unknown Source:0)

This issue: In place file updates · Issue #3897 · syncthing/syncthing · GitHub seems relevant but for some reason, I did not get this issue on previous syncthing updates. I’m trying to determine the first version update that resulted in this.

Perhaps it’s the software that produces/consumes the ics file that has changed? The behaviour of replacing files has been there from the very beginning.

This has been a confusing bug for me. Now it works again. I downgraded ICSx5 to older version to test it. The older version couldn’t sync. I upgraded it again and now it’s working.

But I need to double check on whether this is true or not:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.