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

Stefan Miklosovic commented on CASSANDRA-19412:
-----------------------------------------------

[CASSANDRA-19412-4.0|https://github.com/instaclustr/cassandra/tree/CASSANDRA-19412-4.0]
{noformat}
java11_pre-commit_tests                         
java11_separate_tests                            
java8_pre-commit_tests                          
  ✓ j8_build                                         1m 42s
  ✓ j8_cqlsh-dtests-py2-no-vnodes                    8m 24s
  ✓ j8_cqlsh-dtests-py2-with-vnodes                  8m 30s
  ✓ j8_cqlsh_dtests_py3                              8m 10s
  ✓ j8_cqlsh_dtests_py311                            9m 10s
  ✓ j8_cqlsh_dtests_py311_vnode                      8m 40s
  ✓ j8_cqlsh_dtests_py38                             6m 15s
  ✓ j8_cqlsh_dtests_py38_vnode                       5m 31s
  ✓ j8_cqlsh_dtests_py3_vnode                         7m 2s
  ✓ j8_cqlshlib_tests                               10m 11s
  ✓ j8_dtests                                       31m 30s
  ✓ j8_dtests_vnode                                 35m 25s
  ✓ j8_jvm_dtests                                   13m 20s
  ✓ j11_dtests_vnode                                33m 46s
  ✓ j11_dtests                                      32m 30s
  ✓ j11_cqlsh_dtests_py3_vnode                       5m 22s
  ✓ j11_cqlsh_dtests_py38_vnode                      5m 57s
  ✓ j11_cqlsh_dtests_py38                            5m 16s
  ✓ j11_cqlsh_dtests_py311_vnode                     5m 38s
  ✓ j11_cqlsh_dtests_py311                           5m 34s
  ✓ j11_cqlsh_dtests_py3                             5m 23s
  ✓ j11_cqlsh-dtests-py2-with-vnodes                 5m 27s
  ✓ j11_cqlsh-dtests-py2-no-vnodes                   5m 35s
  ✕ j8_unit_tests                                    8m 49s
      org.apache.cassandra.cql3.MemtableSizeTest testTruncationReleasesLogSpace
  ✕ j8_utests_system_keyspace_directory              9m 11s
      org.apache.cassandra.cql3.MemtableSizeTest testTruncationReleasesLogSpace
  ✕ j11_unit_tests                                   7m 29s
      org.apache.cassandra.cql3.MemtableSizeTest testTruncationReleasesLogSpace
java8_separate_tests                             
{noformat}

[java11_pre-commit_tests|https://app.circleci.com/pipelines/github/instaclustr/cassandra/3908/workflows/a6669c63-6c96-4ca1-913c-16bf757696fd]
[java11_separate_tests|https://app.circleci.com/pipelines/github/instaclustr/cassandra/3908/workflows/391a8c83-1918-42bd-80f6-b0e40f5dd161]
[java8_pre-commit_tests|https://app.circleci.com/pipelines/github/instaclustr/cassandra/3908/workflows/8c0c8ba8-2e46-458e-a68b-1de9be3e733a]
[java8_separate_tests|https://app.circleci.com/pipelines/github/instaclustr/cassandra/3908/workflows/31ce1e70-6430-4383-b7f0-5d5d83989477]


> delete useless collection:backPressureHosts in the sendToHintedReplicas to 
> improve write performance
> ----------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-19412
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-19412
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Legacy/Local Write-Read Paths
>            Reporter: Ling Mao
>            Assignee: Ling Mao
>            Priority: Low
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> Every normal write request will go through this 
> method({_}*sendToHintedReplicas*{_}). However, the list:backPressureHosts in 
> the method has never been used functionally.
> The _*backpressure*_ was introduced by:
> {code:java}
> Support optional backpressure strategies at the coordinator
> patch by Sergio Bossa; reviewed by Stefania Alborghetti for CASSANDRA-9318
> d43b9ce5 Sergio Bossa <[email protected]> on 2016/9/19 at 10:42 AM {code}
> {code:java}
> public static void sendToHintedEndpoints(final Mutation mutation,
>                                              Iterable<InetAddress> targets,
>                                              
> AbstractWriteResponseHandler<IMutation> responseHandler,
>                                              String localDataCenter,
>                                              Stage stage)
>     throws OverloadedException
>     {
>         int targetsSize = Iterables.size(targets);
>         // this dc replicas:
>         Collection<InetAddress> localDc = null;
>         // extra-datacenter replicas, grouped by dc
>         Map<String, Collection<InetAddress>> dcGroups = null;
>         // only need to create a Message for non-local writes
>         MessageOut<Mutation> message = null;
>         boolean insertLocal = false;
>         ArrayList<InetAddress> endpointsToHint = null;
>         List<InetAddress> backPressureHosts = null;
>         for (InetAddress destination : targets)
>         {
>             checkHintOverload(destination);
>             if (FailureDetector.instance.isAlive(destination))
>             {
>                 if (canDoLocalRequest(destination))
>                 {
>                     insertLocal = true;
>                 }
>                 else
>                 {
>                     // belongs on a different server
>                     if (message == null)
>                         message = mutation.createMessage();
>                     String dc = 
> DatabaseDescriptor.getEndpointSnitch().getDatacenter(destination);
>                     // direct writes to local DC or old Cassandra versions
>                     // (1.1 knows how to forward old-style String message 
> IDs; updated to int in 2.0)
>                     if (localDataCenter.equals(dc))
>                     {
>                         if (localDc == null)
>                             localDc = new ArrayList<>(targetsSize);
>                         localDc.add(destination);
>                     }
>                     else
>                     {
>                         Collection<InetAddress> messages = (dcGroups != null) 
> ? dcGroups.get(dc) : null;
>                         if (messages == null)
>                         {
>                             messages = new ArrayList<>(3); // most DCs will 
> have <= 3 replicas
>                             if (dcGroups == null)
>                                 dcGroups = new HashMap<>();
>                             dcGroups.put(dc, messages);
>                         }
>                         messages.add(destination);
>                     }
>                     if (backPressureHosts == null)
>                         backPressureHosts = new ArrayList<>(targetsSize);
>                     backPressureHosts.add(destination);
>                 }
>             }
>             else
>             {
>                 if (shouldHint(destination))
>                 {
>                     if (endpointsToHint == null)
>                         endpointsToHint = new ArrayList<>(targetsSize);
>                     endpointsToHint.add(destination);
>                 }
>             }
>         }
>         if (backPressureHosts != null)
>             MessagingService.instance().applyBackPressure(backPressureHosts, 
> responseHandler.currentTimeout());
>         if (endpointsToHint != null)
>             submitHint(mutation, endpointsToHint, responseHandler);
>         if (insertLocal)
>             performLocally(stage, Optional.of(mutation), mutation::apply, 
> responseHandler);
>         if (localDc != null)
>         {
>             for (InetAddress destination : localDc)
>                 MessagingService.instance().sendRR(message, destination, 
> responseHandler, true);
>         }
>         if (dcGroups != null)
>         {
>             // for each datacenter, send the message to one node to relay the 
> write to other replicas
>             for (Collection<InetAddress> dcTargets : dcGroups.values())
>                 sendMessagesToNonlocalDC(message, dcTargets, responseHandler);
>         }
>     } {code}
> Now the backPressure related codes had been deleted in the codebase, and here 
> maybe someone forgot to remove the collection: backPressureHosts. Removing it 
> will save every write request to add a few items to a list to reduce the 
> memory footprint



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to