Hi,

I submitted patches for the pluggable CommitLog.  Appreciate any comments.
Thanks!
https://issues.apache.org/jira/browse/CASSANDRA-14062


Rei Odaira

2017-11-06 17:14 GMT-06:00 大平怜 <rei.oda...@gmail.com>:

> Thanks for the feedback, Ariel,
>
> Based on your comments, we are revisiting our code changes,
> and then we will submit a patch for review.
> I hope this effort will help further modularize Cassandra
> for better maintainability.
>
>
> Thanks,
> Rei Odaira
>
>
> 2017-11-06 8:20 GMT-06:00 Ariel Weisberg <ar...@weisberg.ws>:
>
>> Hi,
>>
>> OK sorry I am very late to the discussion. I think the existing
>> consensus around doing it is fine I just think you will find that making
>> the commit log pluggable might be a little trickier than making a cache
>> which is a glorified K/V store pluggable.
>>
>>  The commit log reaches into a bunch of other internal API during replay
>>  and even a few at runtime. I think it's a refactor away from
>>  abstracting out those concerns from the concerns of making log records
>>  durable, providing notifications of durability, and then releasing them
>>  though.
>>
>> If I'm the only person unhappy about breaking the plugins in bug fix
>> releases and the resulting problems that creates for anyone who wants to
>> operate this hardware in production then I am willing to look past it.
>> We could also address it via documentation the plugin link page as well
>> as at landing sites for individual plugins.
>>
>> Otherwise I think this is a bigger commitment from us to a larger API
>> then originally scoped and one that restricts what changes can be made
>> in bug fix releases to the existing C* commit log. Unless we have
>> current version and version next of the plugin API so that we can move
>> ahead in bug fix releases without breaking existing plugins.
>>
>> Thanks,
>> Ariel
>>
>> On Thu, Nov 2, 2017, at 04:46 PM, 大平怜 wrote:
>> > Hell Ariel,
>> >
>> > About the pluggability, we have discussed this topic in the dev list
>> last
>> > May:
>> > https://www.mail-archive.com/dev@cassandra.apache.org/msg11102.html
>> >
>> > I don't think the whole community has reached a consensus, but
>> > the result of the discussion at that time was that
>> > 1) We were going to release our extensions as plugins.
>> > 2) The project would support the plugin ecosystem by creating a plugin
>> > link
>> >    page on the Web site.
>> >
>> > Appreciate it if you could shed new light on the discussion.
>> >
>> >
>> > Thanks,
>> > Rei Odaira
>> >
>> >
>> > 2017-11-01 17:53 GMT-05:00 Ariel Weisberg <ar...@weisberg.ws>:
>> >
>> > > Hi,
>> > >
>> > > Just so I don't seem too negative, what I would really like to see is
>> an
>> > > in tree implementation. The real challenge there is that the hardware
>> is
>> > > not widely available. If it were something you could get in GCE or AWS
>> > > or at least get via an emulator that would be a different story.
>> > >
>> > > Ariel
>> > >
>> > > On Wed, Nov 1, 2017, at 06:46 PM, Ariel Weisberg wrote:
>> > > > Hi,
>> > > >
>> > > > OK. It makes sense that most of the existing plumbing is not
>> applicable
>> > > > since it operates on a filesystem.
>> > > >
>> > > > How does replay work? Presumably you will need to refactor
>> > > > CommitLogReplayer as well?
>> > > >
>> > > > I think the best way for us to decide whether it's something we
>> want in
>> > > > tree is to see a patch. You would need to do this even if it doesn't
>> > > > make it in tree and you end up having to deploy a patched build.
>> > > >
>> > > > Pluggability is a little bit of a touchy subject because we don't
>> want
>> > > > to directly or indirectly become responsible for interfaces to out
>> of
>> > > > tree implementations. I don't know if there is consensus around
>> this,
>> > > > but I think even if we made the commit log pluggable it would be
>> with
>> > > > the understanding that we may change the API even in bug fix
>> releases.
>> > > >
>> > > > Down the line where this becomes tricky is unmaintained out of tree
>> > > > implementations that people depend on being broken due to interface
>> > > > changes and then no one being around to fix them. People who depend
>> on
>> > > > the out of tree implementation have no one to complain to but us.
>> This
>> > > > becomes even more likely when the maintainers aren't using the
>> latest
>> > > > version of C* and are busy with other things.
>> > > >
>> > > > You are characterizing the API as being just a few methods on
>> CommitLog
>> > > > but that isn't true.
>> > > >
>> > > > These are the imports for CommitLogReplayer
>> > > >
>> > > > import org.apache.cassandra.concurrent.Stage;
>> > > > import org.apache.cassandra.concurrent.StageManager;
>> > > > import org.apache.cassandra.config.CFMetaData;
>> > > > import org.apache.cassandra.config.Schema;
>> > > > import org.apache.cassandra.db.*;
>> > > > import org.apache.cassandra.io.util.FastByteArrayInputStream;
>> > > > import org.apache.cassandra.io.util.FileUtils;
>> > > > import org.apache.cassandra.io.util.RandomAccessReader;
>> > > > import org.apache.cassandra.utils.*;
>> > > >
>> > > > And these are the imports for CommitLog
>> > > >
>> > > > import org.apache.cassandra.config.Config;
>> > > > import org.apache.cassandra.config.DatabaseDescriptor;
>> > > > import org.apache.cassandra.db.*;
>> > > > import org.apache.cassandra.io.FSWriteError;
>> > > > import org.apache.cassandra.io.sstable.SSTableDeletingTask;
>> > > > import org.apache.cassandra.io.util.DataOutputByteBuffer;
>> > > > import org.apache.cassandra.metrics.CommitLogMetrics;
>> > > > import org.apache.cassandra.net.MessagingService;
>> > > > import org.apache.cassandra.service.StorageService;
>> > > > import org.apache.cassandra.utils.JVMStabilityInspector;
>> > > >
>> > > > If we change any code that changes a line in CommitLog or
>> > > > CommitLogReplayer in a bug fix release it's probably going to break
>> your
>> > > > plugin JAR. Anyone running it in production will now have to fix it
>> and
>> > > > recompile or be unable to get bug fixes.
>> > > >
>> > > > Regards,
>> > > > Ariel
>> > > > On Wed, Nov 1, 2017, at 05:25 PM, 大平怜 wrote:
>> > > > > Hi Ariel,
>> > > > >
>> > > > > CommitLogSegment assumes commit log files stored on a regular file
>> > > > > system.
>> > > > > Our CAPI Flash system bypasses OS and directly accesses flash,
>> > > > > so we cannot use the current framework of CommitLogSegment as it
>> is.
>> > > > > Intel's SPDK also bypasses a file system, so we think this kind of
>> > > > > requirement
>> > > > > is not uncommon.
>> > > > >
>> > > > > It would not be easy to reuse AbstractCommitLogSegmentManager,
>> either,
>> > > > > because the archiving and synchronization logics have to be
>> decoupled.
>> > > > > It would require major rework, and we don't think we should affect
>> > > > > the existing implementation so much.
>> > > > >
>> > > > > We do not change any existing format of CommitLog.  Our plugin
>> will use
>> > > > > its own format, as it must manage commit logs on the
>> 4KB-block-oriented
>> > > > > address spaces of flash devices.
>> > > > >
>> > > > >
>> > > > > Regards,
>> > > > > Rei Odaira
>> > > > >
>> > > > >
>> > > > > 2017-10-31 15:38 GMT-05:00 Ariel Weisberg <ar...@weisberg.ws>:
>> > > > >
>> > > > > > Hi,
>> > > > > >
>> > > > > > There are pluggable elements to the commit log such as those
>> used to
>> > > > > > support mmap or compressed.
>> > > > > >
>> > > > > > Can you describe at a high level what a new implementation
>> would look
>> > > > > > like and why it can't be a mode of the existing implementation?
>> > > > > >
>> > > > > > You are not proposing changing the format correct?
>> > > > > >
>> > > > > > Regards,
>> > > > > > Ariel
>> > > > > >
>> > > > > > On Tue, Oct 31, 2017, at 04:09 PM, 大平怜 wrote:
>> > > > > > > Hello,
>> > > > > > >
>> > > > > > > We are developing a Cassandra plugin to store CommitLog on our
>> > > > > > > low-latency
>> > > > > > > Flash device (CAPI-Flash).  To do that, the original CommitLog
>> > > interface
>> > > > > > > must be changed to allow plugins.  Anyone has any thoughts
>> about
>> > > it?  We
>> > > > > > > have our codebase ready, but we think we should start with
>> > > high-level
>> > > > > > > discussion.
>> > > > > > >
>> > > > > > > The runtime overhead will be minimal.  The only overhead will
>> be
>> > > changing
>> > > > > > > method invocations to CommitLog#add(),
>> > > CommitLog#getCurrentPosition(),
>> > > > > > > etc.
>> > > > > > > into interface invocations.
>> > > > > > >
>> > > > > > > Synching to CommitLog is one of the performance bottlenecks in
>> > > Cassandra
>> > > > > > > especially with batch commit.  I think the pluggable CommitLog
>> > > will allow
>> > > > > > > other interesting alternatives, such as one using SPDK.
>> > > Appreciate any
>> > > > > > > comments.
>> > > > > > >
>> > > > > > >
>> > > > > > > Regards,
>> > > > > > > Rei Odaira
>> > > > > >
>> > > > > > ------------------------------------------------------------
>> > > ---------
>> > > > > > To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>> > > > > > For additional commands, e-mail: dev-h...@cassandra.apache.org
>> > > > > >
>> > > > > >
>> > > >
>> > > > ------------------------------------------------------------
>> ---------
>> > > > To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>> > > > For additional commands, e-mail: dev-h...@cassandra.apache.org
>> > > >
>> > >
>> > > ---------------------------------------------------------------------
>> > > To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>> > > For additional commands, e-mail: dev-h...@cassandra.apache.org
>> > >
>> > >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>
>>
>

Reply via email to