Parse-SDK-Android icon indicating copy to clipboard operation
Parse-SDK-Android copied to clipboard

Installation fails to save: Attempted to change an objectId to one that's already known to the Offline Store.

Open alexblack opened this issue 9 years ago • 56 comments

Non-fatal Exception: java.lang.Exception: java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store.
       at com.aadhk.woinvoice.util.ParseInit$2.then(ProGuard:195)
       at com.aadhk.woinvoice.util.ParseInit$2.then(ProGuard:173)
       at bolts.Task$15.run(ProGuard:839)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:841)
Caused by java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store.
       at com.parse.OfflineStore.updateObjectId(ProGuard:1468)
       at com.parse.ParseObject.notifyObjectIdChanged(ProGuard:1260)
       at com.parse.ParseObject.setState(ProGuard:738)
       at com.parse.ParseObject.setState(ProGuard:726)
       at com.parse.ParseObject$6.then(ProGuard:1407)
       at com.parse.ParseObject$6.then(ProGuard:1392)
       at bolts.Task$14.run(ProGuard:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeImmediately(ProGuard:789)
       at bolts.Task.access$000(ProGuard:32)
       at bolts.Task$10.then(ProGuard:581)
       at bolts.Task$10.then(ProGuard:578)
       at bolts.Task.runContinuations(ProGuard:875)
       at bolts.Task.trySetError(ProGuard:929)
       at bolts.TaskCompletionSource.trySetError(ProGuard:46)
       at bolts.TaskCompletionSource.setError(ProGuard:71)
       at bolts.Task$15$1.then(ProGuard:854)
       at bolts.Task$15$1.then(ProGuard:843)
       at bolts.Task$14.run(ProGuard:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeImmediately(ProGuard:789)
       at bolts.Task.access$000(ProGuard:32)
       at bolts.Task$10.then(ProGuard:581)
       at bolts.Task$10.then(ProGuard:578)
       at bolts.Task.runContinuations(ProGuard:875)
       at bolts.Task.trySetError(ProGuard:929)
       at bolts.TaskCompletionSource.trySetError(ProGuard:46)
       at bolts.TaskCompletionSource.setError(ProGuard:71)
       at bolts.Task$15$1.then(ProGuard:854)
       at bolts.Task$15$1.then(ProGuard:843)
       at bolts.Task$14.run(ProGuard:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeImmediately(ProGuard:789)
       at bolts.Task.access$000(ProGuard:32)
       at bolts.Task$10.then(ProGuard:581)
       at bolts.Task$10.then(ProGuard:578)
       at bolts.Task.runContinuations(ProGuard:875)
       at bolts.Task.trySetError(ProGuard:929)
       at bolts.TaskCompletionSource.trySetError(ProGuard:46)
       at bolts.TaskCompletionSource.setError(ProGuard:71)
       at bolts.Task$15$1.then(ProGuard:854)
       at bolts.Task$15$1.then(ProGuard:843)
       at bolts.Task$14.run(ProGuard:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeImmediately(ProGuard:789)
       at bolts.Task.continueWith(ProGuard:588)
       at bolts.Task.continueWith(ProGuard:599)
       at bolts.Task$15.run(ProGuard:843)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeAfterTask(ProGuard:830)
       at bolts.Task.access$100(ProGuard:32)
       at bolts.Task$11.then(ProGuard:635)
       at bolts.Task$11.then(ProGuard:632)
       at bolts.Task.runContinuations(ProGuard:875)
       at bolts.Task.trySetError(ProGuard:929)
       at bolts.TaskCompletionSource.trySetError(ProGuard:46)
       at bolts.TaskCompletionSource.setError(ProGuard:71)
       at bolts.Task$15$1.then(ProGuard:854)
       at bolts.Task$15$1.then(ProGuard:843)
       at bolts.Task$14.run(ProGuard:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeImmediately(ProGuard:789)
       at bolts.Task.continueWith(ProGuard:588)
       at bolts.Task.continueWith(ProGuard:599)
       at bolts.Task$15.run(ProGuard:843)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeAfterTask(ProGuard:830)
       at bolts.Task.access$100(ProGuard:32)
       at bolts.Task$11.then(ProGuard:635)
       at bolts.Task$11.then(ProGuard:632)
       at bolts.Task.runContinuations(ProGuard:875)
       at bolts.Task.trySetResult(ProGuard:913)
       at bolts.TaskCompletionSource.trySetResult(ProGuard:39)
       at bolts.TaskCompletionSource.setResult(ProGuard:62)
       at bolts.Task$15$1.then(ProGuard:856)
       at bolts.Task$15$1.then(ProGuard:843)
       at bolts.Task$14.run(ProGuard:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeImmediately(ProGuard:789)
       at bolts.Task.continueWith(ProGuard:588)
       at bolts.Task.continueWith(ProGuard:599)
       at bolts.Task$15.run(ProGuard:843)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeAfterTask(ProGuard:830)
       at bolts.Task.access$100(ProGuard:32)
       at bolts.Task$11.then(ProGuard:635)
       at bolts.Task$11.then(ProGuard:632)
       at bolts.Task.runContinuations(ProGuard:875)
       at bolts.Task.trySetResult(ProGuard:913)
       at bolts.TaskCompletionSource.trySetResult(ProGuard:39)
       at bolts.TaskCompletionSource.setResult(ProGuard:62)
       at bolts.Task$15$1.then(ProGuard:856)
       at bolts.Task$15$1.then(ProGuard:843)
       at bolts.Task$14.run(ProGuard:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
       at bolts.Task.completeImmediately(ProGuard:789)
       at bolts.Task.continueWith(ProGuard:588)
       at bolts.Task.continueWith(ProGuard:599)
       at bolts.Task$15.run(ProGuard:843)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:841)

Here is the info I captured:

msg columns className, objectId are not unique (code 19) 
createdat   Thu May 28 22:16:18 MESZ 2015 
name    installation.save-failed 
appversion  0.1.181 
installationid  12de10a7-0558-43e4-955e-096b9c0b935a 
idx 34 
devicetype  android 
objectid    39CaIPof9e 
runcount    235 
updatedat   Mon Nov 23 05:23:57 MEZ 2015 

Another:

msg Attempted to change an objectId to one that's already known to the Offline Store. 
abtest-template 1 
createdat   Mon Nov 23 10:56:19 EST 2015 
name    installation.save-failed 
appversion  0.1.181 
cdtest-paywall  1 
installationid  6d2923fd-8946-4a36-babe-3889dffe9f50 
idx 78 
devicetype  android 
objectid    FhRwI115GJ 
runcount    12 
updatedat   Tue Nov 24 13:12:28 EST 2015

And another:

msg Attempted to change an objectId to one that's already known to the Offline Store. 
abtest-template 0 
createdat   Mon Nov 23 13:02:53 NZDT 2015 
name    installation.save-failed 
appversion  0.1.181 
cdtest-paywall  1 
installationid  c8a29f3a-e63c-4865-9241-5e8d242d3031 
idx 43 
devicetype  android 
objectid    C8n83z7WL7 
runcount    7 
updatedat   Tue Nov 24 19:58:57 NZDT 2015 

alexblack avatar Nov 24 '15 23:11 alexblack

Thank you for your feedback. We prioritize issues that have clear and concise repro steps. Please see our Bug Reporting Guidelines about what information should be added to this issue.

Please try the latest SDK. Our release notes have details about what issues were fixed in each release.

In addition, you might find the following resources helpful:

  • Documentation: https://www.parse.com/docs
  • Google Groups: https://groups.google.com/forum/#!forum/parse-developers
  • Stack Overflow: http://stackoverflow.com/tags/parse.com

parse-github-bot avatar Nov 30 '15 18:11 parse-github-bot

Hi @wangmengyan95 what more info would you like? If you have any insight into how to reproduce this parse bug that would be super helpful. It seems rather mysterious to me.

I've included the information I've captured from 3 different users who have experienced this issue, I'm happy to collect any further data you require.

alexblack avatar Nov 30 '15 18:11 alexblack

Hi @alexblack, thanks for the quick response, I am trying to figure out what is the possible cause of this issue. I will update the information I need here.

wangmengyan95 avatar Nov 30 '15 19:11 wangmengyan95

This seems like it could be related to #267, but instead of saving a new ParseInstallation instance with the installationId from disk from a ParseInstallation that has failed to be read from LDS, the ParseInstallation in LDS is succeeding to be read at some point after the first read failed and the save on the new instance who's objectId is then being tracked by LDS so LDS throws an error when the save result returns.

grantland avatar Dec 04 '15 22:12 grantland

I have the same bug, I don't know how to reproduce it. It keeps showing up in my crash tracking system. I am deleting the parse data manually from the disk and cache when the user logs out. The parse installation is also cleared from the cloud code.

iRazvan avatar Dec 11 '15 11:12 iRazvan

Hi Folks,

Looks like I have similar issue. What is interesting that my android app has been in production for 3 month. And only during last 1 month I see such stack traces from real users in my bug report system:

java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store. at com.parse.OfflineStore.updateObjectId(OfflineStore.java:1468) at com.parse.ParseObject.notifyObjectIdChanged(ParseObject.java:1353) at com.parse.ParseObject.setState(ParseObject.java:751) at com.parse.ParseObject.setState(ParseObject.java:739) at com.parse.ParseObject$6.then(ParseObject.java:1500) at com.parse.ParseObject$6.then(ParseObject.java:1485) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:581) at bolts.Task$10.then(Task.java:578) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:581) at bolts.Task$10.then(Task.java:578) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:581) at bolts.Task$10.then(Task.java:578) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:830) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:635) at bolts.Task$11.then(Task.java:632) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetError(Task.java:929) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:854) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:830) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:635) at bolts.Task$11.then(Task.java:632) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetResult(Task.java:913) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:856) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:830) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:635) at bolts.Task$11.then(Task.java:632) at bolts.Task.runContinuations(Task.java:875) at bolts.Task.trySetResult(Task.java:913) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:856) at bolts.Task$15$1.then(Task.java:843) at bolts.Task$14.run(Task.java:798) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:789) at bolts.Task.continueWith(Task.java:588) at bolts.Task.continueWith(Task.java:599) at bolts.Task$15.run(Task.java:843) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:838)

Unfortunately, I can't reproduce it locally on my test environments (emulators and real devices). Taking into account it's failure during async update of the offline mode, I can't say for sure what app actions cause this problem.

Parse Team, could you explain possible cases that may lead to such behaviour? Is it possible to ignore such exceptions that are currently fatal for my app and fully crash it.

stepanov-standy avatar Dec 13 '15 09:12 stepanov-standy

This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.

parse-github-bot avatar Dec 20 '15 10:12 parse-github-bot

Hi Team, any updates on this? I don't want to disable parse in my app due to this small issue.

stepanov-standy avatar Dec 24 '15 13:12 stepanov-standy

This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.

parse-github-bot avatar Dec 31 '15 13:12 parse-github-bot

It is for sure a problem which is comming from Parse SDK. We use the latest version and we can see the same issue for some users on some instalations:

Fatal Exception: java.lang.RuntimeException: Unable to create application OurcoolApplication: java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store.
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4861)
       at android.app.ActivityThread.access$1500(ActivityThread.java:178)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1531)
       at android.os.Handler.dispatchMessage(Handler.java:111)
       at android.os.Looper.loop(Looper.java:194)
       at android.app.ActivityThread.main(ActivityThread.java:5637)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store.
       at com.parse.OfflineStore.updateObjectId(OfflineStore.java:1468)
       at com.parse.ParseObject.notifyObjectIdChanged(ParseObject.java:1260)
       at com.parse.ParseObject.setState(ParseObject.java:738)
       at com.parse.ParseObject.setState(ParseObject.java:726)
       at com.parse.ParseObject$6.then(ParseObject.java:1407)
       at com.parse.ParseObject$6.then(ParseObject.java:1392)
       at bolts.Task$14.run(Task.java:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:789)
       at bolts.Task.access$000(Task.java:32)
       at bolts.Task$10.then(Task.java:581)
       at bolts.Task$10.then(Task.java:578)
       at bolts.Task.runContinuations(Task.java:875)
       at bolts.Task.trySetError(Task.java:929)
       at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
       at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
       at bolts.Task$15$1.then(Task.java:854)
       at bolts.Task$15$1.then(Task.java:843)
       at bolts.Task$14.run(Task.java:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:789)
       at bolts.Task.access$000(Task.java:32)
       at bolts.Task$10.then(Task.java:581)
       at bolts.Task$10.then(Task.java:578)
       at bolts.Task.runContinuations(Task.java:875)
       at bolts.Task.trySetError(Task.java:929)
       at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
       at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
       at bolts.Task$15$1.then(Task.java:854)
       at bolts.Task$15$1.then(Task.java:843)
       at bolts.Task$14.run(Task.java:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:789)
       at bolts.Task.access$000(Task.java:32)
       at bolts.Task$10.then(Task.java:581)
       at bolts.Task$10.then(Task.java:578)
       at bolts.Task.runContinuations(Task.java:875)
       at bolts.Task.trySetError(Task.java:929)
       at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
       at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
       at bolts.Task$15$1.then(Task.java:854)
       at bolts.Task$15$1.then(Task.java:843)
       at bolts.Task$14.run(Task.java:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:789)
       at bolts.Task.continueWith(Task.java:588)
       at bolts.Task.continueWith(Task.java:599)
       at bolts.Task$15.run(Task.java:843)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:830)
       at bolts.Task.access$100(Task.java:32)
       at bolts.Task$11.then(Task.java:635)
       at bolts.Task$11.then(Task.java:632)
       at bolts.Task.runContinuations(Task.java:875)
       at bolts.Task.trySetError(Task.java:929)
       at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46)
       at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71)
       at bolts.Task$15$1.then(Task.java:854)
       at bolts.Task$15$1.then(Task.java:843)
       at bolts.Task$14.run(Task.java:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:789)
       at bolts.Task.continueWith(Task.java:588)
       at bolts.Task.continueWith(Task.java:599)
       at bolts.Task$15.run(Task.java:843)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:830)
       at bolts.Task.access$100(Task.java:32)
       at bolts.Task$11.then(Task.java:635)
       at bolts.Task$11.then(Task.java:632)
       at bolts.Task.runContinuations(Task.java:875)
       at bolts.Task.trySetResult(Task.java:913)
       at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
       at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
       at bolts.Task$15$1.then(Task.java:856)
       at bolts.Task$15$1.then(Task.java:843)
       at bolts.Task$14.run(Task.java:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:789)
       at bolts.Task.continueWith(Task.java:588)
       at bolts.Task.continueWith(Task.java:599)
       at bolts.Task$15.run(Task.java:843)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeAfterTask(Task.java:830)
       at bolts.Task.access$100(Task.java:32)
       at bolts.Task$11.then(Task.java:635)
       at bolts.Task$11.then(Task.java:632)
       at bolts.Task.runContinuations(Task.java:875)
       at bolts.Task.trySetResult(Task.java:913)
       at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39)
       at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62)
       at bolts.Task$15$1.then(Task.java:856)
       at bolts.Task$15$1.then(Task.java:843)
       at bolts.Task$14.run(Task.java:798)
       at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
       at bolts.Task.completeImmediately(Task.java:789)
       at bolts.Task.continueWith(Task.java:588)
       at bolts.Task.continueWith(Task.java:599)
       at bolts.Task$15.run(Task.java:843)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)

mailat avatar Jan 06 '16 19:01 mailat

This issue has not been updated for 7 days. If you have additional information to help pinpoint this issue as an SDK bug, please comment on this issue. We will close this issue in 7 days if no additional information is provided. Thank you for your feedback.

parse-github-bot avatar Jan 13 '16 19:01 parse-github-bot

I'm getting the same error when trying to save my PFUser:

Attempted to change an objectId to one that's already known to the OfflineStore.

agordeev avatar Jan 19 '16 11:01 agordeev

Here is the LDS from a device that faces this issue

ParseOfflineStore.zip

For data in this app: https://parse.com/apps/invoice-maker-dev

Here is some meta data:

{"appVersion":"0.1.192","createdAt":"Thu Jan 21 20:27:53 EST 2016","deviceType":"android","idx":"165", "installationId":"ea4c6657-e4c1-4ed6-a79c-759f0f794469","msg":"There were 2 exceptions.","objectId":"Nn0mwH9M6o","runCount":"20","updatedAt":"Thu Jan 21 23:59:11 EST 2016"}

{"appVersion":"0.1.192","createdAt":"Thu Jan 21 20:27:53 EST 2016","deviceType":"android","idx":"163","installationId":"ea4c6657-e4c1-4ed6-a79c-759f0f794469","msg":"Attempted to change an objectId to one that's already known to the Offline Store.","objectId":"Nn0mwH9M6o","runCount":"20","updatedAt":"Thu Jan 21 23:59:10 EST 2016"}

alexblack avatar Jan 22 '16 06:01 alexblack

Parse Team, could you provide an ETA for the fix of the issue. It's pretty important for all of us, because it affects our users.

stepanov-standy avatar Jan 22 '16 15:01 stepanov-standy

Could anyone confirm that this is still an issue with the latest version of the SDK (v1.13.0), an updated stack trace, and a small project that repros this issue with it?

grantland avatar Jan 23 '16 00:01 grantland

Is the LDS I shared from 1.12.0 useful at all? On 22 Jan 2016 4:16 pm, "Grantland Chew" [email protected] wrote:

Could anyone confirm that this is still an issue with the latest version of the SDK (v1.13.0), an updated stack trace, and a small project that repros this issue with it?

— Reply to this email directly or view it on GitHub https://github.com/ParsePlatform/Parse-SDK-Android/issues/267#issuecomment-174095809 .

alexblack avatar Jan 23 '16 00:01 alexblack

All I was able to determine from that was there was not another ParseInstallation with the same objectId in SQLite.

grantland avatar Jan 23 '16 00:01 grantland

There is a fair amount of info on this thread. A LDS capture, stack traces, example objects on your server that are having the problem.

Like the other Parse bugs I've hit I don't have any insights into how to reproduce this one. I do have it reproducible right now on a device, if there is anything else you would like me to collect just let me know.

alexblack avatar Jan 23 '16 02:01 alexblack

Hi Folks,

I have to confirm that even on 1.13 version the problem is reproducible :(

Stack trace is still the same:

java.lang.RuntimeException: Attempted to change an objectId to one that's already known to the Offline Store. at com.parse.OfflineStore.updateObjectId(OfflineStore.java:1469) at com.parse.ParseObject.notifyObjectIdChanged(ParseObject.java:1202) at com.parse.ParseObject.setState(ParseObject.java:680) at com.parse.ParseObject.setState(ParseObject.java:668) at com.parse.ParseObject$6.then(ParseObject.java:1349) at com.parse.ParseObject$6.then(ParseObject.java:1334) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:654) at bolts.Task$10.then(Task.java:651) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:654) at bolts.Task$10.then(Task.java:651) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.access$000(Task.java:32) at bolts.Task$10.then(Task.java:654) at bolts.Task$10.then(Task.java:651) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:908) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:708) at bolts.Task$11.then(Task.java:705) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetError(Task.java:1011) at bolts.TaskCompletionSource.trySetError(TaskCompletionSource.java:46) at bolts.TaskCompletionSource.setError(TaskCompletionSource.java:71) at bolts.Task$15$1.then(Task.java:932) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:908) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:708) at bolts.Task$11.then(Task.java:705) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetResult(Task.java:994) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:934) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeAfterTask(Task.java:908) at bolts.Task.access$100(Task.java:32) at bolts.Task$11.then(Task.java:708) at bolts.Task$11.then(Task.java:705) at bolts.Task.runContinuations(Task.java:956) at bolts.Task.trySetResult(Task.java:994) at bolts.TaskCompletionSource.trySetResult(TaskCompletionSource.java:39) at bolts.TaskCompletionSource.setResult(TaskCompletionSource.java:62) at bolts.Task$15$1.then(Task.java:934) at bolts.Task$15$1.then(Task.java:921) at bolts.Task$14.run(Task.java:872) at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105) at bolts.Task.completeImmediately(Task.java:863) at bolts.Task.continueWith(Task.java:661) at bolts.Task.continueWith(Task.java:672) at bolts.Task$15.run(Task.java:921) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841)

stepanov-standy avatar Jan 23 '16 22:01 stepanov-standy

"Like the other Parse bugs I've hit I don't have any insights into how to reproduce this one. I do have it reproducible right now on a device, if there is anything else you would like me to collect just let me know."

@grantland any thoughts? Or any suggestions on how to reproduce this?

alexblack avatar Jan 25 '16 22:01 alexblack

@stepanov-standy would you be able to provide a small project and environment this issue reproduces on?

grantland avatar Jan 26 '16 00:01 grantland

@alexblack i do not. this issue does not appear for us in any of our projects or environments so anything we could think of would be a shot in the dark. owners of the codebase that this reproduces are generally responsible for knowing how to reproduce it, since they have code that shows these symptoms.

grantland avatar Jan 26 '16 00:01 grantland

@grantland sorry I was asking if there was anything else you wanted me to collect from the device I have that repros the problem.

alexblack avatar Jan 26 '16 00:01 alexblack

"owners of the codebase that this reproduces are generally responsible for knowing how to reproduce it"

Yes I'm aware of Parse's attitude towards its customers :)

I'm not sure about the other Parse users on this thread, but I certainly feel completely in the dark about how to reproduce these bizarre bugs.

My code is doing pretty straightforward things, like, saving the ParseInstallation object. Its not clear how you expect me to figure out from my code that saves an installation why your code is throwing this exception.

alexblack avatar Jan 26 '16 00:01 alexblack

@alexblack grabbing data from a live production device isn't really a viable solution, since I'd need to step through methods in the SDK with the debugger. I could, however, do this if I had stable repro steps.

If this was the cause of something straightforward, it would be easy to isolate into a small project. This doesn't seem to be the case since none of those affected can reproduce it.

grantland avatar Jan 26 '16 00:01 grantland

@grantland I don't seem to see a response to my question. I have a device that repros the problem, I managed to capture the LDS from it, is there anything you'd like me to capture from it that might help give us clues as to the problem?

eg logs, or values of variables, etc? When we don't have a simple repro case steps like these are standard bug solving practice.

alexblack avatar Jan 26 '16 00:01 alexblack

I answered this above:

grabbing data from a live production device isn't really a viable solution, since I'd need to step through methods in the SDK with the debugger. I could, however, do this if I had stable repro steps.

Basically I need internal variables and possibly unattached object instances, which cannot be grabbed externally and reported.

The biggest problem is that without a repro we cannot prioritize this issue.

grantland avatar Jan 26 '16 00:01 grantland

Odd, I was expecting a yes or a no.

What if I ran the app with the Parse Android SDK source attached? I could then set breakpoints, and inspect things.

alexblack avatar Jan 26 '16 00:01 alexblack

It was a no.

If you can reproduce it, why not isolate the problem and deliver a repro project?

grantland avatar Jan 26 '16 00:01 grantland

As I mentioned above, I'm in the dark about how to isolate the problem and reproduce it. I am not familiar with your codebase, or where to look. My code simply calls ParseInstallation.saveInBackground, I'd be stepping through and learning the Parse codebase to figure this one out. How would you suggest I go about that?

Given my new idea - attaching the debugger and running with the sources attached, is there anything useful I could grab for you? Like internal variables etc.

alexblack avatar Jan 26 '16 00:01 alexblack