An apparatus including: a computing system including one or more nodes (152; 121), the computing system configured to execute a plurality of data processing programs that each process at least one stream of data units; and at least one data storage system accessible to at least one of the one or more nodes, the data storage system, in use, storing shared data accessible by at least two of the plurality of data processing programs; wherein processing at least one stream of data units using at least a first data processing program of the one or more data processing programs includes: processing a first stream of data units to generate output for each of a plurality of subsets of contiguous data units within the first stream of data units; initiating termination of processing within the first data processing program, between processing a first subset of contiguous data units and processing a second subset of contiguous data units adjacent to the first subset of contiguous data units within the first stream of data units; durably storing at least some changes to the shared data caused by processing the first subset of contiguous data units after determining that the termination of processing within the first data processing program has completed; resuming processing within the first data processing program after the changes have been durably stored; and releasing, from the first data processing program, first output generated for the first subset of contiguous data units after the changes have been durably stored. a computing system including one or more nodes (152; 121), the computing system configured to execute a plurality of data processing programs that each process at least one stream of data units; and at least one data storage system accessible to at least one of the one or more nodes, the data storage system, in use, storing shared data accessible by at least two of the plurality of data processing programs; wherein processing at least one stream of data units using at least a first data processing program of the one or more data processing programs includes: processing a first stream of data units to generate output for each of a plurality of subsets of contiguous data units within the first stream of data units; initiating termination of processing within the first data processing program, between processing a first subset of contiguous data units and processing a second subset of contiguous data units adjacent to the first subset of contiguous data units within the first stream of data units; durably storing at least some changes to the shared data caused by processing the first subset of contiguous data units after determining that the termination of processing within the first data processing program has completed; resuming processing within the first data processing program after the changes have been durably stored; and releasing, from the first data processing program, first output generated for the first subset of contiguous data units after the changes have been durably stored. processing a first stream of data units to generate output for each of a plurality of subsets of contiguous data units within the first stream of data units; initiating termination of processing within the first data processing program, between processing a first subset of contiguous data units and processing a second subset of contiguous data units adjacent to the first subset of contiguous data units within the first stream of data units; durably storing at least some changes to the shared data caused by processing the first subset of contiguous data units after determining that the termination of processing within the first data processing program has completed; resuming processing within the first data processing program after the changes have been durably stored; and releasing, from the first data processing program, first output generated for the first subset of contiguous data units after the changes have been durably stored.