mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-10-23 05:51:39 +00:00
Enhance ServeSession to fetch git metadata before initial patch computation
- Updated the `ServeSession:start` function to retrieve git metadata from the API before computing the initial patch. This change ensures that the server information includes relevant git details, improving synchronization accuracy. - Disabled the polling feature in `App:startSyncReminderPolling` due to performance concerns, as it was deemed unnecessary. - Adjusted the API service to set `git_metadata` to `None` instead of computing it, streamlining the response handling. These changes aim to optimize the synchronization process and reduce unnecessary API calls.
This commit is contained in:
parent
8b4573b578
commit
491d433a6b
3 changed files with 55 additions and 64 deletions
|
|
@ -542,6 +542,10 @@ function App:checkSyncReminder()
|
||||||
end
|
end
|
||||||
|
|
||||||
function App:startSyncReminderPolling()
|
function App:startSyncReminderPolling()
|
||||||
|
-- Feature disabled: polling GET /api/rojo every 30s is expensive and
|
||||||
|
-- the setting was hidden behind showNotifications anyway.
|
||||||
|
do return end
|
||||||
|
|
||||||
if
|
if
|
||||||
self.syncReminderPollingThread ~= nil
|
self.syncReminderPollingThread ~= nil
|
||||||
or Settings:get("syncReminderMode") == "None"
|
or Settings:get("syncReminderMode") == "None"
|
||||||
|
|
|
||||||
|
|
@ -350,6 +350,14 @@ function ServeSession:start()
|
||||||
|
|
||||||
self.__serverInfo = serverInfo
|
self.__serverInfo = serverInfo
|
||||||
|
|
||||||
|
self:setLoadingText("Fetching git metadata...")
|
||||||
|
return self.__apiContext
|
||||||
|
:getGitMetadata()
|
||||||
|
:andThen(function(gitMeta)
|
||||||
|
serverInfo.gitMetadata = gitMeta
|
||||||
|
end)
|
||||||
|
:catch(function() end)
|
||||||
|
:andThen(function()
|
||||||
local computePatchClock = os.clock()
|
local computePatchClock = os.clock()
|
||||||
Log.debug("[TIMING] __computeInitialPatch() starting")
|
Log.debug("[TIMING] __computeInitialPatch() starting")
|
||||||
return self:__computeInitialPatch(serverInfo):andThen(function(catchUpPatch)
|
return self:__computeInitialPatch(serverInfo):andThen(function(catchUpPatch)
|
||||||
|
|
@ -393,6 +401,7 @@ function ServeSession:start()
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
end)
|
||||||
:andThen(function()
|
:andThen(function()
|
||||||
Log.debug(
|
Log.debug(
|
||||||
"[TIMING] ServeSession:start() total elapsed ({} ms)",
|
"[TIMING] ServeSession:start() total elapsed ({} ms)",
|
||||||
|
|
|
||||||
|
|
@ -404,28 +404,6 @@ impl ApiService {
|
||||||
Vec::new()
|
Vec::new()
|
||||||
};
|
};
|
||||||
|
|
||||||
let git_metadata = if let Some(repo_root) = self.serve_session.git_repo_root() {
|
|
||||||
let tree_handle = self.serve_session.tree_handle();
|
|
||||||
let repo_root = repo_root.to_owned();
|
|
||||||
let initial_head = self
|
|
||||||
.serve_session
|
|
||||||
.initial_head_commit()
|
|
||||||
.map(|s| s.to_owned());
|
|
||||||
let t = Instant::now();
|
|
||||||
let result = tokio::task::spawn_blocking(move || {
|
|
||||||
crate::git::compute_git_metadata(&tree_handle, &repo_root, initial_head.as_deref())
|
|
||||||
})
|
|
||||||
.await
|
|
||||||
.ok();
|
|
||||||
log::debug!(
|
|
||||||
"[TIMING] handle_api_rojo: compute_git_metadata {}ms",
|
|
||||||
t.elapsed().as_millis()
|
|
||||||
);
|
|
||||||
result
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
};
|
|
||||||
|
|
||||||
log::debug!(
|
log::debug!(
|
||||||
"[TIMING] handle_api_rojo: total {}ms",
|
"[TIMING] handle_api_rojo: total {}ms",
|
||||||
handler_start.elapsed().as_millis()
|
handler_start.elapsed().as_millis()
|
||||||
|
|
@ -446,7 +424,7 @@ impl ApiService {
|
||||||
sync_scripts_only: self.serve_session.sync_scripts_only(),
|
sync_scripts_only: self.serve_session.sync_scripts_only(),
|
||||||
ignore_hidden_services,
|
ignore_hidden_services,
|
||||||
visible_services,
|
visible_services,
|
||||||
git_metadata,
|
git_metadata: None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue