diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java index 5c909c3da3..f354ceb0f2 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/GitBridgeApp.java @@ -22,7 +22,7 @@ public class GitBridgeApp implements Runnable { public static final int EXIT_CODE_FAILED = 1; private static final String USAGE_MESSAGE = - "usage: writelatex-git-bridge config_file"; + "usage: writelatex-git-bridge [config_file]"; private String configFilePath; Config config; diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/Bridge.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/Bridge.java index e010ba274d..2e98d546ec 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/Bridge.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/Bridge.java @@ -31,6 +31,7 @@ import uk.ac.ic.wlgitbridge.snapshot.push.PushResult; import uk.ac.ic.wlgitbridge.snapshot.push.exception.*; import uk.ac.ic.wlgitbridge.util.Log; +import java.io.File; import java.io.IOException; import java.sql.Timestamp; import java.time.LocalDateTime; @@ -114,6 +115,33 @@ public class Bridge { swapJob.start(); } + public void checkDB() { + Log.info("Checking DB"); + File rootDir = repoStore.getRootDirectory(); + for (File f : rootDir.listFiles()) { + if (f.getName().equals(".wlgb")) { + continue; + } + String projName = f.getName(); + try (LockGuard __ = lock.lockGuard(projName)) { + File dotGit = new File(f, ".git"); + if (!dotGit.exists()) { + Log.warn("Project: {} has no .git", projName); + continue; + } + ProjectState state = dbStore.getProjectState(projName); + if (state != ProjectState.NOT_PRESENT) { + continue; + } + Log.warn("Project: {} not in swap_store, adding", projName); + dbStore.setLastAccessedTime( + projName, + new Timestamp(dotGit.lastModified()) + ); + } + } + } + public boolean projectExists( Credential oauth2, String projectName diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java index 4458192afa..1a294443bd 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java @@ -82,6 +82,7 @@ public class GitBridgeServer { */ public void start() { try { + bridge.checkDB(); jettyServer.start(); bridge.startSwapJob(); Log.info(Util.getServiceName() + "-Git Bridge server started");