Problem
In 2.0.0-rc.37, the PHP worker correctly rejects a missing or non-Avro root payload_codec before payload decode or user-handler execution. For activity tasks, however, Worker::rejectPolledTask() calls failActivityTask() with non_retryable set to false. The Server can therefore apply the activity retry policy to a protocol-incompatible task and redeliver it, causing repeated poison-task attempts instead of one terminal, actionable codec failure.
Acceptance criteria
- Report unsupported activity-task codecs with
failure.non_retryable=true while retaining the stable unsupported_payload_codec diagnostic.
- Preserve the existing pre-decode rejection behavior for missing, empty, JSON, unknown, wrong-case, null, and other non-string root codec values.
- Add focused transport assertions that the activity failure request is non-retryable, performs no payload decode or user-handler work, and does not affect normal application activity-failure retryability.
- Verify against the supported standalone Server that an incompatible activity task reaches a terminal unsupported-codec failure without scheduling another activity attempt.
Delete when
Delete this issue when the published PHP SDK reports unsupported activity-task codecs as non-retryable and the supported Server evidence proves the incompatible task is not redelivered.
Problem
In
2.0.0-rc.37, the PHP worker correctly rejects a missing or non-Avro rootpayload_codecbefore payload decode or user-handler execution. For activity tasks, however,Worker::rejectPolledTask()callsfailActivityTask()withnon_retryableset tofalse. The Server can therefore apply the activity retry policy to a protocol-incompatible task and redeliver it, causing repeated poison-task attempts instead of one terminal, actionable codec failure.Acceptance criteria
failure.non_retryable=truewhile retaining the stableunsupported_payload_codecdiagnostic.Delete when
Delete this issue when the published PHP SDK reports unsupported activity-task codecs as non-retryable and the supported Server evidence proves the incompatible task is not redelivered.