Uploaded image for project: 'Apache Cassandra'
  1. Apache Cassandra
  2. CASSANDRA-6535

Prepared Statement on Defunct CF Can Impact Cluster Availability

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 1.2.14
    • None
    • None
    • Cassandra 1.2.12
      CentOS 6.4

    • Low

    Description

      Synopsis: misbehaving clients can cause DoS on a cluster with a defunct prepared statement

      Scenario:
      1.) Create prepared INSERT statement on existing table X
      2.) Table X is dropped
      3.) Continue using prepared statement from (1)

      Result:
      a.) on coordinator node: COMMIT-LOG-WRITER + MutationStage errors
      b.) on other nodes: "UnknownColumnFamilyException reading from socket; closing" --> leads to thrashing inter-node connections
      c.) Other clients of the cluster suffer from I/O timeouts, presumably a result of (b)

      Other observations:

      • On single-node clusters, clients return from insert without error because mutation errors are swallowed.
      • On multiple-node clusters, clients receive a confounded 'read timeout' error because the closed internode connections do not propagate the error back.
      • With prepared SELECT statements (as opposed to INSERT described above). A NullPointerException is caused on the server, and no meaninful error is returned to the client.

      Besides the obvious "don't do that" to the integrator, it would be good if the cluster could handle this error case more gracefully and avoid undue impact.

      Attachments

        1. 6535.txt
          1 kB
          Adam Holmberg

        Activity

          People

            aholmber Adam Holmberg
            aholmber Adam Holmberg
            Adam Holmberg
            Sylvain Lebresne
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: