SPL File RandomShedderSample.spl

com.ibm.streamsx.plumbing > shedders 1.0.0 > com.ibm.streamsx.plumbing.sample.shedding > RandomShedderSample.spl

Content

Operators

Composites

composite RandomShedderSample

SPL Source Code


 public composite RandomShedderSample
 {
 	graph
 		() as JCP = JobControlPlane()
 		{
 		}
 
 		// DataFlow with controlled load shedding
 		@spl_category(name = "data")
 		() as DF = DataFlow()
 		{
 		}
 
 		// Flow that controls DataFlow
 		// Note they are not connected using streams,
 		// only indirectly through the control mechanisms
 		// provided by JobControlPlane
 		@spl_note(id = "0", text =
 			"Flow that controls DataFlow by changing the shedding fraction every 30 seconds.")
 		@spl_category(name = "control")
 		() as CF = ControlFlow()
 		{
 		}
 
 }

   

composite RandomShedderFailureSample

Sample application that can be used to demonstrate recovery from failure for com.ibm.streamsx.plumbing.shedders::RandomLoadShedder.

A single change is made to shed tuples in the data flow after 30 seconds to some random fraction >= 0.2.

The failure modes that can be manually tested are:

and then restarting it.

In each case com.ibm.streamsx.plumbing.shedders::RandomLoadShedder reverts to the shedding fraction set by the control flow, and the current fraction can be seen through the sheddingFraction metric, in tuples per million shed.

SPL Source Code


 public composite RandomShedderFailureSample {
    graph
    		() as JCP = JobControlPlane() {}
    		
    				// DataFlow with controlled load shedding
 		@spl_category(name = "data")
 		() as DF = DataFlow()
 		{
 		}
 		
 		stream<float64 fraction> Control = Beacon()
 		{
 			param
 			    initDelay: 30.0;
 				iterations: 1u;
 			output
 				Control : fraction = random() + 0.2;
 		}
 
 		() as ChangeShedding = Custom(Control)
 		{
 			logic
 				state :
 				{
 					boolean __unused = registerRandomShedder("sampleShedder") ;
 				}
 
 				onTuple Control :
 				{
 					setRandomShedderFraction("sampleShedder", fraction) ;
 				}
 			}
 }