Closed
Description
A lot of my users encounter this error, I can't repro it, not sure what is going on. I'm using SDK 1.10.3. I first opened this issue on June 4th:
https://developers.facebook.com/bugs/903903186334036/
http://crashes.to/s/8a6fe6eb94f
"Failed to save parse installation: 135"
java.lang.Exception: com.parse.ph: deviceType must be specified in this operation
at com.aadhk.woinvoice.util.ParseInit$2.then(ProGuard:163)
at com.aadhk.woinvoice.util.ParseInit$2.then(ProGuard:156)
at bolts.Task$15.run(ProGuard:825)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeAfterTask(ProGuard:816)
at bolts.Task.access$200(ProGuard:32)
at bolts.Task$11.then(ProGuard:621)
at bolts.Task$11.then(ProGuard:618)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.access$100(ProGuard:32)
at bolts.Task$10.then(ProGuard:567)
at bolts.Task$10.then(ProGuard:564)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.access$100(ProGuard:32)
at bolts.Task$10.then(ProGuard:567)
at bolts.Task$10.then(ProGuard:564)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.continueWith(ProGuard:574)
at bolts.Task.continueWith(ProGuard:585)
at bolts.Task$15.run(ProGuard:829)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeAfterTask(ProGuard:816)
at bolts.Task.access$200(ProGuard:32)
at bolts.Task$11.then(ProGuard:621)
at bolts.Task$11.then(ProGuard:618)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.access$100(ProGuard:32)
at bolts.Task$10.then(ProGuard:567)
at bolts.Task$10.then(ProGuard:564)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.access$100(ProGuard:32)
at bolts.Task$10.then(ProGuard:567)
at bolts.Task$10.then(ProGuard:564)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.continueWith(ProGuard:574)
at bolts.Task.continueWith(ProGuard:585)
at bolts.Task$15.run(ProGuard:829)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeAfterTask(ProGuard:816)
at bolts.Task.access$200(ProGuard:32)
at bolts.Task$11.then(ProGuard:621)
at bolts.Task$11.then(ProGuard:618)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.continueWith(ProGuard:574)
at bolts.Task.continueWith(ProGuard:585)
at bolts.Task$15.run(ProGuard:829)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeAfterTask(ProGuard:816)
at bolts.Task.access$200(ProGuard:32)
at bolts.Task$11.then(ProGuard:621)
at bolts.Task$11.then(ProGuard:618)
at bolts.Task.runContinuations(ProGuard:861)
at bolts.Task.access$600(ProGuard:32)
at bolts.Task$TaskCompletionSource.trySetError(ProGuard:932)
at bolts.Task$TaskCompletionSource.setError(ProGuard:959)
at bolts.Task$15$1.then(ProGuard:840)
at bolts.Task$15$1.then(ProGuard:829)
at bolts.Task$14.run(ProGuard:784)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeImmediately(ProGuard:775)
at bolts.Task.continueWith(ProGuard:574)
at bolts.Task.continueWith(ProGuard:585)
at bolts.Task$15.run(ProGuard:829)
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)
Caused by: com.parse.ph: deviceType must be specified in this operation
at com.parse.ParseRequest.onResponseAsync(ProGuard:301)
at com.parse.ParseRESTCommand.onResponseAsync(ProGuard:288)
at com.parse.ParseRequest$3.then(ProGuard:151)
at com.parse.ParseRequest$3.then(ProGuard:147)
at bolts.Task$15.run(ProGuard:825)
at bolts.BoltsExecutors$ImmediateExecutor.execute(ProGuard:105)
at bolts.Task.completeAfterTask(ProGuard:816)
at bolts.Task.continueWithTask(ProGuard:628)
at bolts.Task.continueWithTask(ProGuard:639)
at bolts.Task$13.then(ProGuard:731)
at bolts.Task$13.then(ProGuard:719)
at bolts.Task$15.run(ProGuard:825)
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)
Here is a snippet of my code in this stack trace:
public Task<ParseInstallation> initParseInstallation() {
final TimingLogger timings = new TimingLogger(TAG, "initParseInstallation");
Log.d(TAG, "initParseInstallation");
try {
final ParseInstallation installation = ParseInstallation.getCurrentInstallation();
installation.put("flavor", BuildConfig.FLAVOR);
installation.put("accountId", accountId);
installation.put("user", ParseUser.getCurrentUser());
try {
installation.put("androidId", Settings.Secure.getString(ctx.getContentResolver(), Settings.Secure.ANDROID_ID));
installation.put("android", String.format("%s (%s %s)", Build.VERSION.RELEASE, Build.VERSION.CODENAME, Build.VERSION.INCREMENTAL));
installation.put("device", String.format("%s (%s)", DeviceUtils.getDeviceName(), Build.HARDWARE));
installation.put("abi", Build.CPU_ABI);
installation.put("syncEnabled", Syncer.syncEnabled(ctx));
installation.increment("appStart");
} catch (Exception e) {
App.err(ctx, "Failed to set properties on installation", e);
}
if (installation.containsKey("GCMSenderId"))
installation.remove("GCMSenderId");
timings.addSplit("setInstall");
return installation.saveInBackground().continueWithTask(new Continuation<Void, Task<ParseInstallation>>() {
@Override
public Task<ParseInstallation> then(Task<Void> task) throws Exception {
timings.addSplit("onInstall");
if (task.isFaulted()) {
if (task.getError() instanceof ParseException) {
ParseException e = (ParseException) task.getError();
App.err(ctx, "Failed to save parse installation: " + e.getCode(), new Exception(e));
} else {
App.err(ctx, "Failed to save parse installation", new Exception(task.getError()));
}
return Task.forError(task.getError());
} else {
Log.d(TAG, "Successfully initialized parseInstallation: " + installation.getObjectId());
return Task.forResult(installation);
}
}
});
} catch (Exception e) {
App.err(ctx, "Failed to setup parse installation", e);
return Task.forError(e);
}
}