Re: How is Cassandra being used?

2011-11-16 Thread Bill

> Thoughts?
>

We'll turn this off, and would possibly patch it out of the code. That's 
not to say it wouldn't be useful to others.


Bill


On 15/11/11 23:23, Jonathan Ellis wrote:

I started a "users survey" thread over on the users list (replies are
still trickling in), but as useful as that is, I'd like to get
feedback that is more quantitative and with a broader base.  This will
let us prioritize our development efforts to better address what
people are actually using it for, with less guesswork.  For instance:
we put a lot of effort into compression for 1.0.0; if it turned out
that only 1% of 1.0.x users actually enable compression, then it means
that we should spend less effort fine-tuning that moving forward, and
use the energy elsewhere.

(Of course it could also mean that we did a terrible job getting the
word out about new features and explaining how to use them, but either
way, it would be good to know!)

I propose adding a basic cluster reporting feature to cassandra.yaml,
enabled by default.  It would send anonymous information about your
cluster to an apache.org VM.  Information like, number (but not names)
of keyspaces and columnfamilies, ks-level options like compression, cf
options like compaction strategy, data types (again, not names) of
columns, average row size (or better: the histogram data), and average
sstables per read.

Thoughts?






Re: Bootstrap source code

2010-05-04 Thread Bill Hastings
Hi

I did some more looking. It looks like on bootstrap the token gets added to
the bootstrapTokens list. However there is no change to the
tokenToEndPointMap. So how do writes make it to the new node. It is only
when bootstrap is complete are the tokens removed from bootstrapTokens list
added to the tokenToEndPointMap opening them up to the ring. Which means
during bootstrap writes continue to go to the old nodes and the when
bootstrap is complete there could be some data that was written during the
bootstrap that remains on the old node. Am I missing something here? Any
pointers would be great.

Cheers
- bill


>
> -- Forwarded message --
> From: Stu Hood 
> Date: Sun, May 2, 2010 at 10:50 AM
> Subject: Re: Bootstrap source code
> To: dev@cassandra.apache.org
>
>
> Nodes declare that they will be joining the ring at a particular position,
> which makes them a member of the 'pending ranges' set. Nodes with pending
> ranges are supposed to receive writes for those ranges, despite not
> officially owning them yet.
>
>
> -Original Message-
> From: "Roger Schildmeijer" 
> Sent: Sunday, May 2, 2010 11:50am
> To: dev@cassandra.apache.org
> Subject: Re: Bootstrap source code
>
> s/hinted handoff/read repair
>
> >
> >
> >
> > (Moved to developers mailing list)
> >
> > Without delve to deep into to that part of the code my educated(?) guess
> is that this will (eventually) be solved/repaired thanks to hinted handoff
> and anti entropy service.
> >
> >
> > On 2 maj 2010, at 18.29em, Bill Hastings wrote:
> >
> >> Hi
> >>
> >> I have looking at the bootstrap source and seem to understand it for the
> most part. This is what I do not follow:
> >>
> >> (1) New node joins and doesn't advertise its token.
> >> (2) Requests nodes to send it data. The nodes that need to send it data
> first flush memtables and then transfer SSTables.
> >>
> >> Once the streaming is over the new node advertises its token and starts
> handling reads and writes correct? But what happens to keys that are being
> written to the old nodes after the memtables have been dumped. Looks like
> there is a window where keys would be going to the old nodes and not making
> it to the new nodes. Am I missing something here.
> >>
> >> --
> >> Cheers
> >> Bill
> >
>
>
>
>
>


-- 
Cheers
Bill


Re: Bootstrap source code

2010-05-05 Thread Bill Hastings
Ah. That makes sense. All nodes start up in bootstrap mode. So on start up
where in the code do I need to look to figure out that bootstrap is not
required resulting in a call to finishBootstrap().


On Tue, May 4, 2010 at 6:36 PM, Jonathan Ellis  wrote:

> AbstractReplicationStrategy.getWriteEndpoints is where bootstrapping
> nodes get added as write destinations.
>
> On Tue, May 4, 2010 at 6:02 PM, Bill Hastings 
> wrote:
> > Hi
> >
> > I did some more looking. It looks like on bootstrap the token gets added
> to
> > the bootstrapTokens list. However there is no change to the
> > tokenToEndPointMap. So how do writes make it to the new node. It is only
> > when bootstrap is complete are the tokens removed from bootstrapTokens
> list
> > added to the tokenToEndPointMap opening them up to the ring. Which means
> > during bootstrap writes continue to go to the old nodes and the when
> > bootstrap is complete there could be some data that was written during
> the
> > bootstrap that remains on the old node. Am I missing something here? Any
> > pointers would be great.
> >
> > Cheers
> > - bill
> >
> >
> >>
> >> -- Forwarded message --
> >> From: Stu Hood 
> >> Date: Sun, May 2, 2010 at 10:50 AM
> >> Subject: Re: Bootstrap source code
> >> To: dev@cassandra.apache.org
> >>
> >>
> >> Nodes declare that they will be joining the ring at a particular
> position,
> >> which makes them a member of the 'pending ranges' set. Nodes with
> pending
> >> ranges are supposed to receive writes for those ranges, despite not
> >> officially owning them yet.
> >>
> >>
> >> -Original Message-
> >> From: "Roger Schildmeijer" 
> >> Sent: Sunday, May 2, 2010 11:50am
> >> To: dev@cassandra.apache.org
> >> Subject: Re: Bootstrap source code
> >>
> >> s/hinted handoff/read repair
> >>
> >> >
> >> >
> >> >
> >> > (Moved to developers mailing list)
> >> >
> >> > Without delve to deep into to that part of the code my educated(?)
> guess
> >> is that this will (eventually) be solved/repaired thanks to hinted
> handoff
> >> and anti entropy service.
> >> >
> >> >
> >> > On 2 maj 2010, at 18.29em, Bill Hastings wrote:
> >> >
> >> >> Hi
> >> >>
> >> >> I have looking at the bootstrap source and seem to understand it for
> the
> >> most part. This is what I do not follow:
> >> >>
> >> >> (1) New node joins and doesn't advertise its token.
> >> >> (2) Requests nodes to send it data. The nodes that need to send it
> data
> >> first flush memtables and then transfer SSTables.
> >> >>
> >> >> Once the streaming is over the new node advertises its token and
> starts
> >> handling reads and writes correct? But what happens to keys that are
> being
> >> written to the old nodes after the memtables have been dumped. Looks
> like
> >> there is a window where keys would be going to the old nodes and not
> making
> >> it to the new nodes. Am I missing something here.
> >> >>
> >> >> --
> >> >> Cheers
> >> >> Bill
> >> >
> >>
> >>
> >>
> >>
> >>
> >
> >
> > --
> > Cheers
> > Bill
> >
>
>
>
> --
> Jonathan Ellis
> Project Chair, Apache Cassandra
> co-founder of Riptano, the source for professional Cassandra support
> http://riptano.com
>



-- 
Cheers
Bill


Best way to fix JMX threads leak in NodeProbe

2010-10-26 Thread Bill Au
I have discovered a JMX threads leak in NodeProbe.  Here is the original
email thread on the user mailing list:

http://www.mail-archive.com/u...@cassandra.apache.org/msg06764.html

NodePorbe creats a JMXConnector but never calls JMXConnector.close().  The
use of a JMXConnector in NodeProbe is not exposed in its API.  So without
changing the API, my initial thought is to add a finalize() method to
NodeProbe in which JMXConnector.close() is called.  But I am not sure if
this is the best solution.  Using a finalizer many lead to memory leak since
in this case NodeProbe will not be garbage collector until its finalizer is
called, but in Java the finalize() method is not guaranteed to be called at
any particular time.  We probably don't want to create a new JMXConnector
for each operation.  Should we add a close() method to NodeProbe which users
of NodeProbe has to call to avoid using a finalizer?

Bill


Re: Best way to fix JMX threads leak in NodeProbe

2010-10-26 Thread Bill Au
I have opened a jira for this issue:

https://issues.apache.org/jira/browse/CASSANDRA-1665

I will submit a patch.

Bill

On Tue, Oct 26, 2010 at 12:21 PM, Jonathan Ellis  wrote:

> Yes, we should add a close method.
> On Oct 26, 2010 9:14 AM, "Bill Au"  wrote:
> > I have discovered a JMX threads leak in NodeProbe. Here is the original
> > email thread on the user mailing list:
> >
> > http://www.mail-archive.com/u...@cassandra.apache.org/msg06764.html
> >
> > NodePorbe creats a JMXConnector but never calls JMXConnector.close(). The
> > use of a JMXConnector in NodeProbe is not exposed in its API. So without
> > changing the API, my initial thought is to add a finalize() method to
> > NodeProbe in which JMXConnector.close() is called. But I am not sure if
> > this is the best solution. Using a finalizer many lead to memory leak
> since
> > in this case NodeProbe will not be garbage collector until its finalizer
> is
> > called, but in Java the finalize() method is not guaranteed to be called
> at
> > any particular time. We probably don't want to create a new JMXConnector
> > for each operation. Should we add a close() method to NodeProbe which
> users
> > of NodeProbe has to call to avoid using a finalizer?
> >
> > Bill
>


Checksumming

2011-10-31 Thread Bill Hastings
how does checksumming in Cassandra work? If there is a bit rot it is
detected but how is it fixed? let's say a key column has been corrupted and
the corruption is detected. How is it fixed?


Re: Discussion: release quality

2011-11-30 Thread Bill Au
I think we definitely need better quality for the releases.  Just looked at
1.0.3 and 1.0.4.  I am willing to test out release candidate and report
back my finding on the mailing list.  Hopefully more folks can do that to
make the testing more comprehensive.  And folks with binding votes can take
the testing results into account before they vote.

Bill

On Tue, Nov 29, 2011 at 10:14 PM, Joe Stein  wrote:

> I need at least a week, maybe two to promote anything to staging which is
> mainly because we do weekly releases.   I could introduce a 2 day turn
> around but only with a more fixed type schedule.  I am running 0.8.6 in
> production and REALLY want to upgrade for nothing more than getting
> compression ( the cost of petabytes of uncompressed data is just stupid ).
>  So however I can help in changing my process OR better understanding the
> PMC here I am game for.
>
> One thing I use C* for is holding days worth of data and re-running those
> days for regression on our software... simulating production... It might
> not take much to reverse it.
>
> /*
> Joe Stein
> http://www.medialets.com
> Twitter: @allthingshadoop
> */
>
> On Nov 29, 2011, at 10:04 PM, Edward Capriolo 
> wrote:
>
> > On Tue, Nov 29, 2011 at 6:16 PM, Jeremy Hanna <
> jeremy.hanna1...@gmail.com>wrote:
> >
> >> I'd like to start a discussion about ideas to improve release quality
> for
> >> Cassandra.  Specifically I wonder if the community can do more to help
> the
> >> project as a whole become more solid.  Cassandra has an active and
> vibrant
> >> community using Cassandra for a variety of things.  If we all pitch in a
> >> little bit, it seems like we can make a difference here.
> >>
> >> Release quality is difficult, especially for a distributed system like
> >> Cassandra.  The core devs have done an amazing job with this considering
> >> how complicated it is.  Currently, there are several things in place to
> >> make sure that a release is generally usable:
> >> - review-then-commit
> >> - 72 hour voting period
> >> - at least 3 binding +1 votes
> >> - unit tests
> >> - integration tests
> >> Then there is the personal responsibility aspect - testing a release in
> a
> >> staging environment before pushing it to production.
> >>
> >> I wonder if more could be done here to give more confidence in releases.
> >> I wanted to see if there might be ways that the community could help out
> >> without being too burdensome on either the core devs or the community.
> >>
> >> Some ideas:
> >> More automation: run YCSB and stress with various setups.  Maybe people
> >> can rotate donating cloud instances (or simply money for them) but have
> a
> >> common set of scripts to do this in the source.
> >>
> >> Dedicated distributed test suite: I know there has been work done on
> >> various distributed test suites (which is great!) but none have really
> >> caught on so far.
> >>
> >> I know what the apache guidelines say, but what if the community could
> >> help out with the testing effort in a more formal way.  For example, for
> >> each release to be finalized, what if there needed to be 3 community
> >> members that needed to try it out in their own environment?
> >>
> >> What if there was a post release +1 vote for the community to sign off
> on
> >> - sort of a "works for me" kind of thing to reassure others that it's
> safe
> >> to try.  So when the release email gets posted to the user list, start a
> >> tradition of people saying +1 in reply if they've tested it out and it
> >> works for them.  That's happening informally now when there are
> problems,
> >> but it might be nice to see a vote of confidence.  Just another idea.
> >>
> >> Any other ideas or variations?
> >
> >
> > I am no software engineering guru, but whenever I +1 a hive release I
> > actually do checkout the code and run a couple queries. Mostly I find
> that
> > because there is just so many things not unit testable like those gosh
> darn
> > bash scripts that launch Java applications. There have been times when
> even
> > after multiple patch revisions and passing unit tests something just does
> > not work in the real world. So I never +1 a binary release I don't spend
> an
> > hour with and if possible I try twisting the knobs on any new feature or
> at
> > least just trying the basics.Hive is aiming for something like quarterly
> > releases.
> 

Re: 2.0

2012-11-30 Thread Bill de hÓra
I'm not thrilled with Thrift, but I'd like to see and hear more real 
world use of CQL first (Avro all the things is not that long ago).


That said, a major rev /could/ do this - not start the thrift server by 
default.  It's then a hoop jump to enable it via nodetool/yaml, and 
signals to the client communities and user base, where the project 
intends to go.


Bill


On 30/11/12 22:49, Jonathan Ellis wrote:

As attractive as it would be to clean house, I think we owe it to our
users to keep Thrift around for the forseeable future rather than
orphan all Thrift-using applications (which is virtually everyone) on
1.2.

On Sat, Dec 1, 2012 at 7:33 AM, Jason Brown  wrote:

Hi Jonathan,

I'm in favor of paying off the technical debt, as well, and I wonder if
there is value in removing support for thrift with 2.0? We're currently in
'do as little as possible' mode with thrift, so should we aggressively cast
it off and push the binary CQL protocol? Seems like a jump to '2.0', along
with the other initiatives, would be a reasonable time/milestone to do so.

Thanks,

-Jason


On Fri, Nov 30, 2012 at 12:12 PM, Jonathan Ellis  wrote:


The more I think about it, the more I think we should call 1.2-next,
2.0.  I'd like to spend some time paying off our technical debt:

- replace supercolumns with composites (CASSANDRA-3237)
- rewrite counters (CASSANDRA-4775)
- improve storage engine support for wide rows
- better stage management to improve latency (disruptor? lightweight
threads?  custom executor + queue?)
- improved repair (CASSANDRA-3362, 2699)

Of course, we're planning some new features as well:
- triggers (CASSANDRA-1311)
- improved query fault tolerance (CASSANDRA-4705)
- row size limits (CASSANDRA-3929)
- cql3 integration for hadoop (CASSANDRA-4421)
- improved caching (CASSANDRA-1956, 2864)

--
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder, http://www.datastax.com
@spyced









Re: Thoughts on issue 697 (Mitigate unpublished dependencies when using Cassandra with Maven)

2010-04-09 Thread Bill de hOra


Your sense of righteousness would be better directed to code. File a 
patch, be useful; if this community wants maven they'll follow you.


Bill

Hannes Schmidt wrote:

In a nutshell, I disagree with the decision to resolve

https://issues.apache.org/jira/browse/CASSANDRA-697

as Won't Fix. Here's why:

One of the central motivations behind Maven was to once and for all get rid
of binary dependencies in source repositories. You, the Cassandra committers
operating under the Apache umbrella should have no difficulty getting those
lib/*.jar dependencies into the official repository. It shouldn't take more
than half an hour to "mvn deploy" a handful of jars. On that note, it should
be a no-brainer to actually deploy the *Apache* Cassandra JAR to the
*Apache* Maven repository.

Sorry for the rant but taking shortcuts like this forces every Maven user
down the stream to either do the work for you, e.g to deploy the Cassandra
JAR and its dependencies to their local repository or take the very same
shortcut. The Hector client, for example, has a dependency on the Thrift and
Cassandra JARs and it takes the shortcut of having both JARs in the
repository. If I want to use the client in my own Maven-built project, I
can't do so without manually deploying those two JARs along with the Hector
JAR to my local repository.

To add fuel to the fire, I don't think that there is a real need for
two coexisting build systems for Cassandra (I'm speaking of Ant/Ivy and
Maven) but even if you decide to go with Ant/Ivy, the resulting artifacts
should all be accessible in a public Maven repository. This is pretty much a
convention for any OS project of Cassandra's reach and maturity.

-- Hannes