-
-
Notifications
You must be signed in to change notification settings - Fork 735
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Installation fails to save: Attempted to change an objectId to one that's already known to the Offline Store. #267
Comments
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.
|
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. |
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. |
This seems like it could be related to #267, but instead of saving a new |
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. |
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. |
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. |
Hi Team, any updates on this? I don't want to disable parse in my app due to this small issue. |
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. |
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:
|
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. |
I'm getting the same error when trying to save my PFUser:
|
Here is the LDS from a device that faces this issue 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", {"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"} |
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. |
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? |
Is the LDS I shared from 1.12.0 useful at all?
|
All I was able to determine from that was there was not another ParseInstallation with the same objectId in SQLite. |
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. |
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) |
"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? |
@stepanov-standy would you be able to provide a small project and environment this issue reproduces on? |
@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 sorry I was asking if there was anything else you wanted me to collect from the device I have that repros the problem. |
"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. |
I've already stated that the error occurs when ParseInstallation.saveInBackground is called. |
That clearly isn't the only cause of it, since ParseInstallation.saveInBackground() succeeds on it's own. |
This problem happens on the device currently. It happens when ParseInstallation.saveInBackground() is called. I'm not sure what else you're looking for here regarding triggers or actions that result in this error with the device. |
I'm looking for a project and/or steps that I can use to make this problem occur for me on my machine. I will not be responding to any more comments on this thread without a way to accomplish this. |
You've said that numerous times. I simply asked for a pointer in the right direction given that I am not familiar with your codebase. |
Did you figure out what you were missing? I again was expecting a yes or no. |
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. |
2 similar comments
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. |
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. |
Hi There! Not able to reproduce the issue in synthetic test I've decided to replace all saveInBackground call to saveEventually. It was my assumption that problem was in saveInBackground. Now I can say that it was wrong. Nothing was changed after the replacement. I still have the same amount of crashes per day (on ~1100 sessions I have ~16-20 crashes). I've received dozens of comments from my users with ask to fix my app crashes, but I still can't reproduce required for the crash conditions on my real devices and emulators. Does someone find a workaround for that problem? What I can say for sure that the first incident with such problem was logged on Google Analytics on 14 November :( |
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. |
4 similar comments
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. |
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. |
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. |
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. |
I wonder if resetting the installation might fix this up: http://stackoverflow.com/questions/31890049/parse-push-notifications-how-to-reset-installation-data |
I think we've fixed this issue in the last set of merges.. |
Roger, awesome! Is it already part of 1.15.1 release? I am ready to test it on my users, because I have 10 app fails daily during last 1,5 year :) |
Hm... looks like the issue still exists :( I've updated to the latest 1.15.6, but still see the same fatal stacktraces from my users:
|
I think you are creating new ParseObject with final type variable. Please check once. |
Here is the info I captured:
Another:
And another:
The text was updated successfully, but these errors were encountered: