Skip to content

PLIP: assimilate collective.indexing #1343

Closed
@MrTango

Description

Proposer : Gil Forcada

Seconder : Maik Derstappen

Abstract

Move all functionality on existing packages (Products.ZCatalog, Products.CMFCore and Products.CMFPlone) and apply all monkey patches directly to the packages they belong to, like Products.CMFCore or Products.Archetypes.

Motivation

Using collective.indexing has two main benefits:

  • performance: indexing operations are queued, optimized and done at the transaction boundary. Only one indexing operation is done per object on any transaction. This means that plone is much faster, specially if lots of event handlers modify objects and keep reindexing the same object over and over again.
  • pluggable: it creates a utility that enables third-party search indexers to be notified on any indexing operation (that's how collective.solr is plugged-in)

We think they are important and transparent enough that any Plone installation will benefit from it, specially for the performance part, although the pluggable makes even more easier to scale Plone as the site grows.

Assumptions

Some tests in Plone core will need to be updated to work around the indexing optimizations (as tests expect that objects are indexed/reindexed/unindexed right away).

No refactorings will be done on either CMFPlone CatalogTool nor CMFCore CatalogTool nor ZCatalog ZCatalog base class (which both CMFPlone and CMFCore override), this cleanup/refactoring is out of scope.

We deemed more importantly to get the functionality first in rather than merging the catalog tools together. At the same time we encourage any individual/company to step up and propose a PLIP that goes in that direction.

Proposal & Implementation

  • plip config file on buildout.coredev to track the implementation and branches
  • jenkins job to test the plip config
  • move all functionality provided by collective.indexing to currently existing packages (Products.CMFCore and Products.CMFPlone)
  • the code of collective.indexing is now GPL and should be re-licensed by the PF-Board to ZPL before getting into CMFCore which are ZPL (@plone/plone-foundation-board)
  • add tests where the functionality moved
  • fix tests due to the way indexing is done with collective.indexing
  • documentation (describe the new feature, how to update tests, how to migrate from collective.indexing)
  • collective.solr branch
  • deprecation warning on collective.indexing

Deliverables

  • CMFCore branch
  • CMFPlone branch
  • documentation on how to fix your tests and how the new functionality benefits Plone
  • collective.solr branch (as is collective.indexing main consumer)
  • new release of collective.indexing with deprecation warnings

Risks

Some tests of 3th party packages can fail, but are easy to fix, with the processing_queue function which will be provided.

Participants

Gil Forcada
Maik Derstappen

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    • Status

      Merged

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions