You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2020/08/28 08:06:00 UTC

[cassandra] branch cassandra-2.2 updated (3f74a9c -> 1caaa9c)

This is an automated email from the ASF dual-hosted git repository.

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


    from 3f74a9c  Merge branch 'cassandra-2.1' into cassandra-2.2
     new 63f4da9  Only allow strings to be passed to JMX authentication
     new 1caaa9c  Merge branch 'cassandra-2.1' into cassandra-2.2

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                                                | 3 ++-
 src/java/org/apache/cassandra/service/CassandraDaemon.java | 6 +++++-
 2 files changed, 7 insertions(+), 2 deletions(-)


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


[cassandra] 01/01: Merge branch 'cassandra-2.1' into cassandra-2.2

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 1caaa9c0b6d49b6394a8c28aac61047e66be50e2
Merge: 3f74a9c 63f4da9
Author: Mick Semb Wever <mc...@apache.org>
AuthorDate: Fri Aug 28 09:32:55 2020 +0200

    Merge branch 'cassandra-2.1' into cassandra-2.2

 CHANGES.txt                                                | 3 ++-
 src/java/org/apache/cassandra/service/CassandraDaemon.java | 6 +++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --cc CHANGES.txt
index 439ef5d,04cbfa3..d6edbe9
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,66 -1,12 +1,67 @@@
 -2.1.22
 +2.2.18
 + * Fix CQL parsing of collections when the column type is reversed (CASSANDRA-15814)
- 
++Merged from 2.1:
+  * Only allow strings to be passed to JMX authentication (CASSANDRA-16077)
 - * Disable JMX rebinding (CASSANDRA-15653, CASSANDRA-16075)
  
 -2.1.21
 +2.2.17
 + * Fix nomenclature of allow and deny lists (CASSANDRA-15862)
 + * Remove generated files from source artifact (CASSANDRA-15849)
 + * Remove duplicated tools binaries from tarballs (CASSANDRA-15768)
 + * Duplicate results with DISTINCT queries in mixed mode (CASSANDRA-15501)
 + * Disable JMX rebinding (CASSANDRA-15653)
 + * Fix Commit log replays when static column clustering keys are collections (CASSANDRA-14365)
 + * Fix Red Hat init script on newer systemd versions (CASSANDRA-15273)
 + * Allow EXTRA_CLASSPATH to work on tar/source installations (CASSANDRA-15567)
 +Merged from 2.1:
   * Fix writing of snapshot manifest when the table has table-backed secondary indexes (CASSANDRA-10968)
   * Fix parse error in cqlsh COPY FROM and formatting for map of blobs (CASSANDRA-15679)
 +
 +
 +2.2.16
 + * Fix SELECT JSON output for empty blobs (CASSANDRA-15435)
 + * In-JVM DTest: Set correct internode message version for upgrade test (CASSANDRA-15371)
 + * In-JVM DTest: Support NodeTool in dtest
 +
 +
 +2.2.15
 + * Catch non-IOException in FileUtils.close to make sure that all resources are closed (CASSANDRA-15225)
 + * Handle exceptions during authentication/authorization (CASSANDRA-15041)
 + * Fix JDK7 compatibility broken in cassandra-2.2 (CASSANDRA-15050)
 + * Support cross version messaging in in-jvm upgrade dtests (CASSANDRA-15078)
 + * Fix index summary redistribution cancellation (CASSANDRA-15045)
 + * Refactor Circle CI configuration (CASSANDRA-14806)
 + * Fixing invalid CQL in security documentation (CASSANDRA-15020)
 + * Make tools/bin/token-generator py2/3 compatible (CASSANDRA-15012)
 + * Multi-version in-JVM dtests (CASSANDRA-14937)
 + * Allow instance class loaders to be garbage collected for inJVM dtest (CASSANDRA-15170)
 + * Add support for network topology and query tracing for inJVM dtest (CASSANDRA-15319)
 +
 +
 +2.2.14
 + * CircleCI docker image should bake in more dependencies (CASSANDRA-14985)
 + * Don't enable client transports when bootstrap is pending (CASSANDRA-14525)
 + * MigrationManager attempts to pull schema from different major version nodes (CASSANDRA-14928)
 + * Don't skip entire sstables when reading backwards with mixed clustering column order
 +   (CASSANDRA-14910)
 + * Cannot perform slice reads in reverse direction against tables with clustering columns
 +   in mixed order (CASSANDRA-14899)
 + * Fix incorrect cqlsh results when selecting same columns multiple times (CASSANDRA-13262)
 + * Returns null instead of NaN or Infinity in JSON strings (CASSANDRA-14377)
 +Merged from 2.1:
   * Paged Range Slice queries with DISTINCT can drop rows from results (CASSANDRA-14956)
   * Update release checksum algorithms to SHA-256, SHA-512 (CASSANDRA-14970)
 +
 +
 +2.2.13
 + * Fix bug that prevented compaction of SSTables after full repairs (CASSANDRA-14423)
 + * Incorrect counting of pending messages in OutboundTcpConnection (CASSANDRA-11551)
 + * Fix compaction failure caused by reading un-flushed data (CASSANDRA-12743)
 + * Use Bounds instead of Range for sstables in anticompaction (CASSANDRA-14411)
 + * Fix JSON queries with IN restrictions and ORDER BY clause (CASSANDRA-14286)
 + * CQL fromJson(null) throws NullPointerException (CASSANDRA-13891)
 + * Fix query pager DEBUG log leak causing hit in paged reads throughput (CASSANDRA-14318)
 + * Backport circleci yaml (CASSANDRA-14240)
 +Merged from 2.1:
   * Check checksum before decompressing data (CASSANDRA-14284)
   * CVE-2017-5929 Security vulnerability in Logback warning in NEWS.txt (CASSANDRA-14183)
  
diff --cc src/java/org/apache/cassandra/service/CassandraDaemon.java
index 7d85d9d,313cc9d..86e2464
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@@ -33,12 -31,11 +33,13 @@@ import java.rmi.registry.LocateRegistry
  import java.rmi.registry.Registry;
  import java.rmi.server.RMIClientSocketFactory;
  import java.rmi.server.RMIServerSocketFactory;
 +import java.util.Collections;
++import java.util.HashMap;
  import java.util.List;
 -import java.util.*;
 +import java.util.Map;
 +import java.util.UUID;
  import java.util.concurrent.TimeUnit;
  
 -import javax.management.MBeanServer;
  import javax.management.ObjectName;
  import javax.management.StandardMBean;
  import javax.management.remote.JMXConnectorServer;
@@@ -88,63 -79,55 +89,66 @@@ import org.apache.cassandra.utils.*
  public class CassandraDaemon
  {
      public static final String MBEAN_NAME = "org.apache.cassandra.db:type=NativeAccess";
 -    public static JMXConnectorServer jmxServer = null;
 +    private static JMXConnectorServer jmxServer = null;
  
 -    private static final Logger logger = LoggerFactory.getLogger(CassandraDaemon.class);
 +    private static final Logger logger;
  
 -    private static void maybeInitJmx()
 +    @VisibleForTesting
 +    public static CassandraDaemon getInstanceForTesting()
      {
 -        String jmxPort = System.getProperty("com.sun.management.jmxremote.port");
 +        return instance;
 +    }
  
 -        if (jmxPort == null)
 +    static {
 +        // Need to register metrics before instrumented appender is created(first access to LoggerFactory).
 +        SharedMetricRegistries.getOrCreate("logback-metrics").addListener(new MetricRegistryListener.Base()
          {
 -            logger.warn("JMX is not enabled to receive remote connections. Please see cassandra-env.sh for more info.");
 -
 -            jmxPort = System.getProperty("cassandra.jmx.local.port");
 -
 -            if (jmxPort == null)
 +            @Override
 +            public void onMeterAdded(String metricName, Meter meter)
              {
 -                logger.error("cassandra.jmx.local.port missing from cassandra-env.sh, unable to start local JMX service." + jmxPort);
 +                // Given metricName consists of appender name in logback.xml + "." + metric name.
 +                // We first separate appender name
 +                int separator = metricName.lastIndexOf('.');
 +                String appenderName = metricName.substring(0, separator);
 +                String metric = metricName.substring(separator + 1); // remove "."
 +                ObjectName name = DefaultNameFactory.createMetricName(appenderName, metric, null).getMBeanName();
 +                CassandraMetricsRegistry.Metrics.registerMBean(meter, name);
              }
 -            else
 -            {
 -                System.setProperty("java.rmi.server.hostname", InetAddress.getLoopbackAddress().getHostAddress());
 +        });
 +        logger = LoggerFactory.getLogger(CassandraDaemon.class);
 +    }
  
 -                try
 -                {
 -                    RMIServerSocketFactory serverFactory = new RMIServerSocketFactoryImpl();
 -                    Map<String, Object> env = new HashMap<>();
 -                    env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, serverFactory);
 -                    env.put("jmx.remote.rmi.server.credential.types",
 -                        new String[] { String[].class.getName(), String.class.getName() });
 -                    Registry registry = new JmxRegistry(Integer.valueOf(jmxPort), null, serverFactory, "jmxrmi");
 -                    JMXServiceURL url = new JMXServiceURL(String.format("service:jmx:rmi://localhost/jndi/rmi://localhost:%s/jmxrmi", jmxPort));
 -                    @SuppressWarnings("resource")
 -                    RMIJRMPServerImpl server = new RMIJRMPServerImpl(Integer.valueOf(jmxPort),
 -                                                                     null,
 -                                                                     (RMIServerSocketFactory) env.get(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE),
 -                                                                     env);
 -                    jmxServer = new RMIConnectorServer(url, env, server, ManagementFactory.getPlatformMBeanServer());
 -                    jmxServer.start();
 -                    ((JmxRegistry)registry).setRemoteServerStub(server.toStub());
 -                }
 -                catch (IOException e)
 -                {
 -                    logger.error("Error starting local jmx server: ", e);
 -                }
 -            }
 +    private void maybeInitJmx()
 +    {
 +        if (System.getProperty("com.sun.management.jmxremote.port") != null)
 +            return;
 +
 +        String jmxPort = System.getProperty("cassandra.jmx.local.port");
 +        if (jmxPort == null)
 +            return;
 +
 +        System.setProperty("java.rmi.server.hostname", InetAddress.getLoopbackAddress().getHostAddress());
 +        RMIServerSocketFactory serverFactory = new RMIServerSocketFactoryImpl();
-         Map<String, ?> env = Collections.singletonMap(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, serverFactory);
++        Map<String, Object> env = new HashMap<>();
++        env.put(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE, serverFactory);
++        env.put("jmx.remote.rmi.server.credential.types",
++            new String[] { String[].class.getName(), String.class.getName() });
 +        try
 +        {
 +            Registry registry = new JmxRegistry(Integer.valueOf(jmxPort), null, serverFactory, "jmxrmi");
 +            JMXServiceURL url = new JMXServiceURL(String.format("service:jmx:rmi://localhost/jndi/rmi://localhost:%s/jmxrmi", jmxPort));
 +            @SuppressWarnings("resource")
 +            RMIJRMPServerImpl server = new RMIJRMPServerImpl(Integer.valueOf(jmxPort),
 +                                                             null,
 +                                                             (RMIServerSocketFactory) env.get(RMIConnectorServer.RMI_SERVER_SOCKET_FACTORY_ATTRIBUTE),
 +                                                             env);
 +            jmxServer = new RMIConnectorServer(url, env, server, ManagementFactory.getPlatformMBeanServer());
 +            jmxServer.start();
 +            ((JmxRegistry)registry).setRemoteServerStub(server.toStub());
          }
 -        else
 +        catch (IOException e)
          {
 -            logger.info("JMX is enabled to receive remote connections on port: " + jmxPort);
 +            exitOrFail(1, e.getMessage(), e.getCause());
          }
      }
  


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