opends/src/server/org/opends/server/changelog/SerializingProtocolSession.java
File was deleted opends/src/server/org/opends/server/synchronization/ServerState.java
File was deleted opends/src/server/org/opends/server/synchronization/changelog/AckMessageList.java
File was renamed from opends/src/server/org/opends/server/changelog/AckMessageList.java @@ -24,11 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import java.util.LinkedList; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.common.ChangeNumber; /** * This class is used to store the list of acks received for opends/src/server/org/opends/server/synchronization/changelog/AckMessageListComparator.java
File was renamed from opends/src/server/org/opends/server/changelog/AckMessageListComparator.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import java.util.Comparator; opends/src/server/org/opends/server/synchronization/changelog/Changelog.java
File was renamed from opends/src/server/org/opends/server/changelog/Changelog.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import java.util.ArrayList; import java.util.HashMap; @@ -42,6 +42,7 @@ import org.opends.server.config.StringConfigAttribute; import org.opends.server.core.DirectoryServer; import org.opends.server.messages.MessageHandler; import org.opends.server.synchronization.protocol.SocketSession; import org.opends.server.types.ConfigChangeResult; import org.opends.server.types.DN; import org.opends.server.types.ErrorLogCategory; @@ -49,7 +50,7 @@ import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import java.net.InetAddress; import java.net.InetSocketAddress; opends/src/server/org/opends/server/synchronization/changelog/ChangelogAckMessageList.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogAckMessageList.java @@ -24,9 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.common.ChangeNumber; /** * This class is used to store acks for update messages coming from opends/src/server/org/opends/server/synchronization/changelog/ChangelogCache.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogCache.java @@ -24,10 +24,10 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.loggers.Error.logError; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; @@ -36,10 +36,10 @@ import org.opends.server.types.DN; import org.opends.server.types.ErrorLogCategory; import org.opends.server.types.ErrorLogSeverity; import org.opends.server.synchronization.AckMessage; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.ServerState; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ServerState; import org.opends.server.synchronization.protocol.AckMessage; import org.opends.server.synchronization.protocol.UpdateMessage; import java.io.IOException; import java.util.HashSet; @@ -548,7 +548,7 @@ */ public ServerState getDbServerState() { ServerState serverState = new ServerState(baseDn); ServerState serverState = new ServerState(); for (DbHandler db : sourceDbHandlers.values()) { serverState.update(db.getLastChange()); opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogDB.java @@ -24,11 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import java.util.List; @@ -37,8 +37,8 @@ import org.opends.server.types.DN; import org.opends.server.types.ErrorLogCategory; import org.opends.server.types.ErrorLogSeverity; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.UpdateMessage; import com.sleepycat.je.Cursor; import com.sleepycat.je.DatabaseEntry; opends/src/server/org/opends/server/synchronization/changelog/ChangelogDBException.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogDBException.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; /** * This class define an Exception that must be used when some error opends/src/server/org/opends/server/synchronization/changelog/ChangelogData.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogData.java @@ -24,11 +24,12 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import com.sleepycat.je.DatabaseEntry; import org.opends.server.synchronization.SynchronizationMessage; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.synchronization.protocol.UpdateMessage; /** * SuperClass of DatabaseEntry used for data stored in the Changelog Databases. opends/src/server/org/opends/server/synchronization/changelog/ChangelogDbEnv.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogDbEnv.java @@ -24,11 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import java.io.File; opends/src/server/org/opends/server/synchronization/changelog/ChangelogIterator.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogIterator.java @@ -24,13 +24,13 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import com.sleepycat.je.DatabaseException; import org.opends.server.changelog.ChangelogDB.ChangelogCursor; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.changelog.ChangelogDB.ChangelogCursor; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.UpdateMessage; /** * This class allows to iterate through the changes received from a given opends/src/server/org/opends/server/synchronization/changelog/ChangelogIteratorComparator.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogIteratorComparator.java @@ -24,11 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import java.util.Comparator; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.common.ChangeNumber; /** * This Class define a Comparator that allows to know which ChangelogIterator opends/src/server/org/opends/server/synchronization/changelog/ChangelogKey.java
File was renamed from opends/src/server/org/opends/server/changelog/ChangelogKey.java @@ -24,12 +24,13 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import java.io.UnsupportedEncodingException; import com.sleepycat.je.DatabaseEntry; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.common.ChangeNumber; /** * Superclass of DatabaseEntry. opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java
File was renamed from opends/src/server/org/opends/server/changelog/DbHandler.java @@ -24,11 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import java.util.ArrayList; @@ -38,7 +38,6 @@ import org.opends.server.api.DirectoryThread; import org.opends.server.api.MonitorProvider; import org.opends.server.changelog.ChangelogDB.ChangelogCursor; import org.opends.server.config.ConfigEntry; import org.opends.server.config.ConfigException; import org.opends.server.types.Attribute; @@ -48,8 +47,9 @@ import org.opends.server.types.InitializationException; import org.opends.server.util.TimeThread; import org.opends.server.core.DirectoryServer; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.changelog.ChangelogDB.ChangelogCursor; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.UpdateMessage; import com.sleepycat.je.DatabaseException; opends/src/server/org/opends/server/synchronization/changelog/MsgQueue.java
File was renamed from opends/src/server/org/opends/server/changelog/MsgQueue.java @@ -24,13 +24,13 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import java.util.SortedMap; import java.util.TreeMap; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.UpdateMessage; /** * This class is used to build ordered lists of UpdateMessage. opends/src/server/org/opends/server/synchronization/changelog/ServerHandler.java
File was renamed from opends/src/server/org/opends/server/changelog/ServerHandler.java @@ -24,11 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import java.io.IOException; @@ -52,14 +52,15 @@ import org.opends.server.types.ErrorLogSeverity; import org.opends.server.types.InitializationException; import org.opends.server.core.DirectoryServer; import org.opends.server.synchronization.AckMessage; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.ChangelogStartMessage; import org.opends.server.synchronization.ServerStartMessage; import org.opends.server.synchronization.ServerState; import org.opends.server.synchronization.SynchronizationMessage; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.WindowMessage; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ServerState; import org.opends.server.synchronization.protocol.AckMessage; import org.opends.server.synchronization.protocol.ChangelogStartMessage; import org.opends.server.synchronization.protocol.ProtocolSession; import org.opends.server.synchronization.protocol.ServerStartMessage; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.synchronization.protocol.WindowMessage; import org.opends.server.util.TimeThread; /** opends/src/server/org/opends/server/synchronization/changelog/ServerReader.java
File was renamed from opends/src/server/org/opends/server/changelog/ServerReader.java @@ -24,19 +24,20 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import java.io.IOException; import org.opends.server.api.DirectoryThread; import org.opends.server.synchronization.AckMessage; import org.opends.server.synchronization.SynchronizationMessage; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.WindowMessage; import org.opends.server.synchronization.protocol.AckMessage; import org.opends.server.synchronization.protocol.ProtocolSession; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.synchronization.protocol.WindowMessage; import org.opends.server.types.ErrorLogCategory; import org.opends.server.types.ErrorLogSeverity; opends/src/server/org/opends/server/synchronization/changelog/ServerWriter.java
File was renamed from opends/src/server/org/opends/server/changelog/ServerWriter.java @@ -24,18 +24,19 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import java.io.IOException; import java.net.SocketException; import java.util.NoSuchElementException; import org.opends.server.api.DirectoryThread; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.protocol.ProtocolSession; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.types.ErrorLogCategory; import org.opends.server.types.ErrorLogSeverity; opends/src/server/org/opends/server/synchronization/changelog/UpdateComparator.java
File was renamed from opends/src/server/org/opends/server/changelog/UpdateComparator.java @@ -24,11 +24,12 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; import java.util.Comparator; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.UpdateMessage; /** * Class to use for establishing an order within UpdateMessages. opends/src/server/org/opends/server/synchronization/changelog/package-info.java
File was renamed from opends/src/server/org/opends/server/changelog/package-info.java @@ -76,4 +76,4 @@ * </ul> */ package org.opends.server.changelog; package org.opends.server.synchronization.changelog; opends/src/server/org/opends/server/synchronization/common/ChangeNumber.java
File was renamed from opends/src/server/org/opends/server/synchronization/ChangeNumber.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.common; /** * Class used to represent Change Numbers. opends/src/server/org/opends/server/synchronization/common/ChangeNumberGenerator.java
File was renamed from opends/src/server/org/opends/server/synchronization/ChangeNumberGenerator.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.common; import org.opends.server.util.TimeThread; opends/src/server/org/opends/server/synchronization/common/LogMessages.java
File was renamed from opends/src/server/org/opends/server/synchronization/SynchMessages.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.common; import org.opends.server.messages.MessageHandler; import static org.opends.server.messages.MessageHandler.*; @@ -33,7 +33,7 @@ * This class defines the set of message IDs and default format strings for * messages associated with the Synchronization. */ public class SynchMessages { public class LogMessages { /** * Name used to store attachment of historical information in the @@ -268,7 +268,7 @@ * Register the messages from this class in the core server. * */ static void registerMessages() public static void registerMessages() { MessageHandler.registerMessage(MSGID_SYNC_INVALID_DN, "The Synchronization configuration DN is invalid"); opends/src/server/org/opends/server/synchronization/common/ServerState.java
New file @@ -0,0 +1,284 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization.common; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.zip.DataFormatException; import org.opends.server.protocols.asn1.ASN1OctetString; /** * ServerState class. * This object is used to store the last update seem on this server * from each server. * It is exchanged with the changelog servers at connection establishment time. */ public class ServerState { private HashMap<Short, ChangeNumber> list; /** * Creates a new empty ServerState. */ public ServerState() { list = new HashMap<Short, ChangeNumber>(); } /** * Creates a new ServerState object from its encoded form. * * @param in The byte array containing the encoded ServerState form. * @param pos The position in the byte array where the encoded ServerState * starts. * @param endpos The position in the byte array where the encoded ServerState * ends. * @throws DataFormatException If the encoded form was not correct. */ public ServerState(byte[] in, int pos, int endpos) throws DataFormatException { try { list = new HashMap<Short, ChangeNumber>(); while (endpos > pos) { /* * read the ServerId */ int length = getNextLength(in, pos); String serverIdString = new String(in, pos, length, "UTF-8"); short serverId = Short.valueOf(serverIdString); pos += length +1; /* * read the ChangeNumber */ length = getNextLength(in, pos); String cnString = new String(in, pos, length, "UTF-8"); ChangeNumber cn = new ChangeNumber(cnString); pos += length +1; /* * Add the serverid */ list.put(serverId, cn); } } catch (UnsupportedEncodingException e) { throw new DataFormatException("UTF-8 is not supported by this jvm."); } } /** * Get the length of the next String encoded in the in byte array. * * @param in the byte array where to calculate the string. * @param pos the position whre to start from in the byte array. * @return the length of the next string. * @throws DataFormatException If the byte array does not end with null. */ private int getNextLength(byte[] in, int pos) throws DataFormatException { int offset = pos; int length = 0; while (in[offset++] != 0) { if (offset >= in.length) throw new DataFormatException("byte[] is not a valid modify msg"); length++; } return length; } /** * Update the Server State with a ChangeNumber. * All operations with smaller CSN and the same serverID must be committed * before calling this method. * @param changeNumber the committed ChangeNumber. * @return a boolean indicating if the update was meaningfull. */ public boolean update(ChangeNumber changeNumber) { if (changeNumber == null) return false; synchronized(this) { Short id = changeNumber.getServerId(); ChangeNumber oldCN = list.get(id); if (oldCN == null || changeNumber.newer(oldCN)) { list.put(id,changeNumber); return true; } else { return false; } } } /** * return a Set of String usable as a textual representation of * a Server state. * format : time seqnum id * * example : * 1 00000109e4666da600220001 * 2 00000109e44567a600220002 * * @return the representation of the Server state */ public Set<String> toStringSet() { HashSet<String> set = new HashSet<String>(); synchronized (this) { for (Short key : list.keySet()) { ChangeNumber change = list.get(key); Date date = new Date(change.getTime()); set.add(change.toString() + " " + date.toString()); } } return set; } /** * Return an ArrayList of ANS1OctetString encoding the ChangeNumbers * contained in the ServerState. * @return an ArrayList of ANS1OctetString encoding the ChangeNumbers * contained in the ServerState. */ public ArrayList<ASN1OctetString> toASN1ArrayList() { ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>(); synchronized (this) { for (Short id : list.keySet()) { ASN1OctetString value = new ASN1OctetString(list.get(id).toString()); values.add(value); } } return values; } /** * return the text representation of ServerState. * @return the text representation of ServerState */ @Override public String toString() { synchronized (this) { String str = null; for (Short key : list.keySet()) { ChangeNumber change = list.get(key); str += " " + change.toString(); } return str; } } /** * Get the largest ChangeNumber seen for a given LDAP server ID. * * @param serverId : the server ID * @return the largest ChangeNumber seen */ public ChangeNumber getMaxChangeNumber(short serverId) { return list.get(serverId); } /** * Add the tail into resultByteArray at position pos. */ private int addByteArray(byte[] tail, byte[] resultByteArray, int pos) { for (int i=0; i<tail.length; i++,pos++) { resultByteArray[pos] = tail[i]; } resultByteArray[pos++] = 0; return pos; } /** * Encode this ServerState object and return its byte array representation. * * @return a byte array with an encoded representation of this object. * @throws UnsupportedEncodingException if UTF8 is not supported by the JVM. */ public byte[] getBytes() throws UnsupportedEncodingException { synchronized (this) { int length = 0; List<String> idList = new ArrayList<String>(list.size()); for (short id : list.keySet()) { String temp = String.valueOf(id); idList.add(temp); length += temp.length() + 1; } List<String> cnList = new ArrayList<String>(list.size()); for (ChangeNumber cn : list.values()) { String temp = cn.toString(); cnList.add(temp); length += temp.length() + 1; } byte[] result = new byte[length]; int pos = 0; for (int i=0; i< list.size(); i++) { String str = idList.get(i); pos = addByteArray(str.getBytes("UTF-8"), result, pos); str = cnList.get(i); pos = addByteArray(str.getBytes("UTF-8"), result, pos); } return result; } } } opends/src/server/org/opends/server/synchronization/common/package-info.javacopy from opends/src/server/org/opends/server/synchronization/FakeOperationComparator.java copy to opends/src/server/org/opends/server/synchronization/common/package-info.java
File was copied from opends/src/server/org/opends/server/synchronization/FakeOperationComparator.java @@ -24,23 +24,23 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; import java.util.Comparator; /** * This Class implements a Comparator that can be used to build TreeSet * containing FakeOperations sorted by the ChangeNumber order. * This package contains utilities that can are used by all the packages * below org.opends.server.synchronization * <br> * The main classes of this core are : * <ul> * <li> * <A HREF="ChangeNumber.html"><B>ChangeNumber</B></A> * Define Change Numbers used to identify and to order the LDAP changes * </li> * <li> * <A HREF="ServerState.html"><B>ServerStaten</B></A> * This class is used to define and store the updatedness of any component * of the synchronization architecture (i.e : to know which changes * it has already processed). * </li> * </ul> */ public class FakeOperationComparator implements Comparator<FakeOperation> { /** * {@inheritDoc} */ public int compare(FakeOperation op1, FakeOperation op2) { if (op1 == null) return -1; return op1.getChangeNumber().compareTo(op2.getChangeNumber()); } } package org.opends.server.synchronization.common; opends/src/server/org/opends/server/synchronization/package-info.java
@@ -26,44 +26,7 @@ */ /** * This package contains the part of the Multimaster * synchronization code that works on the Directory Server side. * <br> * The main classes of this core are : * <ul> * <li> * <A HREF="MultimasterSynchronization.html"><B>MultimasterSynchronization * </B></A>contains the synchronization provider * code and more generally all the code that makes the glue between the core * server and the synchronization code. * </li> * <li> * <A HREF="SynchronizationDomain.html"><B>SynchronizationDomain</B></A> * contains the bulk of the Directory Server side of the * synchronization code. Most notably it contains the root method for * publishing a change, processing a change received from the changelog * service, handle conflict resolution, handle protocol messages from the * changelog server. * </li> * <li> * <A HREF="ChangeNumber.html"><B>ChangeNumber</B></A> * and <A HREF="ChangeNumberGenerator.html"><B>ChangeNumberGenerator</B></A> * contain the code related to Change Numbers code and their generation. * </li> * <li> * <A HREF="ServerState.html"><B>ServerState</B></A> * contain the code necessary for maintaining the updatedness * of a server. * Historical.java and the classes that it uses contain the code for * generating and loading the historical information (only modify aspects are * implemented) * </li> * <li> * <A HREF="SynchronizationMessage.html"><B>SynchronizationMessage</B></A> * and the classes that inherit from it contain the * description of the protocol messages that are exchanged between the * directory servers and the changelog servers and their encoding/decoding. * </li> * </ul> * This package contains the code for the synchronization feature * which provides a Multi-Master replication system. */ package org.opends.server.synchronization; opends/src/server/org/opends/server/synchronization/plugin/AttrInfo.java
File was renamed from opends/src/server/org/opends/server/synchronization/AttrInfo.java @@ -24,10 +24,12 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.ArrayList; import java.util.LinkedHashSet; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.types.AttributeValue; opends/src/server/org/opends/server/synchronization/plugin/AttrInfoWithOptions.java
File was renamed from opends/src/server/org/opends/server/synchronization/AttrInfoWithOptions.java @@ -24,11 +24,12 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.HashMap; import java.util.Set; /** * Used to store historical information. * Contain a map of AttrInfo for each options of a given attribute type. opends/src/server/org/opends/server/synchronization/plugin/ChangelogBroker.java
File was renamed from opends/src/server/org/opends/server/synchronization/ChangelogBroker.java @@ -24,11 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import java.util.LinkedHashSet; @@ -43,13 +43,20 @@ import java.net.SocketException; import java.net.SocketTimeoutException; import org.opends.server.changelog.ProtocolSession; import org.opends.server.changelog.SocketSession; import org.opends.server.protocols.asn1.ASN1OctetString; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.protocols.internal.InternalSearchListener; import org.opends.server.protocols.internal.InternalSearchOperation; import org.opends.server.protocols.ldap.LDAPFilter; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ServerState; import org.opends.server.synchronization.protocol.ChangelogStartMessage; import org.opends.server.synchronization.protocol.ProtocolSession; import org.opends.server.synchronization.protocol.ServerStartMessage; import org.opends.server.synchronization.protocol.SocketSession; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.synchronization.protocol.WindowMessage; import org.opends.server.types.DN; import org.opends.server.types.DereferencePolicy; import org.opends.server.types.ErrorLogCategory; opends/src/server/org/opends/server/synchronization/plugin/FakeOperation.java
File was renamed from opends/src/server/org/opends/server/synchronization/FakeOperation.java @@ -24,8 +24,10 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.types.Modification; opends/src/server/org/opends/server/synchronization/plugin/FakeOperationComparator.java
File was renamed from opends/src/server/org/opends/server/synchronization/FakeOperationComparator.java @@ -24,10 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.Comparator; /** * This Class implements a Comparator that can be used to build TreeSet * containing FakeOperations sorted by the ChangeNumber order. opends/src/server/org/opends/server/synchronization/plugin/HistKey.java
File was renamed from opends/src/server/org/opends/server/synchronization/HistKey.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; /** * Enumeration used for storing type of historical information. opends/src/server/org/opends/server/synchronization/plugin/HistVal.java
File was renamed from opends/src/server/org/opends/server/synchronization/HistVal.java @@ -24,13 +24,14 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import org.opends.server.core.DirectoryServer; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; opends/src/server/org/opends/server/synchronization/plugin/Historical.java
File was renamed from opends/src/server/org/opends/server/synchronization/Historical.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.ArrayList; import java.util.HashMap; @@ -38,6 +38,8 @@ import org.opends.server.core.AddOperation; import org.opends.server.core.DirectoryServer; import org.opends.server.core.ModifyOperation; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.OperationContext; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; @@ -65,9 +67,18 @@ public class Historical { static final String HISTORICALATTRIBUTENAME = "ds-sync-hist"; static final AttributeType historicalAttrType = /** * The name of the attribute used to store historical information. */ public static final String HISTORICALATTRIBUTENAME = "ds-sync-hist"; /** * The AttributeType associated to the attribute used to store * hitorical information. */ public static final AttributeType historicalAttrType = DirectoryServer.getSchema().getAttributeType(HISTORICALATTRIBUTENAME); static final String ENTRYUIDNAME = "entryuuid"; static final AttributeType entryuuidAttrType = DirectoryServer.getSchema().getAttributeType(ENTRYUIDNAME); opends/src/server/org/opends/server/synchronization/plugin/HistoricalCsnOrderingMatchingRule.java
File was renamed from opends/src/server/org/opends/server/synchronization/HistoricalCsnOrderingMatchingRule.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import org.opends.server.api.OrderingMatchingRule; import org.opends.server.config.ConfigEntry; opends/src/server/org/opends/server/synchronization/plugin/ListenerThread.java
File was renamed from opends/src/server/org/opends/server/synchronization/ListenerThread.java @@ -24,14 +24,15 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import org.opends.server.api.DirectoryThread; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.types.ErrorLogCategory; import org.opends.server.types.ErrorLogSeverity; opends/src/server/org/opends/server/synchronization/plugin/ModifyFakeOperation.java
File was renamed from opends/src/server/org/opends/server/synchronization/ModifyFakeOperation.java @@ -24,10 +24,13 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.ArrayList; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.ModifyMsg; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.types.DN; import org.opends.server.types.Modification; opends/src/server/org/opends/server/synchronization/plugin/MultimasterSynchronization.java
File was renamed from opends/src/server/org/opends/server/synchronization/MultimasterSynchronization.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.HashMap; import java.util.Map; @@ -33,10 +33,12 @@ import org.opends.server.api.ConfigChangeListener; import org.opends.server.api.ConfigDeleteListener; import org.opends.server.api.SynchronizationProvider; import org.opends.server.changelog.Changelog; import org.opends.server.config.ConfigEntry; import org.opends.server.config.ConfigException; import org.opends.server.core.AddOperation; import org.opends.server.synchronization.changelog.Changelog; import org.opends.server.synchronization.common.LogMessages; import org.opends.server.synchronization.common.ServerState; import org.opends.server.types.DN; import org.opends.server.core.DeleteOperation; import org.opends.server.types.DirectoryException; @@ -49,7 +51,7 @@ import org.opends.server.types.ResultCode; import org.opends.server.types.SynchronizationProviderResult; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; /** * This class is used to load the Synchronization code inside the JVM @@ -93,7 +95,7 @@ public void initializeSynchronizationProvider(ConfigEntry configEntry) throws ConfigException { SynchMessages.registerMessages(); LogMessages.registerMessages(); configEntry.registerAddListener(this); configEntry.registerDeleteListener(this); @@ -469,6 +471,10 @@ } } while (domain == null); /* * Don't apply synchronization to the special entry where the ServerState * is stored. */ if ((domain!= null) && (domain.getServerStateDN().equals(dn))) return null; opends/src/server/org/opends/server/synchronization/plugin/PendingChange.java
File was renamed from opends/src/server/org/opends/server/synchronization/PendingChange.java @@ -24,9 +24,11 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import org.opends.server.core.Operation; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.UpdateMessage; /** * This class is use to store the list of operations currently opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
New file @@ -0,0 +1,309 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization.plugin; import static org.opends.server.loggers.Error.logError; import static org.opends.server.messages.MessageHandler.getMessage; import static org.opends.server.synchronization.common.LogMessages.*; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import org.opends.server.core.AddOperation; import org.opends.server.core.DirectoryServer; import org.opends.server.core.ModifyOperation; import org.opends.server.protocols.asn1.ASN1OctetString; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.protocols.internal.InternalSearchOperation; import org.opends.server.protocols.ldap.LDAPAttribute; import org.opends.server.protocols.ldap.LDAPException; import org.opends.server.protocols.ldap.LDAPFilter; import org.opends.server.protocols.ldap.LDAPModification; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ServerState; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; import org.opends.server.types.Control; import org.opends.server.types.DN; import org.opends.server.types.DereferencePolicy; import org.opends.server.types.DirectoryException; import org.opends.server.types.ErrorLogCategory; import org.opends.server.types.ErrorLogSeverity; import org.opends.server.types.ModificationType; import org.opends.server.types.ResultCode; import org.opends.server.types.SearchResultEntry; import org.opends.server.types.SearchScope; /** * This class implements a ServerState that is stored on the backends * used to store the synchronized data and that is therefore persistent * accross server reboot. */ public class PersistentServerState extends ServerState { private DN baseDn; private boolean savedStatus = true; private InternalClientConnection conn = new InternalClientConnection(); private ASN1OctetString serverStateAsn1Dn; private DN serverStateDn; /** * The attribute name used to store the state in the backend. */ protected static final String SYNCHRONIZATION_STATE = "ds-sync-state"; /** * create a new ServerState. * @param baseDn The baseDN for which the ServerState is created */ public PersistentServerState(DN baseDn) { this.baseDn = baseDn; serverStateAsn1Dn = new ASN1OctetString( "dc=ffffffff-ffffffff-ffffffff-ffffffff," + baseDn.toString()); try { serverStateDn = DN.decode(serverStateAsn1Dn); } catch (DirectoryException e) { // never happens } } /** * {@inheritDoc} */ @Override public boolean update(ChangeNumber changeNumber) { savedStatus = false; return super.update(changeNumber); } /** * Save this object to persistent storage. */ public void save() { if (savedStatus) return; savedStatus = true; ArrayList<ASN1OctetString> values = this.toASN1ArrayList(); if (values.size() == 0) return; LDAPAttribute attr = new LDAPAttribute(SYNCHRONIZATION_STATE, values); LDAPModification mod = new LDAPModification(ModificationType.REPLACE, attr); ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>(1); mods.add(mod); boolean done = false; while (!done) { /* * Generate a modify operation on the Server State Entry : * cn=ffffffff-ffffffff-ffffffff-ffffffff, baseDn */ ModifyOperation op = new ModifyOperation(conn, InternalClientConnection.nextOperationID(), InternalClientConnection.nextMessageID(), new ArrayList<Control>(0), serverStateAsn1Dn, mods); op.setInternalOperation(true); op.setSynchronizationOperation(true); op.run(); ResultCode resultCode = op.getResultCode(); if (resultCode != ResultCode.SUCCESS) { if (resultCode == ResultCode.NO_SUCH_OBJECT) { createStateEntry(); } else { savedStatus = false; int msgID = MSGID_ERROR_UPDATING_RUV; String message = getMessage(msgID, op.getResultCode().getResultCodeName(), op.toString(), op.getErrorMessage(), baseDn.toString()); logError(ErrorLogCategory.SYNCHRONIZATION, ErrorLogSeverity.SEVERE_ERROR, message, msgID); break; } } else done = true; } } /** * Load the ServerState from the backing entry in database to memory. */ public void loadState() { /* * Read the serverState from the database, * If not there create empty entry */ LDAPFilter filter; try { filter = LDAPFilter.decode("objectclass=*"); } catch (LDAPException e) { // can not happen return; } /* * Search the database entry that is used to periodically * save the ServerState */ InternalSearchOperation search = conn.processSearch(serverStateAsn1Dn, SearchScope.BASE_OBJECT, DereferencePolicy.DEREF_ALWAYS, 0, 0, false, filter,new LinkedHashSet<String>(0)); if (((search.getResultCode() != ResultCode.SUCCESS)) && ((search.getResultCode() != ResultCode.NO_SUCH_OBJECT))) { int msgID = MSGID_ERROR_SEARCHING_RUV; String message = getMessage(msgID, search.getResultCode().getResultCodeName(), search.toString(), search.getErrorMessage(), baseDn.toString()); logError(ErrorLogCategory.SYNCHRONIZATION, ErrorLogSeverity.SEVERE_ERROR, message, msgID); } SearchResultEntry resultEntry = null; if (search.getResultCode() == ResultCode.SUCCESS) { /* * Read the serverState from the SYNCHRONIZATION_STATE attribute */ LinkedList<SearchResultEntry> result = search.getSearchEntries(); resultEntry = result.getFirst(); if (resultEntry != null) { AttributeType synchronizationStateType = DirectoryServer.getAttributeType(SYNCHRONIZATION_STATE); List<Attribute> attrs = resultEntry.getAttribute(synchronizationStateType); if (attrs != null) { Attribute attr = attrs.get(0); LinkedHashSet<AttributeValue> values = attr.getValues(); for (AttributeValue value : values) { ChangeNumber changeNumber = new ChangeNumber(value.getStringValue()); update(changeNumber); } } } /* * TODO : The ServerState is saved to the database periodically, * therefore in case of crash it is possible that is does not contain * the latest changes that have been processed and saved to the * database. * In order to make sure that we don't loose them, search all the entries * that have been updated after this entry. * This is done by using the HistoricalCsnOrderingMatchingRule * and an ordering index for historical attribute */ } if ((resultEntry == null) || ((search.getResultCode() != ResultCode.SUCCESS))) { createStateEntry(); } } /** * Create the Entry that will be used to store the ServerState information. * It will be updated when the server stops and periodically. */ private void createStateEntry() { ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>(); ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>(); ASN1OctetString value = new ASN1OctetString("extensibleObject"); values.add(value); LDAPAttribute attr = new LDAPAttribute("objectClass", values); value = new ASN1OctetString("domain"); values.add(value); attr = new LDAPAttribute("objectClass", values); attrs.add(attr); values = new ArrayList<ASN1OctetString>(); value = new ASN1OctetString("ffffffff-ffffffff-ffffffff-ffffffff"); values.add(value); attr = new LDAPAttribute("dc", values); attrs.add(attr); AddOperation add = conn.processAdd(serverStateAsn1Dn, attrs); ResultCode resultCode = add.getResultCode(); if ((resultCode != ResultCode.SUCCESS) && (resultCode != ResultCode.NO_SUCH_OBJECT)) { int msgID = MSGID_ERROR_UPDATING_RUV; String message = getMessage(msgID, add.getResultCode().getResultCodeName(), add.toString(), add.getErrorMessage(), baseDn.toString()); logError(ErrorLogCategory.SYNCHRONIZATION, ErrorLogSeverity.SEVERE_ERROR, message, msgID); } } /** * Get the Dn where the ServerState is stored. * @return Returns the serverStateDn. */ public DN getServerStateDn() { return serverStateDn; } } opends/src/server/org/opends/server/synchronization/plugin/SynchronizationDomain.java
File was renamed from opends/src/server/org/opends/server/synchronization/SynchronizationDomain.java @@ -24,15 +24,15 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString; import static org.opends.server.util.TimeThread.getTime; import static org.opends.server.synchronization.SynchMessages.*; import static org.opends.server.synchronization.common.LogMessages.*; import static org.opends.server.synchronization.plugin.Historical.*; import static org.opends.server.synchronization.protocol.OperationContext.*; import static org.opends.server.loggers.Error.*; import static org.opends.server.messages.MessageHandler.*; import static org.opends.server.synchronization.OperationContext.SYNCHROCONTEXT; import static org.opends.server.synchronization.Historical.*; import java.net.SocketTimeoutException; import java.util.ArrayList; @@ -63,6 +63,18 @@ import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.protocols.internal.InternalSearchOperation; import org.opends.server.protocols.ldap.LDAPException; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ChangeNumberGenerator; import org.opends.server.synchronization.common.ServerState; import org.opends.server.synchronization.protocol.AckMessage; import org.opends.server.synchronization.protocol.AddContext; import org.opends.server.synchronization.protocol.DeleteContext; import org.opends.server.synchronization.protocol.ModifyContext; import org.opends.server.synchronization.protocol.ModifyDNMsg; import org.opends.server.synchronization.protocol.ModifyDnContext; import org.opends.server.synchronization.protocol.OperationContext; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.types.ConfigChangeResult; import org.opends.server.types.DirectoryException; import org.opends.server.types.DN; @@ -103,7 +115,7 @@ private int numSentUpdates = 0; private int numProcessedUpdates = 0; private int debugCount = 0; private ServerState state; private PersistentServerState state; private int numReplayedPostOpCalled = 0; private int maxReceiveQueue = 0; @@ -204,7 +216,7 @@ baseDN = baseDn.activeValue(); configAttributes.add(baseDn); state = new ServerState(baseDN); state = new PersistentServerState(baseDN); state.loadState(); /* @@ -704,7 +716,16 @@ return null; } update = msg.processReceive(this); if (msg instanceof AckMessage) { AckMessage ack = (AckMessage) msg; receiveAck(ack); } else if (msg instanceof UpdateMessage) { update = (UpdateMessage) msg; receiveUpdate(update); } } catch (SocketTimeoutException e) { // just retry opends/src/server/org/opends/server/synchronization/plugin/SynchronizationMonitor.java
File was renamed from opends/src/server/org/opends/server/synchronization/SynchronizationMonitor.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.ArrayList; import java.util.LinkedHashSet; opends/src/server/org/opends/server/synchronization/plugin/ValueInfo.java
File was renamed from opends/src/server/org/opends/server/synchronization/ValueInfo.java @@ -24,8 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.types.AttributeValue; /** opends/src/server/org/opends/server/synchronization/plugin/package-info.java
New file @@ -0,0 +1,50 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2006 Sun Microsystems, Inc. */ /** * This package contains the part of the Multimaster * synchronization code that works on the Directory Server side. * <br> * The main classes of this core are : * <ul> * <li> * <A HREF="MultimasterSynchronization.html"><B>MultimasterSynchronization * </B></A>contains the synchronization provider * code and more generally all the code that makes the glue between the core * server and the synchronization code. * </li> * <li> * <A HREF="SynchronizationDomain.html"><B>SynchronizationDomain</B></A> * contains the bulk of the Directory Server side of the * synchronization code. Most notably it contains the root method for * publishing a change, processing a change received from the changelog * service, handle conflict resolution, handle protocol messages from the * changelog server. * </li> * </ul> */ package org.opends.server.synchronization.plugin; opends/src/server/org/opends/server/synchronization/protocol/AckMessage.java
File was renamed from opends/src/server/org/opends/server/synchronization/AckMessage.java @@ -24,19 +24,18 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.zip.DataFormatException; import org.opends.server.synchronization.common.ChangeNumber; /** * Used to send acks between LDAP and changelog servers. */ public class AckMessage extends SynchronizationMessage implements Serializable public class AckMessage extends SynchronizationMessage { private static final long serialVersionUID = -8695651898339602441L; // ChangeNumber of the update that was acked. private ChangeNumber changeNumber; @@ -92,16 +91,6 @@ * {@inheritDoc} */ @Override public UpdateMessage processReceive(SynchronizationDomain domain) { domain.receiveAck(this); return null; } /** * {@inheritDoc} */ @Override public byte[] getBytes() { try opends/src/server/org/opends/server/synchronization/protocol/AddContext.java
File was renamed from opends/src/server/org/opends/server/synchronization/AddContext.java @@ -24,7 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import org.opends.server.synchronization.common.ChangeNumber; /** * This class describe the Synchronization contexte that is attached to opends/src/server/org/opends/server/synchronization/protocol/AddMsg.java
File was renamed from opends/src/server/org/opends/server/synchronization/AddMsg.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import org.opends.server.core.AddOperation; import org.opends.server.core.DirectoryServer; @@ -42,10 +42,11 @@ import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.protocols.ldap.LDAPAttribute; import org.opends.server.protocols.ldap.LDAPException; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeValue; import static org.opends.server.synchronization.OperationContext.*; import static org.opends.server.synchronization.protocol.OperationContext.*; import static org.opends.server.util.StaticUtils.toLowerCase; /** opends/src/server/org/opends/server/synchronization/protocol/ChangelogStartMessage.java
File was renamed from opends/src/server/org/opends/server/synchronization/ChangelogStartMessage.java @@ -24,12 +24,13 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.zip.DataFormatException; import org.opends.server.synchronization.common.ServerState; import org.opends.server.types.DirectoryException; import org.opends.server.types.DN; @@ -178,16 +179,6 @@ * {@inheritDoc} */ @Override public UpdateMessage processReceive(SynchronizationDomain domain) { // This is currently not used. return null; } /** * {@inheritDoc} */ @Override public byte[] getBytes() { /* The ChangelogStartMessage is stored in the form : opends/src/server/org/opends/server/synchronization/protocol/DeleteContext.java
File was renamed from opends/src/server/org/opends/server/synchronization/DeleteContext.java @@ -24,7 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import org.opends.server.synchronization.common.ChangeNumber; /** * This class is used to describe the context attached to a Delete Operation. opends/src/server/org/opends/server/synchronization/protocol/DeleteMsg.java
File was renamed from opends/src/server/org/opends/server/synchronization/DeleteMsg.java @@ -24,9 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import static org.opends.server.synchronization.OperationContext.*; import static org.opends.server.synchronization.protocol.OperationContext.*; import java.io.UnsupportedEncodingException; import java.util.zip.DataFormatException; @@ -35,6 +35,7 @@ import org.opends.server.core.Operation; import org.opends.server.protocols.asn1.ASN1OctetString; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.synchronization.common.ChangeNumber; /** * Object used when sending delete information to Changelogs. opends/src/server/org/opends/server/synchronization/protocol/ModifyContext.java
File was renamed from opends/src/server/org/opends/server/synchronization/ModifyContext.java @@ -24,7 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import org.opends.server.synchronization.common.ChangeNumber; /** * This class describe the synchronization context that is attached to opends/src/server/org/opends/server/synchronization/protocol/ModifyDNMsg.java
File was renamed from opends/src/server/org/opends/server/synchronization/ModifyDNMsg.java @@ -24,9 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import static org.opends.server.synchronization.OperationContext.*; import static org.opends.server.synchronization.protocol.OperationContext.*; import java.io.UnsupportedEncodingException; import java.util.zip.DataFormatException; @@ -35,6 +35,7 @@ import org.opends.server.core.Operation; import org.opends.server.protocols.asn1.ASN1OctetString; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.synchronization.common.ChangeNumber; /** * Message used to send Modify DN information. opends/src/server/org/opends/server/synchronization/protocol/ModifyDnContext.java
File was renamed from opends/src/server/org/opends/server/synchronization/ModifyDnContext.java @@ -24,7 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import org.opends.server.synchronization.common.ChangeNumber; /** * This class describe the synchronization context that is attached to opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java
File was renamed from opends/src/server/org/opends/server/synchronization/ModifyMsg.java @@ -24,9 +24,9 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import static org.opends.server.synchronization.OperationContext.*; import static org.opends.server.synchronization.protocol.OperationContext.*; import org.opends.server.core.ModifyOperation; import org.opends.server.core.Operation; @@ -37,6 +37,8 @@ import org.opends.server.protocols.ldap.LDAPModification; import org.opends.server.protocols.asn1.ASN1Element; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.plugin.Historical; import org.opends.server.types.Attribute; import org.opends.server.types.DN; import org.opends.server.types.Modification; opends/src/server/org/opends/server/synchronization/protocol/OperationContext.java
File was renamed from opends/src/server/org/opends/server/synchronization/OperationContext.java @@ -24,9 +24,10 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import org.opends.server.core.Operation; import org.opends.server.synchronization.common.ChangeNumber; /** * This class describe the Synchronization context that is attached opends/src/server/org/opends/server/synchronization/protocol/ProtocolSession.java
File was renamed from opends/src/server/org/opends/server/changelog/ProtocolSession.java @@ -24,14 +24,12 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.protocol; import java.io.IOException; import java.net.SocketException; import java.util.zip.DataFormatException; import org.opends.server.synchronization.SynchronizationMessage; /** * The ProtocolSession interface should be implemented by a class that * implement the send/reception part of the Multimaster synchronization opends/src/server/org/opends/server/synchronization/protocol/ServerStartMessage.java
File was renamed from opends/src/server/org/opends/server/synchronization/ServerStartMessage.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.io.Serializable; import java.io.UnsupportedEncodingException; @@ -32,6 +32,7 @@ import java.net.UnknownHostException; import java.util.zip.DataFormatException; import org.opends.server.synchronization.common.ServerState; import org.opends.server.types.DirectoryException; import org.opends.server.types.DN; @@ -263,18 +264,6 @@ * {@inheritDoc} */ @Override public UpdateMessage processReceive(SynchronizationDomain domain) { /* * This is currently not used. */ return null; } /** * {@inheritDoc} */ @Override public byte[] getBytes() { /* opends/src/server/org/opends/server/synchronization/protocol/SocketSession.java
File was renamed from opends/src/server/org/opends/server/changelog/SocketSession.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.changelog; package org.opends.server.synchronization.protocol; import java.io.IOException; import java.io.InputStream; @@ -33,8 +33,6 @@ import java.net.SocketException; import java.util.zip.DataFormatException; import org.opends.server.synchronization.SynchronizationMessage; /** * This class Implement a protocol session using a basic socket and relying on * the innate encoding/decoding capabilities of the SynchronizationMessage opends/src/server/org/opends/server/synchronization/protocol/SynchronizationMessage.java
File was renamed from opends/src/server/org/opends/server/synchronization/SynchronizationMessage.java @@ -24,9 +24,8 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.util.zip.DataFormatException; @@ -37,7 +36,7 @@ * When extending this class one should also create a new MSG_TYPE * and should update the generateMsg() method. */ public abstract class SynchronizationMessage implements Serializable public abstract class SynchronizationMessage { static final byte MSG_TYPE_MODIFY_REQUEST = 1; static final byte MSG_TYPE_ADD_REQUEST = 2; @@ -49,14 +48,6 @@ static final byte MSG_TYPE_WINDOW = 8; /** * Do the processing necessary when the message is received. * * @param domain The Synchronization domain where the messages was received. * @return an UpdateMessage if the processing result is an UpdateMessage. */ public abstract UpdateMessage processReceive(SynchronizationDomain domain); /** * Return the byte[] representation of this message. * Depending on the message type, the first byte of the byte[] must be. * MSG_TYPE_MODIFY_REQUEST opends/src/server/org/opends/server/synchronization/protocol/UpdateMessage.java
File was renamed from opends/src/server/org/opends/server/synchronization/UpdateMessage.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.io.Serializable; import java.io.UnsupportedEncodingException; @@ -38,6 +38,7 @@ import org.opends.server.protocols.asn1.ASN1Exception; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.protocols.ldap.LDAPException; import org.opends.server.synchronization.common.ChangeNumber; /** * Abstract class that must be extended to define a message @@ -359,13 +360,4 @@ } } /** * {@inheritDoc} */ @Override public UpdateMessage processReceive(SynchronizationDomain domain) { domain.receiveUpdate(this); return this; } } opends/src/server/org/opends/server/synchronization/protocol/WindowMessage.java
File was renamed from opends/src/server/org/opends/server/synchronization/WindowMessage.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.io.Serializable; import java.io.UnsupportedEncodingException; @@ -130,12 +130,4 @@ return numAck; } /** * {@inheritDoc} */ @Override public UpdateMessage processReceive(SynchronizationDomain domain) { return null; } } opends/src/server/org/opends/server/synchronization/protocol/package-info.java
New file @@ -0,0 +1,51 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2006 Sun Microsystems, Inc. */ /** * This package contains the code used by the changelog and by the * code running on the Directory Server side to exchange their information. * <br> * <br> * The main classes of this packages are : * <br> * <ul> * <li><A HREF="SocketSession.html"><B>SocketSession</B></A> * implements the ProtocolSession interface that is * used by the changelog server and the directory server to communicate. * This is done by using the innate encoding/decoding capabilities of the * SynchronizationMessages objects. This class is used by both the * changelog and the synchronization package. * </li> * <li><A HREF="SynchronizationMessage.html"><B>SynchronizationMessage</B></A> * This class and the class that inherit from it contain the * messages that are used for communication between the changelog and the * Directory Server as well as the methods fro encoding/decoding them. * </li> * </ul> */ package org.opends.server.synchronization.protocol; opends/tests/unit-tests-testng/src/server/org/opends/server/changelog/UpdateComparatorTest.java
@@ -29,16 +29,17 @@ import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import static org.opends.server.synchronization.OperationContext.SYNCHROCONTEXT; import static org.opends.server.synchronization.protocol.OperationContext.SYNCHROCONTEXT; import static org.testng.Assert.*; import org.opends.server.core.DeleteOperation; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.synchronization.ChangeNumber; import org.opends.server.synchronization.DeleteContext; import org.opends.server.synchronization.DeleteMsg; import org.opends.server.synchronization.UpdateMessage; import org.opends.server.synchronization.changelog.UpdateComparator; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.protocol.DeleteContext; import org.opends.server.synchronization.protocol.DeleteMsg; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.types.DirectoryException; import org.opends.server.types.DN; import org.opends.server.util.TimeThread; opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java
@@ -49,6 +49,11 @@ import org.opends.server.core.ModifyOperation; import org.opends.server.core.Operation; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.synchronization.plugin.ChangelogBroker; import org.opends.server.synchronization.plugin.MultimasterSynchronization; import org.opends.server.synchronization.plugin.PersistentServerState; import org.opends.server.synchronization.protocol.AddMsg; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; @@ -397,7 +402,7 @@ private ChangelogBroker openChangelogSession(final DN baseDn, short serverId) throws Exception, SocketException { ServerState state = new ServerState(baseDn); PersistentServerState state = new PersistentServerState(baseDn); state.loadState(); ChangelogBroker broker = new ChangelogBroker(state, baseDn, serverId, 0, 0, 0, 0, 100); opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
@@ -39,6 +39,15 @@ import org.opends.server.plugins.ShortCircuitPlugin; import org.opends.server.schema.DirectoryStringSyntax; import org.opends.server.schema.IntegerSyntax; import org.opends.server.synchronization.common.ChangeNumberGenerator; import org.opends.server.synchronization.plugin.ChangelogBroker; import org.opends.server.synchronization.plugin.MultimasterSynchronization; import org.opends.server.synchronization.plugin.PersistentServerState; import org.opends.server.synchronization.protocol.AddMsg; import org.opends.server.synchronization.protocol.DeleteMsg; import org.opends.server.synchronization.protocol.ModifyDNMsg; import org.opends.server.synchronization.protocol.ModifyMsg; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.config.ConfigEntry; import org.opends.server.config.ConfigException; import org.opends.server.core.AddOperation; @@ -857,7 +866,7 @@ private ChangelogBroker openChangelogSession(final DN baseDn, short serverId) throws Exception, SocketException { ServerState state = new ServerState(baseDn); PersistentServerState state = new PersistentServerState(baseDn); state.loadState(); ChangelogBroker broker = new ChangelogBroker(state, baseDn, serverId, 0, 0, 0, 0, 100); opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/common/ChangeNumberTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ChangeNumberTest.java @@ -24,13 +24,16 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.common; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import static org.testng.Assert.*; import org.opends.server.synchronization.SynchronizationTestCase; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ChangeNumberGenerator; import org.opends.server.util.TimeThread; opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/common/ServerStateTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ServerStateTest.java @@ -24,13 +24,15 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.common; import static org.testng.Assert.*; import java.util.Set; import org.opends.server.types.DN; import org.opends.server.synchronization.SynchronizationTestCase; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ServerState; import org.opends.server.util.TimeThread; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -60,17 +62,11 @@ throws Exception { // Check constructor DN dn = DN.decode("cn=com"); ServerState serverState = new ServerState(dn) ; ServerState serverState = new ServerState() ; // Check Load // serverState.loadState() ; // TODO Check result // Check getServerStateDn() DN returned_DN = serverState.getServerStateDn(); // Check that the returned DN stays below dn assertTrue(dn.isAncestorOf(returned_DN)); // TODO Check result; // Check update assertFalse(serverState.update(null)); opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/plugin/AttrInfoTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/AttrInfoTest.java @@ -24,12 +24,16 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.ArrayList; import java.util.LinkedHashSet; import org.opends.server.core.DirectoryServer; import org.opends.server.synchronization.SynchronizationTestCase; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.plugin.AttrInfo; import org.opends.server.synchronization.plugin.ValueInfo; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; import org.opends.server.util.TimeThread; opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/plugin/ModifyConflictTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ModifyConflictTest.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import java.util.ArrayList; import java.util.HashMap; @@ -36,13 +36,21 @@ import org.testng.annotations.Test; import static org.testng.Assert.*; import static org.opends.server.synchronization.OperationContext.*; import static org.opends.server.synchronization.protocol.OperationContext.*; import org.opends.server.core.AddOperation; import org.opends.server.core.DirectoryServer; import org.opends.server.core.ModifyOperation; import org.opends.server.protocols.asn1.ASN1OctetString; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.synchronization.SynchronizationTestCase; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.plugin.FakeOperation; import org.opends.server.synchronization.plugin.FakeOperationComparator; import org.opends.server.synchronization.plugin.Historical; import org.opends.server.synchronization.protocol.ModifyContext; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/plugin/ValueInfoTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ValueInfoTest.java @@ -24,9 +24,12 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.plugin; import org.opends.server.core.DirectoryServer; import org.opends.server.synchronization.SynchronizationTestCase; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.plugin.ValueInfo; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; import org.opends.server.util.TimeThread; opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/ProtocolWindowTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java @@ -25,7 +25,7 @@ * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import static org.opends.server.loggers.Error.logError; import static org.testng.Assert.*; @@ -49,6 +49,12 @@ import org.opends.server.protocols.internal.InternalSearchOperation; import org.opends.server.protocols.ldap.LDAPException; import org.opends.server.protocols.ldap.LDAPFilter; import org.opends.server.synchronization.common.ServerState; import org.opends.server.synchronization.plugin.ChangelogBroker; import org.opends.server.synchronization.plugin.MultimasterSynchronization; import org.opends.server.synchronization.plugin.PersistentServerState; import org.opends.server.synchronization.protocol.AddMsg; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; @@ -409,7 +415,7 @@ private ChangelogBroker openChangelogSession(final DN baseDn, short serverId) throws Exception, SocketException { ServerState state = new ServerState(baseDn); PersistentServerState state = new PersistentServerState(baseDn); state.loadState(); ChangelogBroker broker = new ChangelogBroker(state, baseDn, serverId, 0, 0, 0, 0, WINDOW_SIZE); opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SyncMessagesTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SyncMessagesTest.java @@ -24,11 +24,13 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.lang.reflect.Field; import org.opends.server.messages.MessageHandler; import org.opends.server.synchronization.SynchronizationTestCase; import org.opends.server.synchronization.common.LogMessages; import org.testng.annotations.Test; import static org.testng.Assert.*; @@ -45,9 +47,9 @@ public void synchroMessagesTest() throws Exception { SynchMessages.registerMessages() ; Field fields[] = SynchMessages.class.getFields() ; SynchMessages synMsg = new SynchMessages() ; LogMessages.registerMessages() ; Field fields[] = LogMessages.class.getFields() ; LogMessages synMsg = new LogMessages() ; for (Field f : fields) { if (f.getClass().equals(Integer.class)) opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java
File was renamed from opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SynchronizationMsgTest.java @@ -24,7 +24,7 @@ * * Portions Copyright 2006 Sun Microsystems, Inc. */ package org.opends.server.synchronization; package org.opends.server.synchronization.protocol; import java.util.ArrayList; import java.util.HashMap; @@ -44,7 +44,20 @@ import org.opends.server.core.ModifyOperation; import org.opends.server.core.Operation; import org.opends.server.protocols.internal.InternalClientConnection; import org.opends.server.synchronization.ModifyMsg; import org.opends.server.synchronization.SynchronizationTestCase; import org.opends.server.synchronization.common.ChangeNumber; import org.opends.server.synchronization.common.ServerState; import org.opends.server.synchronization.plugin.PendingChange; import org.opends.server.synchronization.protocol.AckMessage; import org.opends.server.synchronization.protocol.AddMsg; import org.opends.server.synchronization.protocol.ChangelogStartMessage; import org.opends.server.synchronization.protocol.DeleteMsg; import org.opends.server.synchronization.protocol.ModifyDNMsg; import org.opends.server.synchronization.protocol.ModifyMsg; import org.opends.server.synchronization.protocol.ServerStartMessage; import org.opends.server.synchronization.protocol.SynchronizationMessage; import org.opends.server.synchronization.protocol.UpdateMessage; import org.opends.server.synchronization.protocol.WindowMessage; import org.opends.server.types.Attribute; import org.opends.server.types.AttributeType; import org.opends.server.types.AttributeValue; @@ -56,7 +69,7 @@ import org.opends.server.types.RDN; import org.opends.server.util.TimeThread; import static org.opends.server.synchronization.OperationContext.*; import static org.opends.server.synchronization.protocol.OperationContext.*; /** * Test the contructors, encoders and decoders of the synchronization @@ -443,7 +456,7 @@ public Object [][] createServerStartMessageTestData() throws Exception { DN baseDN = DN.decode("dc=example, dc=com"); ServerState state = new ServerState(baseDN); ServerState state = new ServerState(); return new Object [][] { {(short)1, baseDN, 100, state} }; } /** @@ -470,7 +483,7 @@ public Object [][] createChangelogStartMessageTestData() throws Exception { DN baseDN = DN.decode("dc=example, dc=com"); ServerState state = new ServerState(baseDN); ServerState state = new ServerState(); return new Object [][] { {(short)1, baseDN, 100, "localhost:8989", state} }; }