Uploaded image for project: 'James Server'
  1. James Server
  2. JAMES-3656

WithCassandraPassThroughBlobStoreMutableTest::oneHundredMailsShouldBeWellReceived is unstable

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.7.0
    • 3.7.0
    • JMAP
    • None

    Description

      https://ci-builds.apache.org/job/james/job/ApacheJames/job/master/281/testReport/junit/org.apache.james/WithCassandraPassThroughBlobStoreMutableTest/oneHundredMailsShouldBeWellReceived_GuiceJamesServer_/

      This master build did fail because JMAP filtering failed for one of the emails.

      This test sends 100 emails to a single recipient. Single recipients have their filters on a single Primary Key, and filters are managed by a Cassandra Lightweight transaction (refer to JAMES-3435 for background regarding LightWeight transactions in the project). Apparrently this is enough to create contention!

      05:02:05.113 [ERROR] o.a.j.m.i.ProcessorImpl - Exception calling org.apache.james.jmap.mailet.filter.JMAPFiltering: Cassandra timeout during read query at consistency SERIAL (1 responses were required but only 0 replica responded)
      com.datastax.driver.core.exceptions.ReadTimeoutException: Cassandra timeout during read query at consistency SERIAL (1 responses were required but only 0 replica responded)
      	at com.datastax.driver.core.exceptions.ReadTimeoutException.copy(ReadTimeoutException.java:124)
      

      This results in one email not making it to its destination...

      org.awaitility.core.ConditionTimeoutException: 
      Assertion condition defined as a lambda expression in org.apache.james.utils.TestIMAPClient 
      expected: 100L
      but was : 99L within 10 seconds.
      

      There is little things we can do regarding LWT performance (since Cassandra 3.11.10 even SERIAL reads implies to commit an empty update!).

      However, as 'filtering' is (in my opinion at least) not critical - my phylosophy would be "don't loose emails - even if that means some features could not be run...".

      As such I propose to ignore errors arising upon JMAPFiltering - this would also make the above mentionned test stable.

      Attachments

        Issue Links

          Activity

            People

              aduprat Antoine Duprat
              btellier Benoit Tellier
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h