4242from vineyard ._C import VineyardException
4343from vineyard ._C import _connect
4444from vineyard .core .builder import BuilderContext
45+ from vineyard .core .builder import get_current_builders
4546from vineyard .core .builder import put
4647from vineyard .core .resolver import ResolverContext
4748from vineyard .core .resolver import get
@@ -839,10 +840,11 @@ def _put_internal(
839840 builder : Optional [BuilderContext ] = None ,
840841 persist : bool = False ,
841842 name : Optional [str ] = None ,
843+ as_async : bool = False ,
842844 ** kwargs ,
843845 ):
844846 try :
845- return put (self , value , builder , persist , name , ** kwargs )
847+ return put (self , value , builder , persist , name , as_async , ** kwargs )
846848 except NotEnoughMemoryException as exec :
847849 with envvars (
848850 {'VINEYARD_RPC_SKIP_RETRY' : '1' , 'VINEYARD_IPC_SKIP_RETRY' : '1' }
@@ -868,7 +870,7 @@ def _put_internal(
868870 host , port = meta [instance_id ]['rpc_endpoint' ].split (':' )
869871 self ._rpc_client = _connect (host , port )
870872 self .compression = previous_compression_state
871- return put (self , value , builder , persist , name , ** kwargs )
873+ return put (self , value , builder , persist , name , as_async , ** kwargs )
872874
873875 @_apply_docstring (put )
874876 def put (
@@ -881,16 +883,28 @@ def put(
881883 ** kwargs ,
882884 ):
883885 if as_async :
886+
884887 def _default_callback (future ):
885888 try :
886889 result = future .result ()
887- print (f"Successfully put object { result } " , flush = True )
890+ if isinstance (result , ObjectID ):
891+ print (f"Successfully put object { result } " , flush = True )
892+ elif isinstance (result , ObjectMeta ):
893+ print (f"Successfully put object { result .id } " , flush = True )
888894 except Exception as e :
889895 print (f"Failed to put object: { e } " , flush = True )
890896
897+ current_builder = builder or get_current_builders ()
898+
891899 thread_pool = self .put_thread_pool
892900 result = thread_pool .submit (
893- self ._put_internal , value , builder , persist , name , ** kwargs
901+ self ._put_internal ,
902+ value ,
903+ current_builder ,
904+ persist ,
905+ name ,
906+ as_async = True ,
907+ ** kwargs ,
894908 )
895909 result .add_done_callback (_default_callback )
896910 return result
0 commit comments