git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v5 3/8] remote-odb: implement remote_odb_get_direct()

From
Christian Couder <christian.couder@gmail.com>
Date
Sep 25, 2018, 11:53 UTC
Message-ID
<20180925115341.19248-4-chriscool@tuxfamily.org>
In-Reply-To
<20180925115341.19248-1-chriscool@tuxfamily.org>
From: Christian Couder <christian.couder@gmail.com>

This is implemented only in the promisor remote mode for now by calling fetch_objects().

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 odb-helper.c | 15 +++++++++++++++
 odb-helper.h |  3 +++
 remote-odb.c | 17 +++++++++++++++++
 remote-odb.h |  1 +
 4 files changed, 36 insertions(+)
diff --git a/odb-helper.c b/odb-helper.c
index b4d403ffa9..6458fe2e32 100644
--- a/odb-helper.c
+++ b/odb-helper.c
@@ -4,6 +4,7 @@
 #include "odb-helper.h"
 #include "run-command.h"
 #include "sha1-lookup.h"
+#include "fetch-object.h"
 
 struct odb_helper *odb_helper_new(const char *name, int namelen)
 {
@@ -14,3 +15,17 @@ struct odb_helper *odb_helper_new(const char *name, int namelen)
 
 	return o;
 }
+
+int odb_helper_get_direct(struct odb_helper *o,
+			  const struct object_id *oids,
+			  int oid_nr)
+{
+	int res;
+	uint64_t start = getnanotime();
+
+	res = fetch_objects(o->remote, oids, oid_nr);
+
+	trace_performance_since(start, "odb_helper_get_direct");
+
+	return res;
+}
diff --git a/odb-helper.h b/odb-helper.h
index 4b792a3896..950f9f9cd1 100644
--- a/odb-helper.h
+++ b/odb-helper.h
@@ -15,5 +15,8 @@ struct odb_helper {
 };
 
 extern struct odb_helper *odb_helper_new(const char *name, int namelen);
+extern int odb_helper_get_direct(struct odb_helper *o,
+				 const struct object_id *oids,
+				 int oid_nr);
 
 #endif /* ODB_HELPER_H */
diff --git a/remote-odb.c b/remote-odb.c
index 03be54ba2e..53900203ae 100644
--- a/remote-odb.c
+++ b/remote-odb.c
@@ -89,3 +89,20 @@ int has_remote_odb(void)
 {
 	return !!find_odb_helper(NULL);
 }
+
+int remote_odb_get_direct(const struct object_id *oids, int oid_nr)
+{
+	struct odb_helper *o;
+
+	trace_printf("trace: remote_odb_get_direct: nr: %d", oid_nr);
+
+	remote_odb_init();
+
+	for (o = helpers; o; o = o->next) {
+		if (odb_helper_get_direct(o, oids, oid_nr) < 0)
+			continue;
+		return 0;
+	}
+
+	return -1;
+}
diff --git a/remote-odb.h b/remote-odb.h
index 4c7b13695f..221305d1b6 100644
--- a/remote-odb.h
+++ b/remote-odb.h
@@ -3,5 +3,6 @@
 
 extern struct odb_helper *find_odb_helper(const char *remote);
 extern int has_remote_odb(void);
+extern int remote_odb_get_direct(const struct object_id *oids, int oid_nr);
 
 #endif /* REMOTE_ODB_H */
-- 
2.19.0.278.gca5b891cac
Previous: Christian CouderNext: Christian Couder
Message 4 of 12 in “Introducing remote ODBs”
  1. 0/8 Introducing remote ODBsChristian Couder, Sep 25, 2018
  2. 1/8 fetch-object: make functions return an error codeChristian Couder, Sep 25, 2018
  3. 2/8 Add initial remote odb supportChristian Couder, Sep 25, 2018
  4. 3/8 remote-odb: implement remote_odb_get_direct()Christian Couder, Sep 25, 2018
  5. 4/8 remote-odb: add remote_odb_reinit()Christian Couder, Sep 25, 2018
  6. 6/8 Use odb.origin.partialclonefilter instead of core.partialclonefilterChristian Couder, Sep 25, 2018
  7. 5/8 Use remote_odb_get_direct() and has_remote_odb()Christian Couder, Sep 25, 2018
  8. 8/8 Documentation/config: add odb.<name>.promisorRemoteChristian Couder, Sep 25, 2018
  9. Duy NguyenSep 25, 2018
  10. 7/8 t0410: test fetching from many promisor remotesChristian Couder, Sep 25, 2018
  11. SZEDER GáborSep 28, 2018
  12. Christian CouderSep 28, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.