[jira] [Commented] (CASSANDRA-14227) Extend maximum expiration date

2019-06-03 Thread Laxmikant Upadhyay (JIRA)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16855350#comment-16855350
 ] 

Laxmikant Upadhyay commented on CASSANDRA-14227:


[~pauloricardomg] Upgrade Sstable change to resume the original ttl should be 
in scope of this bug or should we open another jira ticket for this?
Note: This change is important for those users who are currently using CAP or 
CAP_NOWARN to avoid request rejection but want to resume to originally  set TTL 
when they upgrade to new cassandra version with fix.

> Extend maximum expiration date
> --
>
> Key: CASSANDRA-14227
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14227
> Project: Cassandra
>  Issue Type: Bug
>  Components: Legacy/Local Write-Read Paths
>Reporter: Paulo Motta
>Priority: Normal
>
> The maximum expiration timestamp that can be represented by the storage 
> engine is
> 2038-01-19T03:14:06+00:00 due to the encoding of {{localExpirationTime}} as 
> an int32.
> On CASSANDRA-14092 we added an overflow policy which rejects requests with 
> expiration above the maximum date as a temporary measure, but we should 
> remove this limitation by updating the storage engine to support at least the 
> maximum allowed TTL of 20 years.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-14305) Use $CASSANDRA_CONF not $CASSANDRA_HOME/conf in cassandra-env.sh

2019-06-03 Thread mck (JIRA)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16855246#comment-16855246
 ] 

mck commented on CASSANDRA-14305:
-

Thanks for spotting and raising that [~samt]. I am looking into it.

> Use $CASSANDRA_CONF not $CASSANDRA_HOME/conf in cassandra-env.sh 
> -
>
> Key: CASSANDRA-14305
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14305
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Angelo Polo
>Assignee: Angelo Polo
>Priority: Low
> Fix For: 3.11.5, 4.0
>
> Attachments: conf_cassandra-env.sh.patch
>
>
> CASSANDRA_CONF should be used uniformly in conf/cassandra-env.sh to reference 
> the configuration path. Currently, jaas users will have to modify the default 
> path provided for cassandra-jaas.config if their $CASSANDRA_CONF differs from 
> $CASSANDRA_HOME/conf.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-15041) UncheckedExecutionException if authentication/authorization query fails

2019-06-03 Thread JIRA


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-15041?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Per Otterström updated CASSANDRA-15041:
---
Reviewers: Sam Tunnicliffe

> UncheckedExecutionException if authentication/authorization query fails
> ---
>
> Key: CASSANDRA-15041
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15041
> Project: Cassandra
>  Issue Type: Bug
>  Components: Feature/Authorization
>Reporter: Per Otterström
>Assignee: Per Otterström
>Priority: Normal
> Fix For: 2.2.15, 3.0.19, 3.11.5, 4.0
>
>
> If cache update for permissions/credentials/roles fails with 
> UnavailableException this comes back to client as UncheckedExecutionException.
> Stack trace on server side:
> {noformat}
> ERROR [Native-Transport-Requests-1] 2019-03-04 16:30:51,537 
> ErrorMessage.java:384 - Unexpected exception during request
> com.google.common.util.concurrent.UncheckedExecutionException: 
> com.google.common.util.concurrent.UncheckedExecutionException: 
> java.lang.RuntimeException: 
> org.apache.cassandra.exceptions.UnavailableException: Cannot achieve 
> consistency level QUORUM
> at 
> com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203) 
> ~[guava-18.0.jar:na]
> at com.google.common.cache.LocalCache.get(LocalCache.java:3937) 
> ~[guava-18.0.jar:na]
> at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) 
> ~[guava-18.0.jar:na]
> at 
> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
>  ~[guava-18.0.jar:na]
> at org.apache.cassandra.auth.AuthCache.get(AuthCache.java:97) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.auth.PermissionsCache.getPermissions(PermissionsCache.java:45)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.auth.AuthenticatedUser.getPermissions(AuthenticatedUser.java:104)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.authorize(ClientState.java:439) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.checkPermissionOnResourceChain(ClientState.java:368)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.ensureHasPermission(ClientState.java:345)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.hasAccess(ClientState.java:332) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.hasColumnFamilyAccess(ClientState.java:310)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.statements.ModificationStatement.checkAccess(ModificationStatement.java:211)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:222)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:532)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:509)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.transport.messages.ExecuteMessage.execute(ExecuteMessage.java:146)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:566)
>  [apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:410)
>  [apache-cassandra-3.11.4.jar:3.11.4]
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:35)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:348)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_181]
> at 
> org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:162)
>  [apache-cassandra-3.11.4.jar:3.11.4]
> at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:114) 
> [apache-cassandra-3.11.4.jar:3.11.4]
> at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
> Caused by: com.googl

[jira] [Assigned] (CASSANDRA-15041) UncheckedExecutionException if authentication/authorization query fails

2019-06-03 Thread JIRA


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-15041?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Per Otterström reassigned CASSANDRA-15041:
--

Assignee: Per Otterström

> UncheckedExecutionException if authentication/authorization query fails
> ---
>
> Key: CASSANDRA-15041
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15041
> Project: Cassandra
>  Issue Type: Bug
>  Components: Feature/Authorization
>Reporter: Per Otterström
>Assignee: Per Otterström
>Priority: Normal
> Fix For: 2.2.15, 3.0.19, 3.11.5, 4.0
>
>
> If cache update for permissions/credentials/roles fails with 
> UnavailableException this comes back to client as UncheckedExecutionException.
> Stack trace on server side:
> {noformat}
> ERROR [Native-Transport-Requests-1] 2019-03-04 16:30:51,537 
> ErrorMessage.java:384 - Unexpected exception during request
> com.google.common.util.concurrent.UncheckedExecutionException: 
> com.google.common.util.concurrent.UncheckedExecutionException: 
> java.lang.RuntimeException: 
> org.apache.cassandra.exceptions.UnavailableException: Cannot achieve 
> consistency level QUORUM
> at 
> com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2203) 
> ~[guava-18.0.jar:na]
> at com.google.common.cache.LocalCache.get(LocalCache.java:3937) 
> ~[guava-18.0.jar:na]
> at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) 
> ~[guava-18.0.jar:na]
> at 
> com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
>  ~[guava-18.0.jar:na]
> at org.apache.cassandra.auth.AuthCache.get(AuthCache.java:97) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.auth.PermissionsCache.getPermissions(PermissionsCache.java:45)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.auth.AuthenticatedUser.getPermissions(AuthenticatedUser.java:104)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.authorize(ClientState.java:439) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.checkPermissionOnResourceChain(ClientState.java:368)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.ensureHasPermission(ClientState.java:345)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.hasAccess(ClientState.java:332) 
> ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.service.ClientState.hasColumnFamilyAccess(ClientState.java:310)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.statements.ModificationStatement.checkAccess(ModificationStatement.java:211)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:222)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:532)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:509)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.transport.messages.ExecuteMessage.execute(ExecuteMessage.java:146)
>  ~[apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:566)
>  [apache-cassandra-3.11.4.jar:3.11.4]
> at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:410)
>  [apache-cassandra-3.11.4.jar:3.11.4]
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:357)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:35)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:348)
>  [netty-all-4.0.44.Final.jar:4.0.44.Final]
> at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_181]
> at 
> org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:162)
>  [apache-cassandra-3.11.4.jar:3.11.4]
> at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:114) 
> [apache-cassandra-3.11.4.jar:3.11.4]
> at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
> Caused by: com.

[jira] [Commented] (CASSANDRA-15120) Nodes that join the ring while another node is MOVING build an invalid view of the token ring

2019-06-03 Thread Sam Tunnicliffe (JIRA)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16854730#comment-16854730
 ] 

Sam Tunnicliffe commented on CASSANDRA-15120:
-

bq. The trunk version does not include the dtest, as much of the plumbing to 
support that is going to land in CASSANDRA-15066.

CASSANDRA-15148

bq. The change to 3.0 also breaks backward compatibility of the cross version 
dtests with 2.2.

CASSANDRA-15147

bq. In the unit tests, RowFilterTest, which was recently added for 
CASSANDRA-15126, appears to be failing on 3.11 only. 

Ninja'd a fix in 
[7f4ecb0|https://github.com/apache/cassandra/commit/7f4ecb01247088e27ff2ae15aa5375805bada53a]

> Nodes that join the ring while another node is MOVING build an invalid view 
> of the token ring
> -
>
> Key: CASSANDRA-15120
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15120
> Project: Cassandra
>  Issue Type: Bug
>  Components: Cluster/Gossip, Cluster/Membership
>Reporter: Benedict
>Assignee: Benedict
>Priority: Normal
> Fix For: 3.0.19, 3.11.5, 4.0
>
>
> Gossip only updates the token metadata for nodes in the NORMAL, SHUTDOWN or 
> LEAVING* statuses.  MOVING and REMOVING_TOKEN nodes do not have their ring 
> information updated (nor do others, but these other states _should_ only be 
> taken by nodes that are not members of the ring).  
> If a node missed the most recent token-modifying events because they were not 
> a member of the ring when they happened (or because Gossip was delayed to 
> them), they will retain an invalid view of the ring until the node enters the 
> one of the NORMAL, SHUTDOWN or LEAVING states.
> *LEAVING is populated differently, however, and in a probably unsafe manner 
> that this work will also address.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Created] (CASSANDRA-15148) Add in-jvm dtest for Gossip to trunk

2019-06-03 Thread Sam Tunnicliffe (JIRA)
Sam Tunnicliffe created CASSANDRA-15148:
---

 Summary: Add in-jvm dtest for Gossip to trunk
 Key: CASSANDRA-15148
 URL: https://issues.apache.org/jira/browse/CASSANDRA-15148
 Project: Cassandra
  Issue Type: Task
  Components: Test/dtest
Reporter: Sam Tunnicliffe


When merging CASSANDRA-15120 to trunk, the in-jvm dtest support for gossip and 
networking were ommitted as much of the work to support that is already done 
and due to land in CASSANDRA-15066. Once that patch is committed, we should add 
the {{GossipTest}} from CASSANDRA-15120 to trunk.




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Created] (CASSANDRA-15147) Backport in-jvm dtest feature flags to 2.2

2019-06-03 Thread Sam Tunnicliffe (JIRA)
Sam Tunnicliffe created CASSANDRA-15147:
---

 Summary: Backport in-jvm dtest feature flags to 2.2
 Key: CASSANDRA-15147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-15147
 Project: Cassandra
  Issue Type: Task
  Components: Test/dtest
Reporter: Sam Tunnicliffe


CASSANDRA-15120 adds gossip and networking to the in-jvm dtests and provides 
feature flags to enable them in tests. This includes changes to the {{Cluster}} 
interface which need to be backported to 2.2 to support cross version tests.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[cassandra] branch cassandra-3.11 updated: Ninja fix RowFilterTest

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-3.11 by this push:
 new 7f4ecb0  Ninja fix RowFilterTest
7f4ecb0 is described below

commit 7f4ecb01247088e27ff2ae15aa5375805bada53a
Author: Sam Tunnicliffe 
AuthorDate: Mon Jun 3 16:32:45 2019 +0100

Ninja fix RowFilterTest

Unit test added in CASSANDRA-15126 is broken on 3.11
---
 test/unit/org/apache/cassandra/db/filter/RowFilterTest.java | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/test/unit/org/apache/cassandra/db/filter/RowFilterTest.java 
b/test/unit/org/apache/cassandra/db/filter/RowFilterTest.java
index 0e15013..9313c3a 100644
--- a/test/unit/org/apache/cassandra/db/filter/RowFilterTest.java
+++ b/test/unit/org/apache/cassandra/db/filter/RowFilterTest.java
@@ -25,6 +25,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import org.junit.Assert;
 import org.junit.Test;
 
+import org.apache.cassandra.SchemaLoader;
 import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.config.ColumnDefinition;
 import org.apache.cassandra.cql3.ColumnIdentifier;
@@ -54,6 +55,7 @@ public class RowFilterTest
 public void testCQLFilterClose()
 {
 // CASSANDRA-15126
+SchemaLoader.prepareServer();
 CFMetaData metadata = CFMetaData.Builder.create("testks", "testcf")
 .addPartitionKey("pk", 
Int32Type.instance)
 .addStaticColumn("s", 
Int32Type.instance)


-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[cassandra] 01/01: Merge branch 'cassandra-3.11' into trunk

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit f4c0c193c13adf3da01fd2507c6f75dd7146c55d
Merge: cc1bc2a 7f4ecb0
Author: Sam Tunnicliffe 
AuthorDate: Mon Jun 3 16:33:20 2019 +0100

Merge branch 'cassandra-3.11' into trunk



-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[cassandra] branch trunk updated (cc1bc2a -> f4c0c19)

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a change to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git.


from cc1bc2a  Merge branch 'cassandra-3.11' into trunk
 new 7f4ecb0  Ninja fix RowFilterTest
 new f4c0c19  Merge branch 'cassandra-3.11' into trunk

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:


-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-14305) Use $CASSANDRA_CONF not $CASSANDRA_HOME/conf in cassandra-env.sh

2019-06-03 Thread Sam Tunnicliffe (JIRA)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-14305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sam Tunnicliffe updated CASSANDRA-14305:

Status: Open  (was: Resolved)

This seems to have broken a dtest: \{{ 
jmx_auth_test.TestJMXAuth.test_basic_auth}}

[~michaelsembwever], [~polo-language] - could one of you have a quick look 
please?

> Use $CASSANDRA_CONF not $CASSANDRA_HOME/conf in cassandra-env.sh 
> -
>
> Key: CASSANDRA-14305
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14305
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Angelo Polo
>Assignee: Angelo Polo
>Priority: Low
> Fix For: 3.11.5, 4.0
>
> Attachments: conf_cassandra-env.sh.patch
>
>
> CASSANDRA_CONF should be used uniformly in conf/cassandra-env.sh to reference 
> the configuration path. Currently, jaas users will have to modify the default 
> path provided for cassandra-jaas.config if their $CASSANDRA_CONF differs from 
> $CASSANDRA_HOME/conf.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Comment Edited] (CASSANDRA-14305) Use $CASSANDRA_CONF not $CASSANDRA_HOME/conf in cassandra-env.sh

2019-06-03 Thread Sam Tunnicliffe (JIRA)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16854694#comment-16854694
 ] 

Sam Tunnicliffe edited comment on CASSANDRA-14305 at 6/3/19 3:09 PM:
-

This seems to have broken a dtest: {{jmx_auth_test.TestJMXAuth.test_basic_auth}}

[~michaelsembwever], [~polo-language] - could one of you have a quick look 
please?


was (Author: beobal):
This seems to have broken a dtest: \{{ 
jmx_auth_test.TestJMXAuth.test_basic_auth}}

[~michaelsembwever], [~polo-language] - could one of you have a quick look 
please?

> Use $CASSANDRA_CONF not $CASSANDRA_HOME/conf in cassandra-env.sh 
> -
>
> Key: CASSANDRA-14305
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14305
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Angelo Polo
>Assignee: Angelo Polo
>Priority: Low
> Fix For: 3.11.5, 4.0
>
> Attachments: conf_cassandra-env.sh.patch
>
>
> CASSANDRA_CONF should be used uniformly in conf/cassandra-env.sh to reference 
> the configuration path. Currently, jaas users will have to modify the default 
> path provided for cassandra-jaas.config if their $CASSANDRA_CONF differs from 
> $CASSANDRA_HOME/conf.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-15120) Nodes that join the ring while another node is MOVING build an invalid view of the token ring

2019-06-03 Thread Sam Tunnicliffe (JIRA)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-15120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sam Tunnicliffe updated CASSANDRA-15120:

  Fix Version/s: 4.0
 3.11.5
 3.0.19
Source Control Link: 
https://github.com/apache/cassandra/commit/e4b5d9818f003be2b9091c48f8435d29202ffe2d
  Since Version: 3.0.0
 Status: Resolved  (was: Ready to Commit)
 Resolution: Fixed

Committed to 3.0 in {{e4b5d9818f003be2b9091c48f8435d29202ffe2d}} and merged to 
3.11 and trunk. The trunk version does not include the dtest, as much of the 
plumbing to support that is going to land in CASSANDRA-15066. The change to 3.0 
also breaks backward compatibility of the cross version dtests with 2.2. 

There are a couple of unrelated, but new-ish test failures.
In the unit tests, {{RowFilterTest}}, which was recently added for 
CASSANDRA-15126, appears to be failing on 3.11 only. 
In the dtests, {{jmx_auth_test.TestJMXAuth.test_basic_auth}} looks like it was 
broken by CASSANDRA-14305. 
I'll follow up all of these separately.


> Nodes that join the ring while another node is MOVING build an invalid view 
> of the token ring
> -
>
> Key: CASSANDRA-15120
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15120
> Project: Cassandra
>  Issue Type: Bug
>  Components: Cluster/Gossip, Cluster/Membership
>Reporter: Benedict
>Assignee: Benedict
>Priority: Normal
> Fix For: 3.0.19, 3.11.5, 4.0
>
>
> Gossip only updates the token metadata for nodes in the NORMAL, SHUTDOWN or 
> LEAVING* statuses.  MOVING and REMOVING_TOKEN nodes do not have their ring 
> information updated (nor do others, but these other states _should_ only be 
> taken by nodes that are not members of the ring).  
> If a node missed the most recent token-modifying events because they were not 
> a member of the ring when they happened (or because Gossip was delayed to 
> them), they will retain an invalid view of the ring until the node enters the 
> one of the NORMAL, SHUTDOWN or LEAVING states.
> *LEAVING is populated differently, however, and in a probably unsafe manner 
> that this work will also address.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Updated] (CASSANDRA-15120) Nodes that join the ring while another node is MOVING build an invalid view of the token ring

2019-06-03 Thread Sam Tunnicliffe (JIRA)


 [ 
https://issues.apache.org/jira/browse/CASSANDRA-15120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sam Tunnicliffe updated CASSANDRA-15120:

Status: Ready to Commit  (was: Changes Suggested)

> Nodes that join the ring while another node is MOVING build an invalid view 
> of the token ring
> -
>
> Key: CASSANDRA-15120
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15120
> Project: Cassandra
>  Issue Type: Bug
>  Components: Cluster/Gossip, Cluster/Membership
>Reporter: Benedict
>Assignee: Benedict
>Priority: Normal
>
> Gossip only updates the token metadata for nodes in the NORMAL, SHUTDOWN or 
> LEAVING* statuses.  MOVING and REMOVING_TOKEN nodes do not have their ring 
> information updated (nor do others, but these other states _should_ only be 
> taken by nodes that are not members of the ring).  
> If a node missed the most recent token-modifying events because they were not 
> a member of the ring when they happened (or because Gossip was delayed to 
> them), they will retain an invalid view of the ring until the node enters the 
> one of the NORMAL, SHUTDOWN or LEAVING states.
> *LEAVING is populated differently, however, and in a probably unsafe manner 
> that this work will also address.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[cassandra] branch cassandra-3.11 updated (60bdfb1 -> 8db0d84)

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a change to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git.


from 60bdfb1  Fix cassandra-env.sh to use $CASSANDRA_CONF to find 
cassandra-jaas.config
 new e4b5d98  Update token metadata for non-normal state changes
 new 8db0d84  Merge branch 'cassandra-3.0' into cassandra-3.11

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGES.txt|   1 +
 .../apache/cassandra/concurrent/SEPExecutor.java   |  10 +-
 .../org/apache/cassandra/concurrent/SEPWorker.java |  33 ++---
 .../cassandra/concurrent/SharedExecutorPool.java   |   8 +-
 .../apache/cassandra/concurrent/StageManager.java  |   2 +-
 .../org/apache/cassandra/net/MessagingService.java |  10 ++
 .../apache/cassandra/service/StorageService.java   | 165 -
 .../org/apache/cassandra/utils/ExpiringMap.java|   5 +
 .../org/apache/cassandra/distributed/Cluster.java  |  18 ++-
 .../cassandra/distributed/UpgradeableCluster.java  |  12 +-
 .../apache/cassandra/distributed/api/Feature.java  |   6 +-
 .../cassandra/distributed/api/IInstance.java   |   5 +-
 .../distributed/impl/AbstractCluster.java  |  58 ++--
 .../impl/DelegatingInvokableInstance.java  |   6 +-
 .../cassandra/distributed/impl/Instance.java   |  46 --
 .../distributed/impl/InstanceClassLoader.java  |   2 +-
 .../distributed/test/DistributedTestBase.java  |   1 +
 .../cassandra/distributed/test/GossipTest.java | 113 ++
 .../cassandra/concurrent/SEPExecutorTest.java  |   2 +-
 .../org/apache/cassandra/service/MoveTest.java |  11 +-
 20 files changed, 374 insertions(+), 140 deletions(-)
 copy src/java/org/apache/cassandra/cache/IRowCacheEntry.java => 
test/distributed/org/apache/cassandra/distributed/api/Feature.java (90%)
 create mode 100644 
test/distributed/org/apache/cassandra/distributed/test/GossipTest.java


-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[cassandra] branch trunk updated (797ec05 -> cc1bc2a)

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a change to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git.


from 797ec05  Merge branch 'cassandra-3.11' into trunk
 new e4b5d98  Update token metadata for non-normal state changes
 new 8db0d84  Merge branch 'cassandra-3.0' into cassandra-3.11
 new cc1bc2a  Merge branch 'cassandra-3.11' into trunk

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../apache/cassandra/service/StorageService.java   | 156 -
 .../org/apache/cassandra/service/MoveTest.java |  11 +-
 2 files changed, 96 insertions(+), 71 deletions(-)


-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[cassandra] branch cassandra-3.0 updated: Update token metadata for non-normal state changes

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a commit to branch cassandra-3.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-3.0 by this push:
 new e4b5d98  Update token metadata for non-normal state changes
e4b5d98 is described below

commit e4b5d9818f003be2b9091c48f8435d29202ffe2d
Author: Benedict Elliott Smith 
AuthorDate: Thu May 2 17:24:43 2019 +0100

Update token metadata for non-normal state changes

Patch by Benedict Elliot Smith; reviewed by Sam Tunnicliffe for 
CASSANDRA-15120
---
 CHANGES.txt|   1 +
 .../apache/cassandra/concurrent/SEPExecutor.java   |  10 +-
 .../org/apache/cassandra/concurrent/SEPWorker.java |  33 ++---
 .../cassandra/concurrent/SharedExecutorPool.java   |   8 +-
 .../apache/cassandra/concurrent/StageManager.java  |   2 +-
 .../org/apache/cassandra/net/MessagingService.java |  10 ++
 .../apache/cassandra/service/StorageService.java   | 163 -
 .../org/apache/cassandra/utils/ExpiringMap.java|   5 +
 .../org/apache/cassandra/distributed/Cluster.java  |  18 ++-
 .../cassandra/distributed/UpgradeableCluster.java  |  12 +-
 .../apache/cassandra/distributed/api/Feature.java  |  24 +++
 .../cassandra/distributed/api/IInstance.java   |   5 +-
 .../distributed/impl/AbstractCluster.java  |  58 ++--
 .../impl/DelegatingInvokableInstance.java  |   6 +-
 .../cassandra/distributed/impl/Instance.java   |  46 --
 .../distributed/impl/InstanceClassLoader.java  |   2 +-
 .../distributed/test/DistributedTestBase.java  |   1 +
 .../cassandra/distributed/test/GossipTest.java | 113 ++
 .../cassandra/concurrent/SEPExecutorTest.java  |   2 +-
 .../org/apache/cassandra/service/MoveTest.java |  11 +-
 20 files changed, 393 insertions(+), 137 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 6f6bd70..36eb9c2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.19
+ * Update token metadata when handling MOVING/REMOVING_TOKEN events 
(CASSANDRA-15120)
  * Add ability to customize cassandra log directory using $CASSANDRA_LOG_DIR 
(CASSANDRA-15090)
  * Skip cells with illegal column names when reading legacy sstables 
(CASSANDRA-15086)
  * Fix assorted gossip races and add related runtime checks (CASSANDRA-15059)
diff --git a/src/java/org/apache/cassandra/concurrent/SEPExecutor.java 
b/src/java/org/apache/cassandra/concurrent/SEPExecutor.java
index 8b12b82..d5c7b14 100644
--- a/src/java/org/apache/cassandra/concurrent/SEPExecutor.java
+++ b/src/java/org/apache/cassandra/concurrent/SEPExecutor.java
@@ -174,7 +174,11 @@ public class SEPExecutor extends 
AbstractLocalAwareExecutorService
 long current = permits.get();
 int workPermits = workPermits(current);
 if (permits.compareAndSet(current, updateWorkPermits(current, 
workPermits + 1)))
-return;
+{
+if (shuttingDown && workPermits + 1 == maxWorkers)
+shutdown.signalAll();
+break;
+}
 }
 }
 
@@ -206,7 +210,7 @@ public class SEPExecutor extends 
AbstractLocalAwareExecutorService
 {
 shuttingDown = true;
 pool.executors.remove(this);
-if (getActiveCount() == 0)
+if (getActiveCount() == 0 && getPendingTasks() == 0)
 shutdown.signalAll();
 
 // release metrics
@@ -219,6 +223,8 @@ public class SEPExecutor extends 
AbstractLocalAwareExecutorService
 List aborted = new ArrayList<>();
 while (takeTaskPermit())
 aborted.add(tasks.poll());
+if (getActiveCount() == 0)
+shutdown.signalAll();
 return aborted;
 }
 
diff --git a/src/java/org/apache/cassandra/concurrent/SEPWorker.java 
b/src/java/org/apache/cassandra/concurrent/SEPWorker.java
index edc31da..f7eb47a 100644
--- a/src/java/org/apache/cassandra/concurrent/SEPWorker.java
+++ b/src/java/org/apache/cassandra/concurrent/SEPWorker.java
@@ -98,7 +98,6 @@ final class SEPWorker extends AtomicReference 
implements Runnabl
 // if we do have tasks assigned, nobody will change our state 
so we can simply set it to WORKING
 // (which is also a state that will never be interrupted 
externally)
 set(Work.WORKING);
-boolean shutdown;
 while (true)
 {
 // before we process any task, we maybe schedule a new 
worker _to our executor only_; this
@@ -111,19 +110,13 @@ final class SEPWorker extends 
AtomicReference implements Runnabl
 task = null;
 
 // if we're shutting down, or we fail to take a permit, we 
don't perform any more work
-if ((shutdown = assigned.shuttingDown) || 
!assigned.takeTaskPermit())
+if (!assi

[cassandra] 01/01: Merge branch 'cassandra-3.11' into trunk

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit cc1bc2a8e1bcac8cee08289ca04d6490a95f225e
Merge: 797ec05 8db0d84
Author: Sam Tunnicliffe 
AuthorDate: Mon Jun 3 16:02:36 2019 +0100

Merge branch 'cassandra-3.11' into trunk

 .../apache/cassandra/service/StorageService.java   | 156 -
 .../org/apache/cassandra/service/MoveTest.java |  11 +-
 2 files changed, 96 insertions(+), 71 deletions(-)

diff --cc src/java/org/apache/cassandra/service/StorageService.java
index eade7dd,c340db6..2b6bf1d
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -2457,18 -2311,95 +2457,94 @@@ public class StorageService extends Not
  tokenMetadata.updateHostId(Gossiper.instance.getHostId(newNode), 
newNode);
  }
  
 -private void ensureUpToDateTokenMetadata(String status, InetAddress 
endpoint)
++private void ensureUpToDateTokenMetadata(String status, 
InetAddressAndPort endpoint)
+ {
+ Set tokens = new TreeSet<>(getTokensFor(endpoint));
+ 
+ if (logger.isDebugEnabled())
+ logger.debug("Node {} state {}, tokens {}", endpoint, status, 
tokens);
+ 
+ // If the node is previously unknown or tokens do not match, update 
tokenmetadata to
+ // have this node as 'normal' (it must have been using this token 
before the
+ // leave). This way we'll get pending ranges right.
+ if (!tokenMetadata.isMember(endpoint))
+ {
+ logger.info("Node {} state jump to {}", endpoint, status);
+ updateTokenMetadata(endpoint, tokens);
+ }
+ else if (!tokens.equals(new 
TreeSet<>(tokenMetadata.getTokens(endpoint
+ {
+ logger.warn("Node {} '{}' token mismatch. Long network 
partition?", endpoint, status);
+ updateTokenMetadata(endpoint, tokens);
+ }
+ }
+ 
 -private void updateTokenMetadata(InetAddress endpoint, Iterable 
tokens)
++private void updateTokenMetadata(InetAddressAndPort endpoint, 
Iterable tokens)
+ {
+ updateTokenMetadata(endpoint, tokens, new HashSet<>());
+ }
+ 
 -private void updateTokenMetadata(InetAddress endpoint, Iterable 
tokens, Set endpointsToRemove)
++private void updateTokenMetadata(InetAddressAndPort endpoint, 
Iterable tokens, Set endpointsToRemove)
+ {
+ Set tokensToUpdateInMetadata = new HashSet<>();
+ Set tokensToUpdateInSystemKeyspace = new HashSet<>();
+ 
+ for (final Token token : tokens)
+ {
+ // we don't want to update if this node is responsible for the 
token and it has a later startup time than endpoint.
 -InetAddress currentOwner = tokenMetadata.getEndpoint(token);
++InetAddressAndPort currentOwner = 
tokenMetadata.getEndpoint(token);
+ if (currentOwner == null)
+ {
+ logger.debug("New node {} at token {}", endpoint, token);
+ tokensToUpdateInMetadata.add(token);
+ tokensToUpdateInSystemKeyspace.add(token);
+ }
+ else if (endpoint.equals(currentOwner))
+ {
+ // set state back to normal, since the node may have tried to 
leave, but failed and is now back up
+ tokensToUpdateInMetadata.add(token);
+ tokensToUpdateInSystemKeyspace.add(token);
+ }
+ else if (Gossiper.instance.compareEndpointStartup(endpoint, 
currentOwner) > 0)
+ {
+ tokensToUpdateInMetadata.add(token);
+ tokensToUpdateInSystemKeyspace.add(token);
+ 
+ // currentOwner is no longer current, endpoint is.  Keep 
track of these moves, because when
+ // a host no longer has any tokens, we'll want to remove it.
 -Multimap epToTokenCopy = 
getTokenMetadata().getEndpointToTokenMapForReading();
++Multimap epToTokenCopy = 
getTokenMetadata().getEndpointToTokenMapForReading();
+ epToTokenCopy.get(currentOwner).remove(token);
+ if (epToTokenCopy.get(currentOwner).isEmpty())
+ endpointsToRemove.add(currentOwner);
+ 
+ logger.info("Nodes {} and {} have the same token {}. {} is 
the new owner", endpoint, currentOwner, token, endpoint);
+ }
+ else
+ {
+ logger.info("Nodes () and {} have the same token {}.  
Ignoring {}", endpoint, currentOwner, token, endpoint);
+ }
+ }
+ 
+ tokenMetadata.updateNormalTokens(tokensToUpdateInMetadata, endpoint);
 -for (InetAddress ep : endpointsToRemove)
++for (InetAddressAndPort ep : endpointsToRemove)
+ {
+ removeEndpoint(ep);
+ if (replacing && 
ep.equal

[cassandra] 01/01: Merge branch 'cassandra-3.0' into cassandra-3.11

2019-06-03 Thread samt
This is an automated email from the ASF dual-hosted git repository.

samt pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 8db0d84439c3209bc0da0c9a0b9730fb8b26a328
Merge: 60bdfb1 e4b5d98
Author: Sam Tunnicliffe 
AuthorDate: Mon Jun 3 15:59:51 2019 +0100

Merge branch 'cassandra-3.0' into cassandra-3.11

 CHANGES.txt|   1 +
 .../apache/cassandra/concurrent/SEPExecutor.java   |  10 +-
 .../org/apache/cassandra/concurrent/SEPWorker.java |  33 ++---
 .../cassandra/concurrent/SharedExecutorPool.java   |   8 +-
 .../apache/cassandra/concurrent/StageManager.java  |   2 +-
 .../org/apache/cassandra/net/MessagingService.java |  10 ++
 .../apache/cassandra/service/StorageService.java   | 165 -
 .../org/apache/cassandra/utils/ExpiringMap.java|   5 +
 .../org/apache/cassandra/distributed/Cluster.java  |  18 ++-
 .../cassandra/distributed/UpgradeableCluster.java  |  12 +-
 .../apache/cassandra/distributed/api/Feature.java  |  24 +++
 .../cassandra/distributed/api/IInstance.java   |   5 +-
 .../distributed/impl/AbstractCluster.java  |  58 ++--
 .../impl/DelegatingInvokableInstance.java  |   6 +-
 .../cassandra/distributed/impl/Instance.java   |  46 --
 .../distributed/impl/InstanceClassLoader.java  |   2 +-
 .../distributed/test/DistributedTestBase.java  |   1 +
 .../cassandra/distributed/test/GossipTest.java | 113 ++
 .../cassandra/concurrent/SEPExecutorTest.java  |   2 +-
 .../org/apache/cassandra/service/MoveTest.java |  11 +-
 20 files changed, 394 insertions(+), 138 deletions(-)

diff --cc CHANGES.txt
index 59c89b7,36eb9c2..ff985bd
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
 -3.0.19
 +3.11.5
 + * Fix cassandra-env.sh to use $CASSANDRA_CONF to find cassandra-jaas.config 
(CASSANDRA-14305)
 + * Fixed nodetool cfstats printing index name twice (CASSANDRA-14903)
 + * Add flag to disable SASI indexes, and warnings on creation 
(CASSANDRA-14866)
 +Merged from 3.0:
+  * Update token metadata when handling MOVING/REMOVING_TOKEN events 
(CASSANDRA-15120)
   * Add ability to customize cassandra log directory using $CASSANDRA_LOG_DIR 
(CASSANDRA-15090)
   * Skip cells with illegal column names when reading legacy sstables 
(CASSANDRA-15086)
   * Fix assorted gossip races and add related runtime checks (CASSANDRA-15059)
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index e64cbaa,4769b22..c340db6
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -764,15 -715,11 +764,16 @@@ public class StorageService extends Not
  
  private boolean shouldBootstrap()
  {
 -return DatabaseDescriptor.isAutoBootstrap() && 
!SystemKeyspace.bootstrapComplete() && 
!DatabaseDescriptor.getSeeds().contains(FBUtilities.getBroadcastAddress());
 +return DatabaseDescriptor.isAutoBootstrap() && 
!SystemKeyspace.bootstrapComplete() && !isSeed();
 +}
 +
 +public static boolean isSeed()
 +{
 +return 
DatabaseDescriptor.getSeeds().contains(FBUtilities.getBroadcastAddress());
  }
  
- private void prepareToJoin() throws ConfigurationException
+ @VisibleForTesting
+ public void prepareToJoin() throws ConfigurationException
  {
  if (!joined)
  {
@@@ -852,31 -788,9 +853,32 @@@
  }
  }
  
 +public void waitForSchema(int delay)
 +{
 +// first sleep the delay to make sure we see all our peers
 +for (int i = 0; i < delay; i += 1000)
 +{
 +// if we see schema, we can proceed to the next check directly
 +if 
(!Schema.instance.getVersion().equals(SchemaConstants.emptyVersion))
 +{
 +logger.debug("got schema: {}", Schema.instance.getVersion());
 +break;
 +}
 +Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
 +}
 +// if our schema hasn't matched yet, wait until it has
 +// we do this by waiting for all in-flight migration requests and 
responses to complete
 +// (post CASSANDRA-1391 we don't expect this to be necessary very 
often, but it doesn't hurt to be careful)
 +if (!MigrationManager.isReadyForBootstrap())
 +{
 +setMode(Mode.JOINING, "waiting for schema information to 
complete", true);
 +MigrationManager.waitUntilReadyForBootstrap();
 +}
 +}
 +
- private void joinTokenRing(int delay) throws ConfigurationException
- {
+ @VisibleForTesting
+ public void joinTokenRing(int delay) throws ConfigurationException
 -{
++{
  joined = true;
  
  // We bootstrap if we haven't successfully bootstrapped before, as 
long as we are not a seed.
diff --cc test/distributed/org/apache/cassandra/distributed/impl/Instance.java
index 3823