hubcio commented on code in PR #4092:
URL: https://github.com/apache/iggy/pull/4092#discussion_r3986620245


##########
core/server/src/http/handlers.rs:
##########
@@ -1405,17 +1427,18 @@ pub(in crate::http) async fn send_messages(
         .map_err(PartitionWriteError::Rejected)?;
     match query.ack {
         ProduceAck::Replicated => {
+            let policy = topic_durability(&state, &stream_id, &topic_id);
             let (reply, header) = SendWrapper::new(partition_write_replicated(
                 &state,
                 &identity.session,
                 Operation::SendMessages,
                 &body,
             ))
             .await?;
-            let durability = [(
-                DURABILITY_HEADER,
-                HeaderValue::from_static(DURABILITY_REPLICATED_MEMORY),
-            )];
+            let policy = policy.map_or(iggy_common::Durability::Replicated, 
|policy| {
+                policy.confirmed_policy(&state)

Review Comment:
   thanks for the repro, this is fixed locally in 
https://github.com/apache/iggy/pull/4092/commits/c1e808f693f977ae9c63696ba571bb596d0f1aad.
 the handler pins the numeric stream and topic ids captured with the durability 
policy before waiting on the session gate, and keeps the incarnation check 
afterward. renames can’t redirect the write anymore. the routing and policy 
tests pass.



##########
core/server/src/http/handlers.rs:
##########
@@ -1405,17 +1427,18 @@ pub(in crate::http) async fn send_messages(
         .map_err(PartitionWriteError::Rejected)?;
     match query.ack {
         ProduceAck::Replicated => {
+            let policy = topic_durability(&state, &stream_id, &topic_id);
             let (reply, header) = SendWrapper::new(partition_write_replicated(
                 &state,
                 &identity.session,
                 Operation::SendMessages,
                 &body,
             ))
             .await?;
-            let durability = [(
-                DURABILITY_HEADER,
-                HeaderValue::from_static(DURABILITY_REPLICATED_MEMORY),
-            )];
+            let policy = policy.map_or(iggy_common::Durability::Replicated, 
|policy| {
+                policy.confirmed_policy(&state)

Review Comment:
   thanks for the repro, this is fixed in [`c1e808f` (this 
PR)](https://github.com/apache/iggy/pull/4092/commits/c1e808f693f977ae9c63696ba571bb596d0f1aad).
 the handler pins the numeric stream and topic ids captured with the durability 
policy before waiting on the session gate, and keeps the incarnation check 
afterward. renames can’t redirect the write anymore. the routing and policy 
tests pass.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to