@@ -120,24 +120,23 @@ def FirstNodeSettings(local):
120120 StartValidator (local )
121121#end define
122122
123- def download_blocks (local , bag : dict ):
123+ def download_blocks (local , bag : dict , downloads_path : str ):
124124 local .add_log (f"Downloading blocks from { bag ['from' ]} to { bag ['to' ]} " , "info" )
125- if not download_bag (local , bag ['bag' ]):
125+ if not download_bag (local , bag ['bag' ], downloads_path ):
126126 local .add_log ("Error downloading archive bag" , "error" )
127127 return
128128
129129
130- def download_master_blocks (local , bag : dict ):
130+ def download_master_blocks (local , bag : dict , downloads_path : str ):
131131 local .add_log (f"Downloading master blocks from { bag ['from' ]} to { bag ['to' ]} " , "info" )
132- if not download_bag (local , bag ['bag' ], download_all = False , download_file = lambda f : ':' not in f ['name' ]):
132+ if not download_bag (local , bag ['bag' ], downloads_path , download_all = False , download_file = lambda f : ':' not in f ['name' ]):
133133 local .add_log ("Error downloading master bag" , "error" )
134134 return
135135
136136
137- def download_bag (local , bag_id : str , download_all : bool = True , download_file : typing .Callable = None ):
137+ def download_bag (local , bag_id : str , downloads_path : str , download_all : bool = True , download_file : typing .Callable = None ):
138138 indexes = []
139139 local_ts_url = f"http://127.0.0.1:{ local .buffer .ton_storage .api_port } "
140- downloads_path = '/tmp/ts-downloads/'
141140
142141 resp = requests .post (local_ts_url + '/api/v1/add' , json = {'bag_id' : bag_id , 'download_all' : download_all , 'path' : downloads_path })
143142 if not resp .json ()['ok' ]:
@@ -201,6 +200,10 @@ def parse_block_value(local, block: str):
201200
202201def download_archive_from_ts (local ):
203202 archive_blocks = os .getenv ('ARCHIVE_BLOCKS' )
203+ downloads_path = '/var/ton-work/ts-downloads/'
204+ os .makedirs (downloads_path , exist_ok = True )
205+ subprocess .run (["chmod" , "o+wx" , downloads_path ])
206+
204207 if archive_blocks is None :
205208 return
206209 block_from , block_to = archive_blocks , None
@@ -241,17 +244,18 @@ def download_archive_from_ts(local):
241244 return
242245
243246 local .add_log (f"Downloading blockchain state for block { state_bag ['at_block' ]} " , "info" )
244- if not download_bag (local , state_bag ['bag' ]):
247+ if not download_bag (local , state_bag ['bag' ], downloads_path ):
245248 local .add_log ("Error downloading state bag" , "error" )
246249 return
247250
251+
248252 update_init_block (local , state_bag ['at_block' ])
249253 estimated_size = len (block_bags ) * 4 * 2 ** 30 + len (master_block_bags ) * 4 * 2 ** 30 * 0.2 # 4 GB per bag, 20% for master blocks
250254
251255 local .add_log (f"Downloading archive blocks. Rough estimate total blocks size is { int (estimated_size / 2 ** 30 )} GB" , "info" )
252256 with ThreadPoolExecutor (max_workers = 4 ) as executor :
253- futures = [executor .submit (download_blocks , local , bag ) for bag in block_bags ]
254- futures += [executor .submit (download_master_blocks , local , bag ) for bag in master_block_bags ]
257+ futures = [executor .submit (download_blocks , local , bag , downloads_path ) for bag in block_bags ]
258+ futures += [executor .submit (download_master_blocks , local , bag , downloads_path ) for bag in master_block_bags ]
255259 for future in as_completed (futures ):
256260 try :
257261 future .result ()
@@ -265,7 +269,6 @@ def download_archive_from_ts(local):
265269 import_dir = local .buffer .ton_db_dir + 'import/'
266270 os .makedirs (import_dir , exist_ok = True )
267271 states_dir = archive_dir + '/states'
268- downloads_path = '/tmp/ts-downloads/'
269272
270273 os .makedirs (states_dir , exist_ok = True )
271274 os .makedirs (import_dir , exist_ok = True )
@@ -275,7 +278,7 @@ def download_archive_from_ts(local):
275278 for bag in block_bags + master_block_bags :
276279 subprocess .run (f'mv { downloads_path } /{ bag ["bag" ]} /*/*/* { import_dir } ' , shell = True )
277280 # subprocess.run(['rm', '-rf', f"{downloads_path}/{bag['bag']}"])
278- subprocess .run (f'rm -rf { downloads_path } * ' , shell = True )
281+ subprocess .run (f'rm -rf { downloads_path } ' , shell = True )
279282
280283 stop_service (local , "ton_storage" ) # stop TS
281284 disable_service (local , "ton_storage" )
0 commit comments