incubator-cassandra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Todd Lipcon <t...@cloudera.com>
Subject Re: build fails with "ant clean gen-thrift-java build"
Date Thu, 03 Dec 2009 19:26:03 GMT
On Thu, Dec 3, 2009 at 11:24 AM, Jonathan Ellis <jbellis@gmail.com> wrote:

> either way, removing the all-args constructor is a regression.
>
> Agreed. Open a JIRA? :)


>  On Thu, Dec 3, 2009 at 1:20 PM, Todd Lipcon <todd@cloudera.com> wrote:
> > On Thu, Dec 3, 2009 at 11:00 AM, Jonathan Ellis <jbellis@gmail.com>
> wrote:
> >
> >> i think historically there has been a no-arg constructor and one w/ all
> >> args.
> >>
> >> imo correct behavior is one with only req'd args, and one w/ all.
> >>
> >> I think having one with no args is good as well. The problem with having
> > one with only required args is that java doesn't have keyword arguments.
> So,
> > if you have a struct with several required members, you're going to have
> > "new Foo(a,b,c,d,e,f)" for example. If the order (or names) of fields
> > changes or something, you can break your app without generating a
> > compilation error, whereas if you're using explicit setters, you'll catch
> > it.
> >
> > -Todd
> >
> > rule of thumb: if it breaks cassandra, it's a bug. :)
> >>
> >> On Thu, Dec 3, 2009 at 12:36 PM, Gary Dusbabek <gdusbabek@gmail.com>
> >> wrote:
> >> > 2009/12/3 Ted Zlatanov <tzz@lifelogs.com>:
> >> >> On Thu, 3 Dec 2009 06:42:27 -0600 Gary Dusbabek <gdusbabek@gmail.com
> >
> >> wrote:
> >> >>
> >> >> GD> This seems to be a Thrift regression.  It is failing to generate
> any
> >> >> GD> but the no-arg constructors.  I saw this about a week ago but
> never
> >> >> GD> got around to filing a Thrift ticket against it.
> >> >>
> >> >> GD> Your best bet, other than rolling back to an older version of
> >> thrift,
> >> >> GD> is to add the constructors yourself from the old code.
> >> >>
> >> >> I could also file a Thrift bug.  Or are you implying you'll do it?
> >> >
> >> > If it is a bug.  I never made time to do the research, but here is
> >> > what seems to be happening...
> >> >
> >> > Optional members are not included in the constructor, required members
> >> > are.  I'm not sure if they ever were, and the constructors were just
> >> > manually added after generation or not.
> >> >
> >> > E.g.,
> >> >
> >> > struct ColumnParent1 {
> >> >    3: required string column_family,
> >> >    4: optional binary super_column,
> >> > }
> >> >
> >> > generates:
> >> >
> >> >  public ColumnParent1(String column_family)
> >> >  {
> >> >    this();
> >> >    this.column_family = column_family;
> >> >  }
> >> >
> >> > whereas:
> >> >
> >> > struct ColumnParent3 {
> >> >    3: required string column_family,
> >> >    4: required binary super_column,
> >> > }
> >> >
> >> > generates:
> >> >
> >> >  public ColumnParent3(String column_family, byte[] super_column)
> >> >  {
> >> >    this();
> >> >    this.column_family = column_family;
> >> >    this.super_column = super_column;
> >> >  }
> >> >
> >> >
> >> > Changing the optional fields to required solves the problem and
> >> > creates the necessary constructors, or the required constructors can
> >> > be added.
> >> >
> >> > Unfortunately, I'm a thrift noob too.  Old-timers, what is the correct
> >> behavior?
> >> >
> >> > Gary.
> >> >
> >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message