Thanks a lot for that explanation Jeff!! I am trying to see if there is any JIRA ticket that talks about incorporating LWT in scenarios you mentioned?
Sent from my iPhone > On Jan 27, 2018, at 1:41 PM, Jeff Jirsa <jji...@gmail.com> wrote: > > Originally we would make tables based on keyspace name / table name pairs, > which was fine unless you dropped a table and recreated it, which could > happen while one node was offline / split network / gc pause. The recreation > scenario could allow data to be resurrected after a drop. > > So we augmented that (years and years ago) to have a uuid identifier for the > table, so now we can differentiate between table creations - if you drop a > table and recreate it, the new table has a different id. > > However, if you issue a create table on two instances at the same time, > neither thinks the table exists, each generates their own cfid, two ids get > created. Schema eventually gets store inside Cassandra, so last write wins, > and the first ID seen gets stomped by the second. The race typically > manifests as one instance throwing errors about cfid not found, or a data > directory that doesn’t match the cfid in the schema (so a restart creates an > empty data directory), or similar situations like that. > > The actual plumbing to use strong consistency (actually do paxos or some > other election to make sure exactly one id wins) is planned, likely for 4.0, > but doesn’t exist in any released version now > > So again, don’t programmatically create tables if there’s a race possible, it > may work fine most of the time, but there’s a risk of ugly failure. > > -- > Jeff Jirsa > > >> On Jan 27, 2018, at 1:23 PM, Kant Kodali <k...@peernova.com> wrote: >> >> May I know why? >> >> Sent from my iPhone >> >>> On Jan 27, 2018, at 12:36 PM, Jeff Jirsa <jji...@gmail.com> wrote: >>> >>> Yes it causes issues >>> >>> >>> -- >>> Jeff Jirsa >>> >>> >>>> On Jan 27, 2018, at 12:17 PM, Kant Kodali <k...@peernova.com> wrote: >>>> >>>> Schema changes I assume you guys are talking about different create table >>>> or alter table statements. What if multiple threads issue same exact >>>> create table if not exists statement? Will that cause issues? >>>> >>>> Sent from my iPhone >>>> >>>>> On Jan 27, 2018, at 11:41 AM, Carlos Rolo <r...@pythian.com> wrote: >>>>> >>>>> Don't do that. Worst case you might get different schemas in flight and >>>>> no agreement on your cluster. If you are already doing that, check >>>>> "nodetool describecluster" after you do that. >>>>> >>>>> Like Jeff said, it is likely to cause problems. >>>>> >>>>> Regards, >>>>> >>>>> Carlos Juzarte Rolo >>>>> Cassandra Consultant / Datastax Certified Architect / Cassandra MVP >>>>> >>>>> Pythian - Love your data >>>>> >>>>> rolo@pythian | Twitter: @cjrolo | Skype: cjr2k3 | Linkedin: >>>>> linkedin.com/in/carlosjuzarterolo >>>>> Mobile: +351 918 918 100 >>>>> www.pythian.com >>>>> >>>>>> On Sat, Jan 27, 2018 at 7:25 PM, Jeff Jirsa <jji...@gmail.com> wrote: >>>>>> It’s not LWT. Don’t do programmatic schema changes that can race, it’s >>>>>> likely to cause problems >>>>>> >>>>>> >>>>>> -- >>>>>> Jeff Jirsa >>>>>> >>>>>> >>>>>> > On Jan 27, 2018, at 10:19 AM, Kant Kodali <k...@peernova.com> wrote: >>>>>> > >>>>>> > Hi All, >>>>>> > >>>>>> > What happens if multiple processes send create table if not exist >>>>>> > statement to cassandra? will there be any data corruption or any other >>>>>> > issues if I send "create table if not exist" request often? >>>>>> > >>>>>> > I dont see any entry in system.paxos table so is it fair to say "IF >>>>>> > NOT EXISTS" doesn't automatically imply LWT? >>>>>> > >>>>>> > Thanks! >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: user-unsubscr...@cassandra.apache.org >>>>>> For additional commands, e-mail: user-h...@cassandra.apache.org >>>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> >>>>> >>>>>