02 Sep, 2014
2 commits
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10984 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10983 41b1ffd8-f28e-4786-ab96-9950f0a78031
01 Sep, 2014
1 commit
-
Moved persistent searches from workflow elements to the backends. Made persistent searches work for the ChangelogBackend. Ensured the base changelog entry is always returned before any changelog entry, even with persistent searches. For this, used SearchOperation attachments to pass information from the "initial search" phase to the "persistent search" phase. Added ChangelogBackend.notifyEntryAdded() and called it directly from the (JE|File)ChangelogDB and the ChangeNumberIndexer. FIXME: prevent concurrent execution of initial vs. persistent search phases to avoid sending duplicates. How do other backends deal with such issue? Apparently they don not deal with it. TODO: verify changelog read privilege for persistent searches Backend.java Added persistentSearches field + registerPersistentSearch() and getPersistentSearches(). ChangelogBackend.java: Replaced baseChangelogDN with CHANGELOG_BASE_DN and used it throughout + simplified ctor. Added notifyEntryAdded(), getPersistentSearches(), isPersistentSearch(), isCookieBased(), getNewestCookie(), getChangelogDB(), getInstance(), NumSubordinatesSearchOperation.setAttachment(), TODO JNR Overrode Backend.registerPersistentSearch(). Extracted method getExcludedDomains(). Renamed SearchParams.multiDomainServerState to cookie. Removed unused SearchParams.operationId. Added inner class EntrySender and moved methods to it: matchBaseAndScopeAndFilter(), sendBaseChangelogEntry(), buildBaseChangelogEntry(), In searchFromCookie(), searchFromChangeNumber() and sendEntryForUpdateMessage(), simplified the code by using EntrySender. Implemented finalizeBackend(). *Backend.java: Called super.finalizeBackend() ChangelogBackendTestCase.java: Enabled as many tests as possible. PersistentSearch.java Added changesOnly field + isChangesOnly() + modified ctor to set it. ReplicationServer.java: Replaced old code enabling External Changelog (via workflow element) with new code (with ChangelogBackend). FileChangelogDB.java, ChangeNumberIndexer.java, JEChangelogDB.java: Called new ChangelogBackend.notifyEntryAdded(). ChangeNumberIndexerTest.java Consequence of the change to ChangeNumberIndexer. LDAPReplicationDomain.java: Removed old code enabling External Changelog. Code cleanup. ExternalChangeLogTest.java: Disabled tests that do not pass anymore. Removed old code enabling External Changelog. Code cleanup. ECLWorkflowElement.java, LocalBackendWorkflowElement.java: Removed persistentSearches field + registerPersistentSearch() and getPersistentSearches(). LocalBackendAddOperation.java, LocalBackendDeleteOperation.java, LocalBackendModifyDNOperation.java: Consequence of moving persistent searches from workflow elements to the backends. LocalBackendModifyOperation.java: Consequence of moving persistent searches from workflow elements to the backends. In performAdditionalPasswordChangedProcessing(), simplified code because we are adding to a Set. Code cleanup. LocalBackendSearchOperation.java: Consequence of moving persistent searches from workflow elements to the backends. Transformed processSearch field into a local variable. Code cleanup. ECLServerHandler.java, ECLServerWriter.java, ECLSearchOperation.java: Adapted the code to use ChangelogBackend. git-svn-id: https://svn.forgerock.org/opendj/trunk@10982 41b1ffd8-f28e-4786-ab96-9950f0a78031
29 Aug, 2014
2 commits
-
to support cn=changelog * Implement checking of CHANGELOG_READ Privilege * Implement 2 more tests for changelog backend. Tests are still disabled (until changelog backend is activated in code). * ChangelogBackend.java: - add new method checkChangelogReadPrivilege() to check CHANGELOG_READ privilege * ChangelogBackendTestCase.java: - implement searchInCookieModeAfterDomainIsRemoved test - implement searchInCookieModeOnTwoSuffixesWithPrivateBackend test git-svn-id: https://svn.forgerock.org/opendj/trunk@10979 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
SearchOperation.java, SearchOperationBasis.java, SearchOperationWrapper.java: Changed entriesSent and referencesSent from int to AtomicInteger. Removed unused fields eclRequestControl, processingStartTime and processingStopTime. Simplified constructors by initializing the fields during where they are declared. Extracted method getACIHandler(). Removed incrementEntriesSent() and incrementReferencesSent(). Code cleanup. Backend.java: Removed unused code. Removed ctor, initialized fields where they are declared. WorkflowTopology.java: Added toString(). Code cleanup. git-svn-id: https://svn.forgerock.org/opendj/trunk@10978 41b1ffd8-f28e-4786-ab96-9950f0a78031
28 Aug, 2014
1 commit
-
to support cn=changelog Add more tests for changelog backend. Tests are still disabled (until changelog backend is activated in code). ChangelogBackedTestCase.java: - add new tests for cookie search : one and two suffixes cases - add TODOs for other test cases, mostly on psearches - renaming and cleanup git-svn-id: https://svn.forgerock.org/opendj/trunk@10977 41b1ffd8-f28e-4786-ab96-9950f0a78031
27 Aug, 2014
1 commit
-
Preparation work: ChangeNotificationListener interface only cover a subset of its DirectoryServerPlugin superclass capabilities, so it is redundant. So I removed ChangeNotificationListener to ease moving persistent searches to the backend. The two ChangeNotificationListener implementations are now subclasses of InternalDirectoryServerPlugin. Updated all code after removing ChangeNotificationListener. ChangeNotificationListener.java: REMOVED AuthenticatedUsers.java: Now extends InternalDirectoryServerPlugin instead of implementing ChangeNotificationListener. Extracted method getNewAuthNDN() + toDN(). CryptoManagerSync.java: Now extends InternalDirectoryServerPlugin instead of implementing ChangeNotificationListener. Extracted method getNewAuthNDN() + toDN(). DirectoryServer.java: Removed references to removed type ChangeNotificationListener. Be careful with when AuthenticatedUsers is initialized. DirectoryConfig.java, LocalBackend*Operation.java: Removed references to removed type ChangeNotificationListener. CollectionUtils.java: ADDED TestChangeNotificationListener.java: Now extends InternalDirectoryServerPlugin instead of implementing ChangeNotificationListener. AddOperationTestCase.java: Extracted methods newRawAttributes(), byteStrings(), addSuccess(), addDisconnect(), bind(), writeAddRequest() + used CollectionUtils. Consequence of the changes to TestChangeNotificationListener. DeleteOperationTestCase.java: Consequence of the changes to TestChangeNotificationListener. ModifyOperationTestCase.java: Extracted methods newModifications(), newRawModifications() + used CollectionUtils. Consequence of the changes to TestChangeNotificationListener. git-svn-id: https://svn.forgerock.org/opendj/trunk@10976 41b1ffd8-f28e-4786-ab96-9950f0a78031
26 Aug, 2014
2 commits
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10974 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
These methods are useless because setChangeNumber() is never set inside production code, so changeNumber is always equal to -1 for all the update operations. In addition it is very unlikely the ChangeNumberIndexer could have computed the changeNumber before a results are sent to a persistent search. AddOperation*.java, DeleteOperation*.java, ModifyDNOperation*.java, ModifyOperation*.java: Removed changeNumber fields + getters and setters. Code cleanup. PersistentSearch.java: In process*() public methods, removed the long changeNumber attributes. Removed baseDN, scope and filter fields, and retrieve them directly from the SearchOperation. Extracted methods isInScope(), isInScopeForModify(), isAnyInScopeForModify(), matchesFilter(), anyMatchesFilter(), sendEntry(), createControls(). to factorize duplicated code. LocalBackend*Operation.java: Consequence of the changes to PersistentSearch.process*() methods. Code cleanup. ECLServerWriter.java: In publish(), consequence of the change to PersistentSearch.processAdd(). In doIt(), simplified code by extracting takeECLUpdate() method. git-svn-id: https://svn.forgerock.org/opendj/trunk@10973 41b1ffd8-f28e-4786-ab96-9950f0a78031
22 Aug, 2014
1 commit
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10972 41b1ffd8-f28e-4786-ab96-9950f0a78031
21 Aug, 2014
4 commits
-
CR-4331: Ensure that the same schema instance is always returned across consecutive calls to Schema.asStrictSchema() and Schema.asNonStrictSchema() by delegating ownership of the schema views to the underlying implementations. The changes required that I remove the EmptyImpl schema implementation, which is actually a nice simplification: * DefaultSchema - renamed to more appropriately named DelayedSchema * DelayedSchema - renamed from DefaultSchema. Now also initializes the singleton "empty schema" * Schema - remove EmptyImpl; Impls now responsible for managing strict and non-strict views * SchemaBuilder - consequence of changes to Schema * SchemaTestCase - enabled tests. git-svn-id: https://svn.forgerock.org/opendj/trunk@10971 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
to support cn=changelog CR-4083 Implementation of core features of the changelog backend: * Initialization and finalization of the backend * Search of the changelog, in cookie mode (with a cookie control) and draft compat mode (by change number) Note that : * The support for persistent searches is not implemented yet. * The changelog backend is currently not branched into code, i.e the directory server still uses the ECL workflow for "cn=changelog", because it is not possible to enable both changelog backend and ECL workflow at the same time (waiting for psearches implementation before branching the new code) Code changes: * ChangelogBackend.java: - implementation of search(), hasSubordinates(), numSubordinates(), and getEntryCount() methods * ReplicationServer.java: - new dependency on ChangelogBackend and ECLEnabledDomainPredicate - new constructor with ECLEnabledDomainPredicate argument - new methods enableExternalChangeLog() and shutdownExternalChangelog() as future replacement of enabledECL() and shutdownECL() - new method getDomainDNs(Set<DN>) for retrieval of domain DNs but an excluded set of dns - new method validateServerState(MultiDomainServerState, Set<DN>) for checking coherency of given state with the replication server * ReplicationDomainDB.java: - new method getCursorFrom(MultiDomainServerState, PositionStrategy, Set<DN>) that exclude a given set of domain DNs from the cursor obtained * FileChangelogDB.java, JEChangelogDB.java: - implementation of new method getCursorFrom(MultiDomainServerState, PositionStrategy, Set<DN>) * ECLEnabledDomainPredicate.java, ECLMultiDomainDBCursor.java: - update visibility to public in order to use these classes in ChangelogBackend * ChangelogBackedTestCase.java: - test of ChangelogBackend class, built from ExternalChangeLogTest.java, with lots of renaming, refactoring, cleaning compared to original class - majority of tests are disabled until the changelog backend is branched into code (as these tests require a running server) * MonitorTest.java: - update creation of ReplicationServer class to use a custom ECLEnabledDomainPredicate * replication.properties: - add messages for changelog backend git-svn-id: https://svn.forgerock.org/opendj/trunk@10970 41b1ffd8-f28e-4786-ab96-9950f0a78031 -
* rename SchemaTestCase to AbstractSchemaTestCase * add SchemaTestCase with disabled unit tests for OPENDJ-1477. git-svn-id: https://svn.forgerock.org/opendj/trunk@10969 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10968 41b1ffd8-f28e-4786-ab96-9950f0a78031
20 Aug, 2014
1 commit
-
Ported to FileReplicaDBTest additional checks for PositionStrategy.ON_MATCHING_KEY. These are the same that were previously added to JEReplicaDBTest. git-svn-id: https://svn.forgerock.org/opendj/trunk@10966 41b1ffd8-f28e-4786-ab96-9950f0a78031
19 Aug, 2014
9 commits
-
Implemented PositionStrategy.ON_MATCHING_KEY for JEChangelogDB.getCursorFrom(DN baseDN, int serverId). JEChangelogDB.java, JEReplicaDB.java: Implemented PositionStrategy.ON_MATCHING_KEY. JEReplicaDBCursor.java: Added new field positionStrategy. Simplified code in next() + added gotoNext(). ReplicationDB.java: In openReadCursor(), added PositionStrategy parameter. Made createReplicationKey() handle null CSNs. Inner class ReplServerDBCursor now implement DBCursor + Added getRecord() + Made next(), now return boolean instead of UpdateMsg + Extracted method computeCurrentRecord(). Added new field "UpdateMsg currentRecord". Added PositionStrategy parameter to ReplServerDBCursor ctor + protected special code for PositionStrategy.AFTER_MATCHING_KEY. JEReplicaDBTest.java: Added test cases for new PositionStrategy ON_MATCHING_KEY. Split assertFoundInOrder() in two: one each for AFTER_MATCHING_KEY and ON_MATCHING_KEY. In testGenerateCursorFrom(), changed the code to cover all CSNs. Extracted method assertNextCSN() and shutdown(). Used SoftAssertions. git-svn-id: https://svn.forgerock.org/opendj/trunk@10964 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10961 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10959 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
…anges for new replicas and new domains Follow up of r10944 (and r10912 originally). Update ReplicaCursors with new replica offline information (For example, when replica came online or when there is more up to date replica offline information). Renamed ReplicaOfflineCursor(Test) to ReplicaCursor(Test) FileChangelogDB.java, JEChangelogDB.java: Added replicaCursors Map field. In getCursorFrom(), registered replicaCursors. In unregisterCursor(), handled ReplicaCursors. In notifyReplicaOnline() and notifyReplicaOffline(), called new method updateCursorsWithOfflineCSN(). ReplicaOfflineCursor.java: RENAMED to ReplicaCursor Removed returnReplicaOfflineMsg field. Changed replicaOfflineMsg field from ReplicaOfflineMsg to AtomicReference<ReplicaOfflineMsg>. In next(), rewrote the code to support resetting the replica offline CSN + added isReplicaOfflineMsgOutdated() and setOfflineCSN() Added replicaID and domainDB fields + called ReplicationDomainDB.unregisterCursor() in close() + added getReplicaID(). ReplicaOfflineCursorTest.java: RENAMED to ReplicaOfflineCursorTest Consequence of the change to ReplicaCursor. ChangeNumberIndexer.java: Removed outdated TODO git-svn-id: https://svn.forgerock.org/opendj/trunk@10958 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
…anges for new replicas and new domains Fixing a deadlock situation with ExternalChangeLogTest. When removing domains, the cursors were not properly closed by ChangeNumberIndexer.run() before calling Object.wait(). Relied on the fact that DBCursors are not thread safe so if client code calls MultiDomainDBCursor.removeDomain(), then the cursor is immediately removed. I did not see the problem before because unit tests on trunk execute by default with file based changelog db. ChangeNumberIndexer.java: In run(), simplified the code that removes the domain cursors. CompositeDBCursor.java: Removed removeNoLongerNeededCursors() and removedCursorsIterator() + extracted method removeCursor() from it. Added another removeCursor() which also removes from the exhaustedCursors. MultiDomainDBCursor.java Consequence of the change to CompositeDBCursor. Removed removeDomains field and removedCursorsIterator(). In removeDomain(), now call CompositeDBCursor.removeCursor(). DomainDBCursor.java: Consequence of the change to CompositeDBCursor. git-svn-id: https://svn.forgerock.org/opendj/trunk@10955 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
… create a new suffix on existing backend git-svn-id: https://svn.forgerock.org/opendj/trunk@10954 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10952 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10950 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10947 41b1ffd8-f28e-4786-ab96-9950f0a78031
12 Aug, 2014
1 commit
-
In ctor, removed useless code, because this case is already covered in next(). git-svn-id: https://svn.forgerock.org/opendj/trunk@10942 41b1ffd8-f28e-4786-ab96-9950f0a78031
11 Aug, 2014
1 commit
-
PBKDF2PasswordStorageScheme.java, PKCS5S2PasswordStorageScheme.java: Fixed a bug in PBKF2 + PKCS5S2 encodeOffline() methods which did not know how to deal with a byte[]. The right way was to wrap it in a ByteString like SaltedSHA1PasswordStorageScheme was already doing. BTW these encodeOffline() methods are never called from production code. Did more code factorization. Removed dead code in both with plainPlusSalt local variable which was not used for anything. Fixed a few bugs in PKCS5S2 where locks where not properly taken (or carefully avoided?). Made both PBKF2 + PKCS5S2 code look very similar now. PBKDF2PasswordStorageSchemeTestCase.java, PKCS5S2PasswordStorageSchemeTestCase.java, PasswordStorageSchemeTestCase.java, SaltedSHA1PasswordStorageSchemeTestCase.java, SaltedSHA256PasswordStorageSchemeTestCase.java, SaltedSHA384PasswordStorageSchemeTestCase.java, SaltedSHA512PasswordStorageSchemeTestCase.java: Removed dead code. CryptPasswordStorageSchemeTestCase.java: Made it reuse more code from PasswordStorageSchemeTestCase. git-svn-id: https://svn.forgerock.org/opendj/trunk@10941 41b1ffd8-f28e-4786-ab96-9950f0a78031
08 Aug, 2014
1 commit
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10940 41b1ffd8-f28e-4786-ab96-9950f0a78031
07 Aug, 2014
1 commit
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10939 41b1ffd8-f28e-4786-ab96-9950f0a78031
30 Jul, 2014
2 commits
-
git-svn-id: https://svn.forgerock.org/opendj/trunk@10936 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
… enabled the -F (support re-bind) option in the authrate tool. * PerformanceRunnerOptions.java: supportRebind setter fixed git-svn-id: https://svn.forgerock.org/opendj/trunk@10935 41b1ffd8-f28e-4786-ab96-9950f0a78031
29 Jul, 2014
1 commit
-
* Update to grizzly 2.3.16 git-svn-id: https://svn.forgerock.org/opendj/trunk@10933 41b1ffd8-f28e-4786-ab96-9950f0a78031
25 Jul, 2014
4 commits
-
Adding two new parameters to the xxxrate tools, maximum duration time and warm-up duration time. ** PerformanceRunner.java * Adding a timer thread for the max duration feature and add warm-up implementation. ** AddRate.java SearchRate.java * Adding resetStats method to reset local statistics (i.e extra columns) ** tools.properties * Adding warm-up message ** AuthRateITCase.java ** Adding a test with warm-up phase git-svn-id: https://svn.forgerock.org/opendj/trunk@10932 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
PBKDF2PasswordStorageSchemeTestCase.java: ADDED git-svn-id: https://svn.forgerock.org/opendj/trunk@10931 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
…anges for new replicas and new domains Created ECLMultiDomainDBCursor to only let ECL enabled domains reach the ChangeNumberIndexer. ChangeNumberIndexer.java: Wrapped the MultiDomainDBCursor into an ECLMultiDomainDBCursor. ECLMultiDomainDBCursor.java: ADDED JEChangelogDB.java, FileChangelogDB.java: Removed unnecessary calls to MultimasterREplication.isECLEnabledDomain(). git-svn-id: https://svn.forgerock.org/opendj/trunk@10930 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
Used AutoRefactor. Reduced variable scopes. PBKDF2PasswordStorageScheme.java: Extracted methods getDigestBytes(), encodeAndMatch(), Removed unnecessary use of StringBuilders. In passwordMatches() and authPasswordMatches(), used String.indexOf(). PKCS5S2PasswordStorageScheme.java: See general changes. PKCS5S2PasswordStorageSchemeTestCase.java: In getTestPasswords(), reused the super method and filtered entries. git-svn-id: https://svn.forgerock.org/opendj/trunk@10929 41b1ffd8-f28e-4786-ab96-9950f0a78031
23 Jul, 2014
4 commits
-
…anges for new replicas and new domains Code Review: Nicolas Capponi Fixed regression introduced in r10912. It made fractional replication tests fail. ChangeNumberIndexer.initialize() must ignore ReplicaOfflineMsgs, just like ChangeNumberIndexer.run(). git-svn-id: https://svn.forgerock.org/opendj/trunk@10928 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
Adding an add/del rate tool named addrate. -opendj-core ** EntryGenerator.java: * Changing the subtemplate parsing behavior, add the "generated branches" options ** TemplateFile.java * Adding the "generated branches" options ** addrate.template * New template used to generate entries -opendj-ldap-toolkit ** addrate (bat and bin) * Adding new tool scripts for unix and windows ** AddRate.java * addrate tool new class ** PerformanceRunner.java * Using parameter object in constructor, adding some messages localization ** PerformanceRunnerOptions.java * Helps to simplify the way to initialize a PerformanceRunner instance ** MakeLDIF.java * Little refactoring in order to allow the addrate tool to use some make-ldif parameters ** tools.properties * Adding addrate tool message and also some new generic messages ** Minor changes (constructor) in other tools and tests files git-svn-id: https://svn.forgerock.org/opendj/trunk@10927 41b1ffd8-f28e-4786-ab96-9950f0a78031 -
…anges for new replicas and new domains Fix done in r10925 ported to JE changelog implementation git-svn-id: https://svn.forgerock.org/opendj/trunk@10926 41b1ffd8-f28e-4786-ab96-9950f0a78031
-
…anges for new replicas and new domains Fixed a problem introduced in r10918. In getExistingOrNewDomainMap(DN) method, the MultimasterReplication.isECLEnabledDomain() method is called. However, this method blocks forever at replication startup because MultimasterReplication state is equals to STARTING and is only set to RUNNING in code that occurs after in the same thread. Code sequence is : 1. SynchronizationProviderConfigManager calls MultimasterReplication.initializeSynchronizationProvider() try to call MultimasterReplication.isECLEnabledDomain() but MultimasterReplication state is equals to STARTING so it waits indefinitely on a state change 2. SynchronizationProviderConfigManager calls DirectoryServer.registerSynchronizationProvider(provider) MultimasterReplication state is set to RUNNING Add a check on registeredMultiDomainCursors to ensure that isECLEnabledDomain() is not called when the replication server is starting (as no cursors can be created yet). git-svn-id: https://svn.forgerock.org/opendj/trunk@10925 41b1ffd8-f28e-4786-ab96-9950f0a78031
22 Jul, 2014
1 commit
-
Pair.java: Added COMPARATOR constant + getPairComparator() static method to return a Comparator of Pairs made of Comparable elements. PairTestCase.java: ADDED git-svn-id: https://svn.forgerock.org/opendj/trunk@10924 41b1ffd8-f28e-4786-ab96-9950f0a78031