Skip to content

Commit

Permalink
Bug 501841 - Add more logging to controllers
Browse files Browse the repository at this point in the history
Change-Id: I6aa366b17ce9dcd984fa34c71ab2d5e3990bd354
Signed-off-by: Johannes Faltermeier <jfaltermeier@eclipsesource.com>
  • Loading branch information
jfaltermeier committed Jan 26, 2017
1 parent 63293de commit 6e47b3a
Show file tree
Hide file tree
Showing 9 changed files with 405 additions and 83 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.eclipse.emf.emfstore.internal.client.model.ServerInfo;
import org.eclipse.emf.emfstore.internal.client.model.connectionmanager.AbstractConnectionManager;
import org.eclipse.emf.emfstore.internal.client.model.connectionmanager.ConnectionManager;
import org.eclipse.emf.emfstore.internal.client.model.util.EMFStoreClientUtil;
import org.eclipse.emf.emfstore.internal.common.model.EMFStoreProperty;
import org.eclipse.emf.emfstore.internal.common.model.Project;
import org.eclipse.emf.emfstore.internal.server.connection.xmlrpc.XmlRpcConnectionHandler;
Expand Down Expand Up @@ -53,6 +54,8 @@
public class XmlRpcConnectionManager extends AbstractConnectionManager<XmlRpcClientManager> implements
ConnectionManager {

private static final String LOGGING_PREFIX = "XMLRPC-Client"; //$NON-NLS-1$

/**
* {@inheritDoc}
*/
Expand Down Expand Up @@ -106,6 +109,7 @@ public ProjectInfo createProject(SessionId sessionId, String name, String descri
public PrimaryVersionSpec createVersion(SessionId sessionId, ProjectId projectId,
PrimaryVersionSpec baseVersionSpec, AbstractChangePackage changePackage, BranchVersionSpec targetBranch,
PrimaryVersionSpec sourceVersion, LogMessage logMessage) throws ESException, InvalidVersionSpecException {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Server call to create version", projectId, targetBranch); //$NON-NLS-1$
return getConnectionProxy(sessionId).callWithResult("createVersion", PrimaryVersionSpec.class, sessionId, //$NON-NLS-1$
projectId, baseVersionSpec, changePackage, targetBranch, sourceVersion, logMessage);
}
Expand Down Expand Up @@ -140,6 +144,8 @@ public ProjectHistory exportProjectHistoryFromServer(SessionId sessionId, Projec
*/
public List<AbstractChangePackage> getChanges(SessionId sessionId, ProjectId projectId, VersionSpec source,
VersionSpec target) throws InvalidVersionSpecException, ESException {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Server call to get changes", projectId, //$NON-NLS-1$
source == null ? null : source.getBranch());
return getConnectionProxy(sessionId).callWithListResult("getChanges", AbstractChangePackage.class, sessionId, //$NON-NLS-1$
projectId, source, target);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.eclipse.emf.emfstore.internal.client.model.ESWorkspaceProviderImpl;
import org.eclipse.emf.emfstore.internal.client.model.connectionmanager.ServerCall;
import org.eclipse.emf.emfstore.internal.client.model.impl.ProjectSpaceBase;
import org.eclipse.emf.emfstore.internal.client.model.util.EMFStoreClientUtil;
import org.eclipse.emf.emfstore.internal.client.model.util.WorkspaceUtil;
import org.eclipse.emf.emfstore.internal.common.model.Project;
import org.eclipse.emf.emfstore.internal.common.model.util.ModelUtil;
Expand All @@ -48,6 +49,8 @@
*/
public class CommitController extends ServerCall<PrimaryVersionSpec> {

private static final String LOGGING_PREFIX = "COMMIT"; //$NON-NLS-1$

private final String logMessage;
private final ESCommitCallback callback;
private final BranchVersionSpec branch;
Expand Down Expand Up @@ -104,8 +107,12 @@ protected PrimaryVersionSpec run() throws ESException {

private PrimaryVersionSpec commit(final String logMessage, final BranchVersionSpec branch)
throws InvalidVersionSpecException, ESUpdateRequiredException, ESException {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "CommitController started", getProjectSpace(), branch, //$NON-NLS-1$
getUsersession());

if (!getProjectSpace().isShared()) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Stopping commit because project is not shared", //$NON-NLS-1$
getProjectSpace(), branch, getUsersession());
throw new ESProjectNotSharedException();
}

Expand All @@ -116,6 +123,8 @@ private PrimaryVersionSpec commit(final String logMessage, final BranchVersionSp
// check if there are any changes. Branch commits are allowed with no changes, whereas normal commits are not.
if (!getProjectSpace().isDirty() && branch == null) {
callback.noLocalChanges(getProjectSpace().toAPI());
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Stopping commit because no changes and no new branch", //$NON-NLS-1$
getProjectSpace(), branch, getUsersession());
return getProjectSpace().getBaseVersion();
}

Expand Down Expand Up @@ -143,6 +152,8 @@ private PrimaryVersionSpec commit(final String logMessage, final BranchVersionSp
localChangePackage.toAPI(),
idToEObjectMapping.toAPI())
|| getProgressMonitor().isCanceled()) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Commit vetoed by ESCommitCallback/ProgressMonitor", //$NON-NLS-1$
getProjectSpace(), branch, getUsersession());

return getProjectSpace().getBaseVersion();
}
Expand All @@ -163,10 +174,17 @@ private PrimaryVersionSpec commit(final String logMessage, final BranchVersionSp
localChangePackage.toAPI(),
idToEObjectMapping.toAPI())
|| getProgressMonitor().isCanceled()) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX,
"Stopping commit because updated project was vetoed.", getProjectSpace(), branch, getUsersession()); //$NON-NLS-1$
return getProjectSpace().getBaseVersion();
}
}

return commitAfterUpdate(branch, localChangePackage);
}

private PrimaryVersionSpec commitAfterUpdate(final BranchVersionSpec branch,
final AbstractChangePackage localChangePackage) throws ESException {
final PrimaryVersionSpec newBaseVersion = performCommit(branch, localChangePackage);

// TODO reimplement with ObserverBus and think about subtasks for commit
Expand Down Expand Up @@ -195,6 +213,8 @@ public Void call() throws Exception {
ESWorkspaceProviderImpl.getObserverBus().notify(ESCommitObserver.class)
.commitCompleted(getProjectSpace().toAPI(), newBaseVersion.toAPI(), getProgressMonitor());

EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Commit successful", getProjectSpace(), branch, //$NON-NLS-1$
getUsersession());
return newBaseVersion;
}

Expand All @@ -220,6 +240,8 @@ private void handleChecksumProcessing(final PrimaryVersionSpec newBaseVersion) t
private PrimaryVersionSpec performCommit(final BranchVersionSpec branch, final AbstractChangePackage changePackage)
throws ESException {

EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Perform commit..", getProjectSpace(), branch, //$NON-NLS-1$
getUsersession());
// Branching case: branch specifier added
final PrimaryVersionSpec newBaseVersion = new UnknownEMFStoreWorkloadCommand<PrimaryVersionSpec>(
getProgressMonitor()) {
Expand All @@ -235,6 +257,8 @@ public PrimaryVersionSpec run(IProgressMonitor monitor) throws ESException {
changePackage.getLogMessage());
}
}.execute();
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Perform commit.. done", getProjectSpace(), branch, //$NON-NLS-1$
getUsersession());
return newBaseVersion;
}

Expand All @@ -253,9 +277,15 @@ public Void call() throws Exception {

private boolean performChecksumCheck(PrimaryVersionSpec newBaseVersion, Project project)
throws SerializationException {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Perform checksum check..", getProjectSpace(), branch, //$NON-NLS-1$
getUsersession());

if (Configuration.getClientBehavior().isChecksumCheckActive()) {
final long computedChecksum = ModelUtil.computeChecksum(project);
EMFStoreClientUtil.logProjectDetails(
LOGGING_PREFIX, MessageFormat.format("Computed Checksum: {0} , ProjectState Checksum: {1}", //$NON-NLS-1$
computedChecksum, newBaseVersion.getProjectStateChecksum()),
getProjectSpace(), branch, getUsersession());
return computedChecksum == newBaseVersion.getProjectStateChecksum();
}

Expand All @@ -268,6 +298,8 @@ private boolean checkForCommitPreconditions(final BranchVersionSpec branch, IPro
if (branch != null) {
// check branch conditions
if (StringUtils.isEmpty(branch.getBranch())) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Stopping commit because of empty branch name", //$NON-NLS-1$
getProjectSpace(), branch, getUsersession());
throw new InvalidVersionSpecException(Messages.CommitController_EmptyBranchName);
}
PrimaryVersionSpec potentialBranch = null;
Expand All @@ -286,7 +318,11 @@ private boolean checkForCommitPreconditions(final BranchVersionSpec branch, IPro
.resolveVersionSpec(
Versions.createHEAD(getProjectSpace().getBaseVersion()), monitor);
if (!getProjectSpace().getBaseVersion().equals(resolvedVersion)) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Update required", getProjectSpace(), branch, //$NON-NLS-1$
getUsersession());
if (!callback.baseVersionOutOfDate(getProjectSpace().toAPI(), getProgressMonitor())) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Stopping commit because update required", //$NON-NLS-1$
getProjectSpace(), branch, getUsersession());
throw new ESUpdateRequiredException();
}
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.eclipse.emf.emfstore.internal.client.model.connectionmanager.ServerCall;
import org.eclipse.emf.emfstore.internal.client.model.exceptions.ChangeConflictException;
import org.eclipse.emf.emfstore.internal.client.model.impl.ProjectSpaceBase;
import org.eclipse.emf.emfstore.internal.client.model.util.EMFStoreClientUtil;
import org.eclipse.emf.emfstore.internal.client.model.util.EMFStoreCommand;
import org.eclipse.emf.emfstore.internal.common.model.util.ModelUtil;
import org.eclipse.emf.emfstore.internal.server.conflictDetection.ChangeConflictSet;
Expand All @@ -54,6 +55,8 @@
*/
public class UpdateController extends ServerCall<PrimaryVersionSpec> {

private static final String LOGGING_PREFIX = "UPDATE"; //$NON-NLS-1$

private final VersionSpec version;
private final ESUpdateCallback callback;

Expand Down Expand Up @@ -98,6 +101,8 @@ public UpdateController(ProjectSpaceBase projectSpace, VersionSpec version, ESUp
*/
@Override
protected PrimaryVersionSpec run() throws ESException {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Starting update", getProjectSpace(), version.getBranch(), //$NON-NLS-1$
getUsersession());
return doUpdate(version);
}

Expand All @@ -107,11 +112,15 @@ private PrimaryVersionSpec doUpdate(VersionSpec version) throws ChangeConflictEx
getProgressMonitor().subTask(Messages.UpdateController_ResolvingNewVersion);
final PrimaryVersionSpec resolvedVersion = getProjectSpace().resolveVersionSpec(version, getProgressMonitor());
if (equalsBaseVersion(resolvedVersion)) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Update not required", getProjectSpace(), //$NON-NLS-1$
version.getBranch(), getUsersession());
return resolvedVersion;
}
getProgressMonitor().worked(5);

if (getProgressMonitor().isCanceled()) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Update cancelled", getProjectSpace(), //$NON-NLS-1$
version.getBranch(), getUsersession());
return getProjectSpace().getBaseVersion();
}

Expand All @@ -121,6 +130,8 @@ private PrimaryVersionSpec doUpdate(VersionSpec version) throws ChangeConflictEx

checkAndRemoveDuplicateOperations(incomingChanges);

EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Creating local change package", getProjectSpace(), //$NON-NLS-1$
version.getBranch(), getUsersession());
AbstractChangePackage copiedLocalChangedPackage = ChangePackageUtil.createChangePackage(
Configuration.getClientBehavior().useInMemoryChangePackage()
);
Expand All @@ -133,6 +144,8 @@ private PrimaryVersionSpec doUpdate(VersionSpec version) throws ChangeConflictEx
} finally {
operations.close();
}
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Creating local change package..done", getProjectSpace(), //$NON-NLS-1$
version.getBranch(), getUsersession());

// build a mapping including deleted and create model elements in local and incoming change packages
final ModelElementIdToEObjectMappingImpl idToEObjectMapping = new ModelElementIdToEObjectMappingImpl(
Expand All @@ -158,6 +171,8 @@ private PrimaryVersionSpec doUpdate(VersionSpec version) throws ChangeConflictEx
getProjectSpace().toAPI(),
incomingAPIChangePackages,
idToEObjectMapping.toAPI())) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Update cancelled by user.", getProjectSpace(), //$NON-NLS-1$
version.getBranch(), getUsersession());

return getProjectSpace().getBaseVersion();
}
Expand Down Expand Up @@ -195,12 +210,16 @@ private PrimaryVersionSpec doUpdate(VersionSpec version) throws ChangeConflictEx

getProgressMonitor().subTask(Messages.UpdateController_ApplyingChanges);

EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Applying local changes", getProjectSpace(), //$NON-NLS-1$
version.getBranch(), getUsersession());
getProjectSpace().applyChanges(
resolvedVersion,
incomingChanges,
copiedLocalChangedPackage,
getProgressMonitor(),
true);
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Applying local changes..done", getProjectSpace(), //$NON-NLS-1$
version.getBranch(), getUsersession());

final Date now = new Date();
getProjectSpace().setLastUpdated(now);
Expand All @@ -209,6 +228,8 @@ private PrimaryVersionSpec doUpdate(VersionSpec version) throws ChangeConflictEx
.notify(ESUpdateObserver.class, true)
.updateCompleted(getProjectSpace().toAPI(), getProgressMonitor());

EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Update completed", getProjectSpace(), version.getBranch(), //$NON-NLS-1$
getUsersession());
return getProjectSpace().getBaseVersion();
}

Expand Down Expand Up @@ -237,10 +258,14 @@ private ChangeConflictSet calcConflicts(AbstractChangePackage localChanges,
}

private void checkAndRemoveDuplicateOperations(List<AbstractChangePackage> incomingChanges) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Check and remove duplicate operations..", //$NON-NLS-1$
getProjectSpace(), version.getBranch(), getUsersession());

final int baseVersionDelta = removeFromChangePackages(incomingChanges);

if (baseVersionDelta == 0) {
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Check and remove duplicate operations..done", //$NON-NLS-1$
getProjectSpace(), version.getBranch(), getUsersession());
return;
}

Expand All @@ -253,6 +278,8 @@ private void checkAndRemoveDuplicateOperations(List<AbstractChangePackage> incom
+ Messages.UpdateController_PullingUpBaseVersion,
baseVersionDelta, baseVersion.getIdentifier(), baseVersion.getIdentifier() + baseVersionDelta));
getProjectSpace().save();
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX, "Check and remove duplicate operations..done", //$NON-NLS-1$
getProjectSpace(), version.getBranch(), getUsersession());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.emfstore.internal.client.model.impl.ProjectSpaceBase;
import org.eclipse.emf.emfstore.internal.client.model.util.EMFStoreClientUtil;
import org.eclipse.emf.emfstore.internal.client.model.util.EMFStoreCommand;
import org.eclipse.emf.emfstore.internal.client.model.util.WorkspaceUtil;
import org.eclipse.emf.emfstore.internal.server.exceptions.FileTransferException;
Expand All @@ -35,6 +36,8 @@
*/
public class FileTransferManager {

private static final String LOGGING_PREFIX = "UPLOAD"; //$NON-NLS-1$

/**
* The associated cache manager.
*/
Expand Down Expand Up @@ -174,6 +177,8 @@ protected void doRun() {
continue;

}
EMFStoreClientUtil.logProjectDetails(LOGGING_PREFIX,
MessageFormat.format("Uploading file with identifier {0}", fi.getIdentifier())); //$NON-NLS-1$
final FileUploadJob job = new FileUploadJob(this, fi, true);
final IStatus result = job.run(progress);

Expand Down
Loading

0 comments on commit 6e47b3a

Please sign in to comment.