{"record":{"id":"6968c85e037a566b","repo":"linera-io/linera-protocol","slug":"unprocessedstreams","errorCode":"UnprocessedStreams","errorMessage":"ExecutionError::UnprocessedStreams","messagePattern":"ExecutionError::UnprocessedStreams","errorType":"exception","errorClass":"ExecutionError","httpStatus":null,"severity":"error","filePath":"linera-execution/src/transaction_tracker.rs","lineNumber":387,"sourceCode":"    pub fn into_outcome(self) -> Result<TransactionOutcome, ExecutionError> {\n        let TransactionTracker {\n            replaying_oracle_responses,\n            oracle_responses,\n            outgoing_messages,\n            local_time: _,\n            transaction_index: _,\n            next_application_index,\n            next_chain_index,\n            events,\n            blobs,\n            previously_created_blobs: _,\n            operation_result,\n            streams_to_process,\n            blobs_published,\n            free_blob_ids,\n            prepared_checkpoint: _,\n        } = self;\n        ensure!(\n            streams_to_process.is_empty(),\n            ExecutionError::UnprocessedStreams\n        );\n        if let Some(mut responses) = replaying_oracle_responses {\n            ensure!(\n                responses.next().is_none(),\n                ExecutionError::UnexpectedOracleResponse\n            );\n        }\n        let blobs = blobs\n            .into_iter()\n            .map(|(blob_id, content)| Blob::new_with_hash_unchecked(blob_id, content))\n            .collect::<Vec<_>>();\n        Ok(TransactionOutcome {\n            outgoing_messages,\n            oracle_responses,\n            next_application_index,\n            next_chain_index,","sourceCodeStart":369,"sourceCodeEnd":405,"githubUrl":"https://github.com/linera-io/linera-protocol/blob/6c226ddcb332ef55118dc8d0aafbd093d5420899/linera-execution/src/transaction_tracker.rs#L369-L405","documentation":"When a transaction finishes, TransactionTracker::into_outcome finalizes it and asserts that every stream the application created (streams_to_process) has been processed by the caller. UnprocessedStreams means the transaction created at least one stream whose events were never consumed, so converting the tracker into a TransactionOutcome is refused.","triggerScenarios":"An application creates a new event stream via the system API during execution, but the executor never drains streams_to_process before calling into_outcome — typically a custom block executor or hand-rolled test harness that skips the stream-processing step that the standard execute_transaction path performs.","commonSituations":"Custom applications or SDK versions that create streams while an older node version or custom harness does not process them; protocol upgrades that introduce stream handling on one side but not the other.","solutions":["Process every created stream before finalizing: the standard block executor does this inside execute_transaction, so if you wrap it, keep that step in your wrapper","Upgrade node and application SDK to matching versions so stream creation and processing are both handled","If the application should not emit streams, remove the create-stream call from its code and redeploy"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"Match ExecutionError::UnprocessedStreams when calling into_outcome or execute_transaction and treat it as an integration bug between the application and the executor. Do not swallow it: committing without processing the stream would lose events.","preventionTips":["Use the provided block executor rather than reimplementing transaction finalization","Keep application SDK and node versions in lockstep when your app creates streams or events","In tests, always run the full execute_transaction path so stream processing happens"],"tags":["streams","transaction-outcome","finalization","linera-execution"],"backgroundTag":"unprocessed-streams","analyzedSha":"6c226ddcb332ef55118dc8d0aafbd093d5420899","analyzedAt":"2026-08-22T22:49:09.787Z","schemaVersion":2},"datasetVersion":"2026-08-23T01:17:44.959Z"}