Clone Tools
  • last updated a few minutes ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
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.
MODE-2295 Fixed a number of issues with indexes

Indexes were not properly removing values, nor were they adding only nodes that satisfied their

definition's node type. Correcting the latter required handling when the node types in the repository

were changed, which might affect which node types are to be included in a given index. Therefore,

care was taken so that the index provider implementations' IndexChangeAdapters automatically handled

changes in the repository's node types.

A number of tests were added to replicate the problems reported in MODE-2295, and even more were

added to verify the proper behavior (including removing values) in the low-level local index

implementations. In particular, the UniqueKeyComparator logic was not quite handling all of the negative

infinity cases it should have (it was already correctly handling the positive infinity cases).

    • -10
    • +14
    ./provider/IndexChangeAdapter.java
    • -16
    • +114
    ./provider/IndexProvider.java
    • -0
    • +130
    ./provider/NodeTypeMatcher.java
  1. … 23 more files in changeset.
MODE-2285 More correctios to the index provider behavior in the Wildfly subsystem.

After these changes, any index provider or index definitions in the subsystem XML remain there and unmodified even after shutdown.

The problem was the 'relative-to' and 'path' index provider properties were not in the list of model attributes, and thus ignored

(in some scenarios only).

Also fixed a potential NPE in the IndexProvider base class.

  1. … 5 more files in changeset.
MODE-2292 Indexes and definitions are now properly persisted and work across repository restarts.

  1. … 17 more files in changeset.
Merge pull request #1230 from rhauch/mode-2151

MODE-2151 Added support for CHILDCOUNT dynamic operand and the 'mode:childCount' pseudocolumn

MODE-2151 Added support for CHILDCOUNT dynamic operand

Pretty basic support that should prove quite useful in certain situations. This may be relatively

expensive when the repository has nodes with lots of children since it requires loading the parent

node's child references in order to obtain the count. The CHILDCOUNT criteria would therefore work

much better/faster as filtering criteria in a query that already defines criteria that indexes can

use.

  1. … 17 more files in changeset.