Github user suyogmapara commented on the issue:

    https://github.com/apache/zookeeper/pull/567
  
    Hi @maoling 
    
    Regarding 1, preAllocSize controls how big the contiguous region of 
transaction file would be on disk (to reduce number seeks you need to do) while 
this feature controls how big the file size would be before we roll to the next 
transaction log. It would make sense to set later one as some multiple of the 
first one. If you set both values closers or if preAllocSize is smaller, you 
are right you would get very frequent log rolls (maybe for every transaction in 
1.2), but as far as I can think of it shouldn't impact correctness. I don't 
have checks against such values mainly because it is not clear what is the 
minimum value I should allow. Basically the same reason we don't have check 
against setting snapCount = 2, for example.
    
    Regarding your example, can you please elaborate your values in 1.1?
    
    Regarding 2, during diff sync, leader will seek for the last transaction 
follower has seen in the in-memory committed log cache. If the zxid is older 
than oldest transaction then leader has to first send over the transactions 
from the earlier transaction log file. For starting the stream of transaction, 
leader has to do a linear search for the zxid, in the transaction log (as we 
don't have an index over it). Larger the transaction log file, longer it takes. 
It can happen if you have especially larger individual transactions. This 
feature give you control over the maximum size.


---

Reply via email to