Merge "Counterpart of https://vanadium-review.googlesource.com/16748"
diff --git a/impl/google/namespace/jni.go b/impl/google/namespace/jni.go
index 6670de7..5988465 100644
--- a/impl/google/namespace/jni.go
+++ b/impl/google/namespace/jni.go
@@ -15,6 +15,7 @@
 	"v.io/v23/namespace"
 	"v.io/v23/naming"
 	"v.io/v23/security/access"
+	"v.io/v23/verror"
 	jchannel "v.io/x/jni/impl/google/channel"
 	jutil "v.io/x/jni/util"
 	jcontext "v.io/x/jni/v23/context"
@@ -82,6 +83,12 @@
 		defer freeFunc()
 
 		for globReply := range entryChan {
+			// Check for a canceled context error, we surface these as EOF.
+			if errorEntry, ok := globReply.(*naming.GlobReplyError); ok {
+				if verr, ok := errorEntry.Value.Error.(verror.E); ok && verr.ID == verror.ErrCanceled.ID {
+					break
+				}
+			}
 			jGlobReply, err := jutil.JVomCopy(env, globReply, jGlobReplyClass)
 			if err != nil {
 				log.Printf("Couldn't convert Go glob result %v to Java\n", globReply)
diff --git a/impl/google/services/syncbase/jni.go b/impl/google/services/syncbase/jni.go
index d3b3374..87a3e0f 100644
--- a/impl/google/services/syncbase/jni.go
+++ b/impl/google/services/syncbase/jni.go
@@ -110,6 +110,10 @@
 		jutil.JThrowV(env, err)
 		return nil
 	}
+	if err := service.AddNames(ctx, s); err != nil {
+		jutil.JThrowV(env, err)
+		return nil
+	}
 	jNewCtx, err := jcontext.JavaContext(env, newCtx)
 	if err != nil {
 		jutil.JThrowV(env, err)