Skip to content

Commit ad4d7ac

Browse files
authored
Fix producer acks (#1135)
1 parent a0cc3f7 commit ad4d7ac

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

src/karapace/core/config.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@
99

1010
from collections.abc import Mapping
1111
from copy import deepcopy
12+
from typing import Literal
13+
1214
from karapace.core.constants import DEFAULT_AIOHTTP_CLIENT_MAX_SIZE, DEFAULT_PRODUCER_MAX_REQUEST, DEFAULT_SCHEMA_TOPIC
1315
from karapace.core.typing import ElectionStrategy, NameStrategy
1416
from karapace.core.utils import json_encode
1517
from pathlib import Path
16-
from pydantic import BaseModel, ImportString
18+
from pydantic import BaseModel, ImportString, field_validator
1719
from pydantic_settings import BaseSettings, SettingsConfigDict
1820

1921
import enum
@@ -118,7 +120,7 @@ class Config(BaseSettings):
118120
topic_name: str = DEFAULT_SCHEMA_TOPIC
119121
metadata_max_age_ms: int = 60000
120122
admin_metadata_max_age: int = 5
121-
producer_acks: int = 1
123+
producer_acks: int | Literal["all"] = 1
122124
producer_compression_type: str | None = None
123125
producer_count: int = 5
124126
producer_linger_ms: int = 100
@@ -156,6 +158,12 @@ def get_advertised_hostname(self) -> str:
156158
def get_address(self) -> str:
157159
return f"{self.host}:{self.port}"
158160

161+
@field_validator("producer_acks", mode="before")
162+
def normalize_producer_acks(cls, v):
163+
if isinstance(v, str) and v.lower() == "all":
164+
return -1
165+
return v
166+
159167
def get_rest_base_uri(self) -> str:
160168
return (
161169
self.rest_base_uri

0 commit comments

Comments
 (0)