Uploaded image for project: 'Aurora'
  1. Aurora
  2. AURORA-769

No-op job update fails with "Missing both initial and desired states. At least one is required."

    XMLWordPrintableJSON

Details

    • Story
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • None
    • 0.6.0
    • Scheduler
    • None

    Description

      This is pretty easy to reproduce - do a server-driven job update, then do it again.

      This should result in no action by the scheduler, and console output including:

      Job is unchanged by proposed update
      

      Instead you get:

      log(info): Message from scheduler: Missing both initial and desired states. At least one is required.
      

      Relevant stack trace:

      W0930 00:32:24.335 THREAD120 org.apache.aurora.scheduler.thrift.aop.LoggingInterceptor.invoke: Uncaught exception while handling startJobUpdate(JobUpdateRequest(taskConfig:TaskConfig(owner:Identity(role:www-data, user:vagrant), environment:devel, jobName:hello_world, isService:true, numCpus:1.0, ramMb:1, diskMb:8, priority:0, maxTaskFailures:1, production:false, constraints:[], requestedPorts:[], taskLinks:{}, executorConfig:ExecutorConfig(name:AuroraExecutor, data:{"priority": 0, "health_check_config": {"initial_interval_secs": 15.0, "interval_secs": 10.0, "timeout_secs": 1.0, "max_consecutive_failures": 0}, "name": "hello_world", "environment": "devel", "max_task_failures": 1, "task": {"processes": [{"daemon": false, "name": "fetch_package", "ephemeral": false, "max_failures": 1, "min_duration": 5, "cmdline": "cp /vagrant/hello_world.py . && echo f0cc21c10c2b91974b0cac2629bbee6c && chmod +x hello_world.py", "final": false}, {"daemon": false, "name": "hello_world", "ephemeral": false, "max_failures": 1, "min_duration": 5, "cmdline": "python hello_world.py", "final": false}], "name": "fetch_package", "finalization_wait": 30, "max_failures": 1, "max_concurrency": 0, "resources": {"disk": 8388608, "ram": 1048576, "cpu": 1.0}, "constraints": [{"order": ["fetch_package", "hello_world"]}]}, "enable_hooks": false, "cluster": "devcluster", "production": false, "role": "www-data"}), metadata:[]), instanceCount:1, settings:JobUpdateSettings(updateGroupSize:1, maxPerInstanceFailures:0, maxFailedInstances:0, maxWaitToInstanceRunningMs:60000, minWaitInInstanceRunningMs:45000, rollbackOnFailure:true, updateOnlyTheseInstances:null, waitForBatchCompletion:false)), SessionKey(mechanism:UNAUTHENTICATED, data:50 D0 14 4C 71 0D 4C 80 80 4C 40))
      java.lang.IllegalArgumentException: Missing both initial and desired states. At least one is required.
              at org.apache.aurora.scheduler.storage.db.DBJobUpdateStore.saveJobUpdate(DBJobUpdateStore.java:73)
              at com.twitter.common.inject.TimedInterceptor.invoke(TimedInterceptor.java:87)
              at org.apache.aurora.scheduler.storage.log.WriteAheadStorage.saveJobUpdate(WriteAheadStorage.java:287)
              at org.apache.aurora.scheduler.updater.JobUpdateControllerImpl$1.execute(JobUpdateControllerImpl.java:153)
              at org.apache.aurora.scheduler.storage.Storage$MutateWork$NoResult.apply(Storage.java:132)
              at org.apache.aurora.scheduler.storage.Storage$MutateWork$NoResult.apply(Storage.java:128)
              at org.apache.aurora.scheduler.storage.log.LogStorage.write(LogStorage.java:551)
              at org.apache.aurora.scheduler.storage.CallOrderEnforcingStorage.write(CallOrderEnforcingStorage.java:130)
              at org.apache.aurora.scheduler.updater.JobUpdateControllerImpl.start(JobUpdateControllerImpl.java:131)
              at org.apache.aurora.scheduler.thrift.SchedulerThriftInterface$14.apply(SchedulerThriftInterface.java:1456)
              at org.apache.aurora.scheduler.thrift.SchedulerThriftInterface$14.apply(SchedulerThriftInterface.java:1416)
              at org.apache.aurora.scheduler.storage.log.LogStorage$7.apply(LogStorage.java:559)
              at org.apache.aurora.scheduler.storage.log.LogStorage$7.apply(LogStorage.java:556)
              at org.apache.aurora.scheduler.storage.mem.MemStorage.doWork(MemStorage.java:175)
              at org.apache.aurora.scheduler.storage.mem.MemStorage.access$400(MemStorage.java:59)
              at org.apache.aurora.scheduler.storage.mem.MemStorage$4.apply(MemStorage.java:200)
              at org.apache.aurora.scheduler.storage.mem.MemStorage$4.apply(MemStorage.java:197)
              at org.apache.aurora.scheduler.storage.db.DbStorage.write(DbStorage.java:150)
              at org.mybatis.guice.transactional.TransactionalMethodInterceptor.invoke(TransactionalMethodInterceptor.java:101)
              at org.apache.aurora.scheduler.storage.mem.MemStorage.write(MemStorage.java:197)
              at org.apache.aurora.scheduler.storage.log.LogStorage.write(LogStorage.java:556)
              at org.apache.aurora.scheduler.storage.CallOrderEnforcingStorage.write(CallOrderEnforcingStorage.java:130)
              at org.apache.aurora.scheduler.thrift.SchedulerThriftInterface.startJobUpdate(SchedulerThriftInterface.java:1416)
      

      Attachments

        Issue Links

          Activity

            People

              wfarner Bill Farner
              wfarner Bill Farner
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: