You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jeremiah Jordan (JIRA)" <ji...@apache.org> on 2013/11/27 18:49:35 UTC

[jira] [Updated] (CASSANDRA-6415) Snapshot repair block for ever is something happens to the "I made my snapshot" response

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

Jeremiah Jordan updated CASSANDRA-6415:
---------------------------------------

    Description: 
The "snapshotLatch.await();" can be waiting for ever and block all repair operations indefinitely if something happens that another node doesn't respond.

{noformat}
            public void makeSnapshots(Collection<InetAddress> endpoints)
            {
                try
                {
                    snapshotLatch = new CountDownLatch(endpoints.size());
                    IAsyncCallback callback = new IAsyncCallback()
                    {
                        public boolean isLatencyForSnitch()
                        {
                            return false;
                        }

                        public void response(MessageIn msg)
                        {
                            RepairJob.this.snapshotLatch.countDown();
                        }
                    };
                    for (InetAddress endpoint : endpoints)
                        MessagingService.instance().sendRR(new SnapshotCommand(tablename, cfname, sessionName, false).createMessage(), endpoint, callback);
                    snapshotLatch.await();
                    snapshotLatch = null;
                }
                catch (InterruptedException e)
                {
                    throw new RuntimeException(e);
                }
            }
{noformat}

  was:
The "snapshotLatch.await();" can be waiting for ever and block all repair operations indefinitely if something happens that another node doesn't respond.

{quote}
            public void makeSnapshots(Collection<InetAddress> endpoints)
            {
                try
                {
                    snapshotLatch = new CountDownLatch(endpoints.size());
                    IAsyncCallback callback = new IAsyncCallback()
                    {
                        public boolean isLatencyForSnitch()
                        {
                            return false;
                        }

                        public void response(MessageIn msg)
                        {
                            RepairJob.this.snapshotLatch.countDown();
                        }
                    };
                    for (InetAddress endpoint : endpoints)
                        MessagingService.instance().sendRR(new SnapshotCommand(tablename, cfname, sessionName, false).createMessage(), endpoint, callback);
                    snapshotLatch.await();
                    snapshotLatch = null;
                }
                catch (InterruptedException e)
                {
                    throw new RuntimeException(e);
                }
            }
{quote}


> Snapshot repair block for ever is something happens to the "I made my snapshot" response
> ----------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-6415
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6415
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Jeremiah Jordan
>
> The "snapshotLatch.await();" can be waiting for ever and block all repair operations indefinitely if something happens that another node doesn't respond.
> {noformat}
>             public void makeSnapshots(Collection<InetAddress> endpoints)
>             {
>                 try
>                 {
>                     snapshotLatch = new CountDownLatch(endpoints.size());
>                     IAsyncCallback callback = new IAsyncCallback()
>                     {
>                         public boolean isLatencyForSnitch()
>                         {
>                             return false;
>                         }
>                         public void response(MessageIn msg)
>                         {
>                             RepairJob.this.snapshotLatch.countDown();
>                         }
>                     };
>                     for (InetAddress endpoint : endpoints)
>                         MessagingService.instance().sendRR(new SnapshotCommand(tablename, cfname, sessionName, false).createMessage(), endpoint, callback);
>                     snapshotLatch.await();
>                     snapshotLatch = null;
>                 }
>                 catch (InterruptedException e)
>                 {
>                     throw new RuntimeException(e);
>                 }
>             }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.1#6144)