@@ -97,6 +97,38 @@ impl Config {
9797 ) )
9898 } ) ?;
9999 }
100+ "writer.enable-idempotence" => {
101+ config. writer_enable_idempotence = match value. as_str ( ) {
102+ "true" => true ,
103+ "false" => false ,
104+ other => {
105+ return Err ( FlussError :: new_err ( format ! (
106+ "Invalid value '{other}' for '{key}', expected 'true' or 'false'"
107+ ) ) ) ;
108+ }
109+ } ;
110+ }
111+ "writer.max-inflight-requests-per-bucket" => {
112+ config. writer_max_inflight_requests_per_bucket =
113+ value. parse :: < usize > ( ) . map_err ( |e| {
114+ FlussError :: new_err ( format ! (
115+ "Invalid value '{value}' for '{key}': {e}"
116+ ) )
117+ } ) ?;
118+ }
119+ "writer.buffer.memory-size" => {
120+ config. writer_buffer_memory_size = value. parse :: < usize > ( ) . map_err ( |e| {
121+ FlussError :: new_err ( format ! ( "Invalid value '{value}' for '{key}': {e}" ) )
122+ } ) ?;
123+ }
124+ "writer.buffer.wait-timeout-ms" => {
125+ config. writer_buffer_wait_timeout_ms =
126+ value. parse :: < u64 > ( ) . map_err ( |e| {
127+ FlussError :: new_err ( format ! (
128+ "Invalid value '{value}' for '{key}': {e}"
129+ ) )
130+ } ) ?;
131+ }
100132 "writer.bucket.no-key-assigner" => {
101133 config. writer_bucket_no_key_assigner = match value. as_str ( ) {
102134 "round_robin" => fcore:: config:: NoKeyAssigner :: RoundRobin ,
@@ -255,6 +287,54 @@ impl Config {
255287 self . inner . writer_batch_timeout_ms = timeout;
256288 }
257289
290+ /// Get whether idempotent writes are enabled
291+ #[ getter]
292+ fn writer_enable_idempotence ( & self ) -> bool {
293+ self . inner . writer_enable_idempotence
294+ }
295+
296+ /// Set whether idempotent writes are enabled
297+ #[ setter]
298+ fn set_writer_enable_idempotence ( & mut self , enabled : bool ) {
299+ self . inner . writer_enable_idempotence = enabled;
300+ }
301+
302+ /// Get the max in-flight requests per bucket
303+ #[ getter]
304+ fn writer_max_inflight_requests_per_bucket ( & self ) -> usize {
305+ self . inner . writer_max_inflight_requests_per_bucket
306+ }
307+
308+ /// Set the max in-flight requests per bucket
309+ #[ setter]
310+ fn set_writer_max_inflight_requests_per_bucket ( & mut self , num : usize ) {
311+ self . inner . writer_max_inflight_requests_per_bucket = num;
312+ }
313+
314+ /// Get the writer buffer memory size
315+ #[ getter]
316+ fn writer_buffer_memory_size ( & self ) -> usize {
317+ self . inner . writer_buffer_memory_size
318+ }
319+
320+ /// Set the writer buffer memory size
321+ #[ setter]
322+ fn set_writer_buffer_memory_size ( & mut self , size : usize ) {
323+ self . inner . writer_buffer_memory_size = size;
324+ }
325+
326+ /// Get the writer buffer wait timeout in milliseconds
327+ #[ getter]
328+ fn writer_buffer_wait_timeout_ms ( & self ) -> u64 {
329+ self . inner . writer_buffer_wait_timeout_ms
330+ }
331+
332+ /// Set the writer buffer wait timeout in milliseconds
333+ #[ setter]
334+ fn set_writer_buffer_wait_timeout_ms ( & mut self , timeout : u64 ) {
335+ self . inner . writer_buffer_wait_timeout_ms = timeout;
336+ }
337+
258338 /// Get the connect timeout in milliseconds
259339 #[ getter]
260340 fn connect_timeout_ms ( & self ) -> u64 {
0 commit comments