New release from SVN - Possible backwards imcompatible changes

25 views
Skip to first unread message

Ronoaldo José de Lana Pereira

unread,
Mar 27, 2012, 7:20:43 PM3/27/12
to app-engine-...@googlegroups.com
I just noticed out that new fresh code got pushed to the Pipeline API source repository. I'm very excited to check this out, but I was reading the diffs and noticed that kind names ware changed (and I liked the change: prefix them with "pipeline-"). I just have some questions...

Let's suppose this scenario: my pipelines were started from the default version of my app, on a specific queue (I'm using this patch against r53). If i switch to the new version, what is going to happen? Does my old pipelines will continue running in the old version? Or they will get abandoned? Or I may experience some exceptions (ClassCastExceptions, SerializationException, etc.)? What is the safest way to upgrade?

There seems to be a lot of nice new features, can't wait to test them out, specially the new OnBackend JobSetting. If I can contribute with updated documentation or sample code, please, let me know! Also, please add a string configuration to JobSettings to let me choose either the default queue for the pipeline, or a queue name per root job. That wold be amazing!

Best Regads, and congrats for the great work.

-Ronoaldo

Christian Ohler

unread,
Mar 27, 2012, 9:38:45 PM3/27/12
to Google App Engine Pipeline API
On Mar 27, 4:20 pm, Ronoaldo José de Lana Pereira
<rpere...@beneficiofacil.com.br> wrote:
> Let's suppose this scenario: my pipelines were started from the default
> version of my app, on a specific queue (I'm using this patch against r53<https://groups.google.com/d/msg/app-engine-pipeline-api/i84L-Bu0RLI/f...>).
> If i switch to the new version, what is going to happen? Does my old
> pipelines will continue running in the old version? Or they will get
> abandoned? Or I may experience some exceptions (ClassCastExceptions,
> SerializationException, etc.)? What is the safest way to upgrade?

The change is indeed incompatible (as noted in the commit message).
I'd expect that pipelines started in the old version that are still
running will fail with various errors when you switch to the new
version, but I haven't tested this.

The safest way to upgrade is to wait for all your pipelines to finish
before upgrading.

Another option (untested) would be to patch in just the addition of
onBackend but not the job id or entity kind changes, change your code
to send all jobs to a new backend, and deploy this code both to that
backend and your frontend. All jobs created from now on should be
handled by the backend, but jobs created previously that are still in
flight might still point to the frontend. Wait until all jobs that
still point to your frontend are finished. Now all jobs should be
running against the backend only. Finally, upgrade your frontend to
the new code and remove the onBackend setting for all new jobs; all
new jobs will run against your frontend again and use the new entity
kinds and job ids, and old jobs will complete against the backend.
Once they are done, delete the backend.

Ronoaldo José de Lana Pereira

unread,
Mar 28, 2012, 8:19:09 AM3/28/12
to app-engine-...@googlegroups.com
Thanks for your quick reply Christian, I'll take a look at your tips.

Best Regards,

-Ronoaldo
Reply all
Reply to author
Forward
0 new messages