Skip to content

135 deviceType must be specified in this operation #203

Closed
@alexblack

Description

@alexblack

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);
    }
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:bugImpaired feature or lacking behavior that is likely assumed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions