You are right. At current implementation, this feature seems to be
disabled. It seems to be an issue when we backported this feature.

Do you mind creating a jira for that? It is an easy fix.

- Sijie

On Wed, May 31, 2017 at 11:15 AM, Charan Reddy G <reddychara...@gmail.com>
wrote:

> Hey,
>
> With BOOKKEEPER-643
> (https://github.com/apache/bookkeeper/commit/
> 694568b0ff0d048c284c8d5db0c9455d30dfa3ce)
> feature, 'entryLogFilePreallocationEnabled' is introduced. But by the
> way it is handled,  it looks like it can never be used.
>
> In EntryLoggerAllocator.createNewLog, even if
> entryLogPreAllocationEnabled is configured to true, else block is
> unreachable because ‘preallocation’ will always be null and it would
> end up with ‘if’ block. So effectively
> ‘entryLogFilePreallocationEnabled’ logic is broken.
>
>         synchronized BufferedLogChannel createNewLog() throws IOException {
>             BufferedLogChannel bc;
>             if (!entryLogPreAllocationEnabled || null == preallocation) {
>                 // initialization time to create a new log
>                 bc = allocateNewLog();
>             } else {
>                 // has a preallocated entry log
>                 ......
>
>                 ......
>                 preallocation = allocatorExecutor.submit(new
> Callable<BufferedLogChannel>() {   <-------- this is the only place
> where 'preallocation' is set and it is not possible to get into the
> else block in this method  ------------>
>
>                     @Override
>                     public BufferedLogChannel call() throws IOException {
>                         return allocateNewLog();
>                     }
>                 });
>             }
>             LOG.info("Created new entry logger {}.", bc.getLogId());
>             return bc;
>         }
>
>
> Thanks,
> Charan
>

Reply via email to