Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-92025

Implement configuration fuzzing for JS_GC_ZEAL

    • Type: Icon: Improvement Improvement
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Query Integration

      As part of our plan for monitoring and investigating the sporadic heap corruptions in SpiderMonkey (https://jira.mongodb.org/browse/SERVER-89758 ) , we would like to perform more rigorous garbage collection stress testing. 

      Currently, we are only able to provide a JS_GC_ZEAL setting statically in the .yml definition of the variant (see here ). Instead, we would like to be able to try different settings of JS_GC_ZEAL every time it is run in the CI pipeline. To do this, we will need to add new configuration fuzzer tasks that will provide a different value for MOZJS_JS_GC_ZEAL. In this PR , we introduced the variable "mozjs_js_gc_zeal" to provide the JS_GC_ZEAL value directly to spawned mongod/mongos processes

      We should be able to modify mongo_fuzzer_configs.fuzz_mongod_set_parameters (see here  ) so that it returns an additional configuration value for MOZJS_JS_GC_ZEAL. We should return a value for JS_GC_ZEAL from a list of pre-selected values that don't cause timeouts for the variant.  

      For each of the existing tasks in the spider-monkey-dbg build variant, we should try to find an existing fuzzer task such as this one for jsCore and add it to the spider-monkey-dbg variant. If no such task exists, we should create our own using the aforementioned as an example. We will keep both the fuzzer tasks and non-fuzzer tasks running as part of build variant.

      Currently, the tasks we have scheduled for the spider-monkey-dbg variant are:

            - name: aggregation
            - name: aggregation_mongos_passthrough
            - name: auth_gen
            - name: concurrency_simultaneous_gen
            - name: jsCore
            - name: noPassthrough_gen
            - name: sharding_gen

      We should add the config fuzzer version of these tasks as part of this ticket.

      Some recommended settings for JS_GC_ZEAL:

      - JS_GC_ZEAL='10'
      - JS_GC_ZEAL='1;2;15,100'
      - JS_GC_ZEAL='7;15,75'
      - JS_GC_ZEAL='1;15,100'
      - JS_GC_ZEAL='6' // needs to be tested for timeouts
      -JS_GC_ZEAL='13' // needs to be tested for timeouts
      -JS_GC_ZEAL='14' // needs to be tested for timeouts

      The priority for this ticket is not urgent, but it aligns with Query's efforts this quarter for testing improvements.

            Assignee:
            backlog-query-integration [DO NOT USE] Backlog - Query Integration
            Reporter:
            santiago.roche@mongodb.com Santiago Roche
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: