51
51
-export ([format_osiris_event /2 ]).
52
52
-export ([update_stream_conf /2 ]).
53
53
-export ([readers /1 ]).
54
+ -export ([read_ahead_on /0 ]).
54
55
55
56
-export ([parse_offset_arg /1 ,
56
57
filter_spec /1 ]).
@@ -463,10 +464,11 @@ query_local_pid(#stream_client{stream_id = StreamId} = State) ->
463
464
begin_stream (# stream_client {name = QName ,
464
465
readers = Readers0 ,
465
466
local_pid = LocalPid } = State ,
466
- Tag , Offset , Mode , AckRequired , Filter , Options )
467
+ Tag , Offset , Mode , AckRequired , Filter , Options0 )
467
468
when is_pid (LocalPid ) ->
468
469
CounterSpec = {{? MODULE , QName , Tag , self ()}, []},
469
- {ok , Seg0 } = osiris :init_reader (LocalPid , Offset , CounterSpec , Options ),
470
+ Options1 = Options0 #{read_ahead => read_ahead_on ()},
471
+ {ok , Seg0 } = osiris :init_reader (LocalPid , Offset , CounterSpec , Options1 ),
470
472
NextOffset = osiris_log :next_offset (Seg0 ) - 1 ,
471
473
osiris :register_offset_listener (LocalPid , NextOffset ),
472
474
StartOffset = case Offset of
@@ -491,7 +493,7 @@ begin_stream(#stream_client{name = QName,
491
493
last_consumed_offset = StartOffset ,
492
494
log = Seg0 ,
493
495
filter = Filter ,
494
- reader_options = Options },
496
+ reader_options = Options1 },
495
497
{ok , State # stream_client {readers = Readers0 #{Tag => Str0 }}}.
496
498
497
499
cancel (_Q , #{consumer_tag := ConsumerTag ,
@@ -659,8 +661,8 @@ handle_event(_QName, {stream_local_member_change, Pid},
659
661
osiris_log :close (Log0 ),
660
662
CounterSpec = {{? MODULE , QName , self ()}, []},
661
663
? LOG_DEBUG (" Re-creating Osiris reader for consumer ~tp at offset ~tp "
662
- " with options ~tp " ,
663
- [T , Offset , Options ]),
664
+ " with options ~tp " ,
665
+ [T , Offset , Options ]),
664
666
{ok , Log1 } = osiris :init_reader (Pid , Offset , CounterSpec , Options ),
665
667
NextOffset = osiris_log :next_offset (Log1 ) - 1 ,
666
668
? LOG_DEBUG (" Registering offset listener at offset ~tp " , [NextOffset ]),
@@ -1527,3 +1529,6 @@ queue_vm_stats_sups() ->
1527
1529
queue_vm_ets () ->
1528
1530
{[],
1529
1531
[]}.
1532
+
1533
+ read_ahead_on () ->
1534
+ application :get_env (rabbit , stream_read_ahead , true ).
0 commit comments