Updating CSDL in currently running Push


What’s the best practice for updating a CSDL in an currently running push job without losing any data?

For example, I have a push service running with a stream who’s CSDL contains a filter to 10 twitter ID’s. Let’s say I now want to add another 5 twitter ID’s to that same push service.

What’s the best way to do this without losing any data?


The following workflow should work for you:

- Compile Stream 1

- push/create stream 1

- <consuming stream 1>

- Compile Stream 2

- push/create stream 2

- push/stop stream 1

When you call push/stop, We will stop delivering new data into your Push buffer on our side, but will continue to deliver any data already in the buffer, so you will not lose any interactions.

You may find the Push Status Codes diagram useful for future reference.


Would this be applicable in case of tags and streams for a CSDL?

For example, if I have a scenario where I have setup a Push to listen to a certain CSDL as
CSDL1 = tag “C1” {stream: “h1”}
And I created another search string and say that I create another Master CSDL to include the above one -

MasterCSDL -
   tag "C1" {stream: "h1"}
   tag "C2" {stream: "h2"}
   return { stream "h1" or stream "h2"}

Compile CSDL1
Push using CSDL1
Push using Master CSDL
Stop Push using CSDL1

Would this be a right design?


@akhilalankala This is the process you would want to follow if you are writing your CSDL as you have described.