Clone Tools
  • last updated a few minutes ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
permit concurrent reindexing for indexes sharing a scan path

  1. … 1 more file in changeset.
MODE-2637 : NullPointerException in IndexChangeAdapter after copying nodes in the workspace

  1. … 2 more files in changeset.
MODE-2510 Fixes various issues around SNS reordering, including keeping [jcr:path] indexes up-to-date in such cases

    • -12
    • +27
    ./provider/IndexChangeAdapters.java
  1. … 9 more files in changeset.
MODE-2585, MODE-2586 Updates Lucene to 6.0.Final and changes some of the Lucene querying code The following are contained in this commit: a) changing the version to 6.0.Final and making it a private dependency of the lucene-index-provider in WF means we should now be independent of whatever version of Lucene WF/EAP comes with. ModeShape will no longer install Lucene as a first-class dependency in WF. b) with the above change, the ES index provider will use its own separate version (in this case 5.3.1.Final) and from now on can be evolved independently of the lucene-index-provider c) changing the design around the Filter#Results batching mechanism so that index providers can opt for truly lazy index results when SKIP is used. In the case of Lucene this means that the Lucene query is only run once after the first N batches have been skipped. d) changing the logic of the Lucene query making use of BitSets as opposed to loading each document during the collection phase

  1. … 37 more files in changeset.
MODE-2583 Fixes the handling of index definitions so that only index definitions present in the repository configuration are enabled and used

  1. … 8 more files in changeset.
MODE-2565 Fixes the behavior of the Lucene index provider to avoid reindexing at startup if data exists Also, it updates the general IF_MISSING reindexing logic, so that only the indexes which actually do require reindexing are reindexed, as opposed to the all the indexes of a particular provider.

  1. … 9 more files in changeset.
MODE-2565 Fixes the behavior of the Lucene index provider to avoid reindexing at startup if data exists Also, it updates the general IF_MISSING reindexing logic, so that only the indexes which actually do require reindexing are reindexed, as opposed to the all the indexes of a particular provider.

  1. … 7 more files in changeset.
MODE-2539 Fixes the potential corruption of the system area after a restore operation The problem occurs when restoring a 3.x repository (pre indexing) to a 4.x repository (post indexing) and occurs due to the fact that the /jcr:system/mode:indexes area has to be initialized only *after* the repository is restarted post-restore. This is because a restore operation can change the rootNode key and source key of the running repository.

  1. … 10 more files in changeset.
MODE-2539 Fixes the potential corruption of the system area after a restore operation The problem occurs when restoring a 3.x repository (pre indexing) to a 4.x repository (post indexing) and occurs due to the fact that the /jcr:system/mode:indexes area has to be initialized only *after* the repository is restarted post-restore. This is because a restore operation can change the rootNode key and source key of the running repository.

  1. … 10 more files in changeset.
MODE-2516 Updates JDK to 1.8 and jboss-parent to the latest version (19) This is the first significant commit of the 5.x series and contains a number of significant changes: - the naming of Maven version properties changed to adopt the standard pattern: 'version.<groupId>.<artifactId>' - build system and dependency updates so that the latest Maven plugin versions function correctly - updating source code to avoid compiler and javadoc warnings

  1. … 154 more files in changeset.
MODE-2517 Updates the re-indexing mechanism making sure changes are committed This commit also rearranges the location of the clustering configuration files.

  1. … 38 more files in changeset.
MODE-2159 Validates and fixes various Lucene queries This commit adds extensive unit test support for Lucene queries, reusing most of the tests from the LocalIndexProvider and JcrQueryManager. It fixes the node types change adapter making sure that with each primary type/mixin types change, all the information is sent to the index. It also fixes the "sync reindexing" semantic, making sure that the JcrQueryManger is notified in-thread of any changes.

    • -28
    • +59
    ./provider/IndexChangeAdapters.java
    • -3
    • +20
    ./provider/ManagedIndexBuilder.java
  1. … 48 more files in changeset.
MODE-2159 Updates the index adapters SPI adding a property name for each add/remove operation Index providers are free to ignore the property if their logic does not require it (for example the Local Index provider) but other (e.g. Lucene) are interested in the property name so they can add it to the indexing information. Also, it changes the default index planning logic adding the ability for Index Providers to process multiple constraints, not just one like the LocalIndexProvider did.

    • -54
    • +82
    ./provider/IndexChangeAdapters.java
  1. … 10 more files in changeset.
MODE-2159 Changes the default indexing design adding default implementations for a lot of operations These changes come the fact that both the Local index provider and the Lucene index provider have very similar logic in a lot of places involving CRUD operations on indexes starting from index definitions. Therefore, this commit "abstracts" a lot of the logic of the Local index provider and makes it default behavior. In addition, this commit also adds generic support for multi-column indexes in the form of composite IndexChangeAdapters.

    • -18
    • +28
    ./provider/DefaultManagedIndex.java
    • -11
    • +39
    ./provider/IndexChangeAdapter.java
    • -0
    • +878
    ./provider/IndexChangeAdapters.java
    • -94
    • +402
    ./provider/IndexProvider.java
    • -0
    • +37
    ./provider/Lifecycle.java
    • -0
    • +263
    ./provider/ManagedIndexBuilder.java
    • -0
    • +78
    ./provider/ProvidedIndex.java
    • -0
    • +37
    ./provider/Reindexable.java
  1. … 13 more files in changeset.
MODE-1903 Adds incremental reindexing via the repository configuration Each index provider can "tell" the repository if it supports incremental reindexing. If it does and the journal is enabled, the repository can be configured at startup to reindex only the changed nodes since the last successful index update time. This commit also makes several changes & fixes to the ClusteredJournal logic.

  1. … 24 more files in changeset.
MODE-1903 Adds the ability to reindex starting from a given timestamp This type of reindexing works only if a journal is present and fails otherwise. This commit also adds the ability for index providers to read/write a timestamp information representing the "latest time" at which indexes managed by that provider have been successfully updated.

  1. … 17 more files in changeset.
MODE-2166 Adds CAST dynamic operand for JCR-SQL2.

  1. … 12 more files in changeset.
MODE-2498 Fixes index planning to ignore indexes which don't match the queried-for node type.

  1. … 3 more files in changeset.
MODE-2473 Fixed behavior of nodeIterator#skip when entire batches coming from an index provider are skipped.

  1. … 6 more files in changeset.
MODE-2401 Added support for handling mixins which have the "noquery" type attribute and updated the code to reflect the differences between the "noquery" types and the previously existing ModeShape noquery document attribute which has a different semantic.

  1. … 37 more files in changeset.
MODE-2432 Updated the index manager (both from the API & the SPI) to be able to expose information about that status of each configured index.

  1. … 6 more files in changeset.
MODE-2401 Updated the query & indexing SPI to handle the "noquery" type attribute.

  1. … 8 more files in changeset.
MODE-2393 Fixed the removing of existing data when reindexing certain types of nodes.

  1. … 4 more files in changeset.
MODE-2355 Fixed several indexing related issues: - when constraint contains the OR operator and index should apply only if it applies to all the parts of the constraint - the (cost * cardinality) formula should always be used when deciding which indexes to use - when determining the node-type criteria for the index selection, always use only the less-specific node type (i.e. super-type)

  1. … 6 more files in changeset.
MODE-2346 Changed the logic around the selection of the indexes in the query plan. User-defined indexes should always have priority over the DescendantsByPath implicit index.

  1. … 5 more files in changeset.
MODE-2341 Fixed the moment at repository startup when the query manager should be marked as initialized and fixed the LocalIndexProvider scanning behavior when new index definitions are created for a workspace.

  1. … 6 more files in changeset.
MODE-2314 Corrected indexing operations

  1. … 6 more files in changeset.
MODE-2313 Corrected concurrent modification exceptions, and changed query engine to not use indexes that are being rebuild via re-indexing.

  1. … 9 more files in changeset.
MODE-2307 Indexes are now used when join conditions can be applied

Previously, index applicability only took into account constraints. So when an access query did not have any constraints (other than on jcr:primaryType or jcr:mixinTypes) then indexes were not considered, even though an index might apply to one of the selectors & properties on one side of the join condition.

With this change, it is now possible for the repository to try to apply indexes based upon constraints and/or join conditions. For example, an index on 'jcr:uuid' might apply to a SameNodeJoinCondition. Or, a property index might apply when an EquiJoinCondition involves that property.

Note that in these cases, join conditions have no literal values on which the index can filter its results, but it still can be used by returning all nodes in the index. This still might be significantly better than scanning the index.

It's even possible now that indexes might be applied based upon join constraints (additional constraints that apply to the join, and that cannot be pushed down to either side of the join).

  1. … 6 more files in changeset.
MODE-2301 Added support for indexes to be updated synchronously or asynchronously

Prior to this commit, all updates to the indexes in the 4.0 codebase were asynchronous. That means that

the Session.save() method added the ChangeSet describing the session's changes onto the event bus and

then returned. All index updates were done in separate listener threads on the event bus, so it's entirely

possible (and perhaps likely) that any updates to the indexes happen after the client's call to Session.save()

returned. The net effect is that the client might make changes and immediately issue a query that would not

find the recently-saved changes. Additionally, there was no way for the client to know when the indexes would

be updated.

With this commit, it is possible to define whether each index is updated synchronously before the

the Session.save() returns, or asynchronously so that index updates are made in a separate thread.

This commit changes the default behavior of the index updates to be *synchronous*.

In a cluster, any changes made on one process are sent via the change bus to the other processes,

and the indexes in those other processes are always updated asynchronously. In other words, if an

index provider keeps copies of the indexes on every process, then only the local indexes are updated

synchronously before save returns -- and that Session.save() does not wait until the indexes in the other

processes are updated.

In order to properly implement this, a small change was made to the ChangeBus to expand the semantic concept

of an "in-thread" listener. Prior to this, "in-thread" meant that the listener only received locally-originating

change sets. Now, it's still possible to do this (and the journal uses this older behavior), but it's also

possible to register a listener such that locally-originating change sets are handled in-thread while remotely

originating change sets are handled asynchronously.

  1. … 20 more files in changeset.