Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-32934

Deprecated KeyValueStoreOverflowRecordFilter stream filter

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 2023.x, 2025.x
    • Component/s: Streams
    • Tags:
    • Sprint:
      nxplatform next
    • Story Points:
      2

      Description

      The kv store overflow filter to store big record (> 1MB) is not working properly when using mongodb because of deployment order (stream service being started before mongo) resulting in NPE on start

      024-10-11T12:52:27,001 ERROR [RegistrationInfoImpl] Component service:org.nuxeo.stream.defaultConfig notification of application started failed: Cannot invoke "com.mongodb.client.MongoClient.getDatabase(String)" because "mongoClient" is null
      java.lang.NullPointerException: Cannot invoke "com.mongodb.client.MongoClient.getDatabase(String)" because "mongoClient" is null
              at org.nuxeo.runtime.mongodb.MongoDBConnectionHelper.getDatabase(MongoDBConnectionHelper.java:256) ~[nuxeo-runtime-mongodb-2023.17.6.jar:?]
              at org.nuxeo.runtime.mongodb.MongoDBComponent.getDatabase(MongoDBComponent.java:111) ~[nuxeo-runtime-mongodb-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.mongodb.kv.MongoDBKeyValueStore.initialize(MongoDBKeyValueStore.java:107) ~[nuxeo-core-mongodb-2023.17.6.jar:?]
              at org.nuxeo.runtime.kv.KeyValueServiceImpl.getKeyValueStore(KeyValueServiceImpl.java:73) ~[nuxeo-runtime-kv-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.work.KeyValueStoreOverflowRecordFilter.getKeyValueStore(KeyValueStoreOverflowRecordFilter.java:45) ~[nuxeo-core-event-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.work.KeyValueStoreOverflowRecordFilter.init(KeyValueStoreOverflowRecordFilter.java:41) ~[nuxeo-core-event-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.work.StreamWorkManager.getRecordFilter(StreamWorkManager.java:268) ~[nuxeo-core-event-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.work.StreamWorkManager.initTopology(StreamWorkManager.java:386) ~[nuxeo-core-event-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.work.StreamWorkManager.init(StreamWorkManager.java:306) ~[nuxeo-core-event-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.work.WorkManagerImpl.start(WorkManagerImpl.java:380) ~[nuxeo-core-event-2023.17.6.jar:?]
              at org.nuxeo.ecm.core.work.StreamWorkManager.start(StreamWorkManager.java:249) ~[nuxeo-core-event-2023.17.6.jar:?]
      

      The KV store filter is also limited by the kv value size, which is 16MB when using MongoDB.

      Even if the kv store filter works on VCS backend, It is much better to rely on the transient store overflow filter and to deprecate this filter.

      This means using:

      nuxeo.stream.work.computation.filter.class=org.nuxeo.ecm.core.transientstore.computation.TransientStoreOverflowRecordFilter
      

      instead of

      nuxeo.stream.work.computation.filter.class=org.nuxeo.ecm.core.work.KeyValueStoreOverflowRecordFilter
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              bdelbosc Benoit Delbosc
              Participants:
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: