@Override
	public ItemCheckoutStatus checkout(String parentPath, String itemName,
			CheckoutType checkoutType, String projectPath) throws IOException {
		synchronized (syncObject) {
			validate();
			repository.validateWritePrivilege(currentUser);
			RepositoryFile rf = getFile(parentPath, itemName);
			if (rf == null) {
				throw new FileNotFoundException(itemName + " not found in repository");
			}
			ItemCheckoutStatus checkoutStatus = rf.checkout(checkoutType, currentUser, projectPath);
			if (checkoutStatus != null &&
				checkoutStatus.getCheckoutType() == CheckoutType.TRANSIENT) {
				addTransientCheckout(rf.getPathname(), checkoutStatus);
			}
			return checkoutStatus;
		}
	}
Verify that the client is active and continuing to read events
Ghidra/Features/GhidraServer/src/main/java/ghidra/server/remote/RepositoryHandleImpl.java