swar / Swar-Chia-Plot-Manager

This is a Cross-Platform Plot Manager for Chia Plotting that is simple, easy-to-use, and reliable.
GNU General Public License v3.0
1.26k stars 388 forks source link

Latest SWAR broken? Jobs failing with destination directory free space issue: TypeError: 'in <string>' requires string as left operand, not NoneType #1049

Open Scorillo47 opened 3 years ago

Scorillo47 commented 3 years ago

Synced to the latest SWAR, jobs are failing 100%.

debug log shows the following stack:

2021-05-31 14:21:53 [INFO]: Checking for full destinations. Traceback (most recent call last): File "C:\chia\Swar-Chia-Plot-Manager\stateless-manager.py", line 104, in system_drives=system_drives, File "C:\chia\Swar-Chia-Plot-Manager\plotmanager\library\utilities\jobs.py", line 262, in monitor_jobs_to_start drives_free_space=drives_free_space, File "C:\chia\Swar-Chia-Plot-Manager\plotmanager\library\utilities\jobs.py", line 284, in start_work get_target_directories(job, drives_free_space=drives_free_space) File "C:\chia\Swar-Chia-Plot-Manager\plotmanager\library\utilities\jobs.py", line 26, in get_target_directories job = check_valid_destinations(job, drives_free_space) File "C:\chia\Swar-Chia-Plot-Manager\plotmanager\library\utilities\jobs.py", line 53, in check_valid_destinations drive = identify_drive(file_path=directory, drives=drives) File "C:\chia\Swar-Chia-Plot-Manager\plotmanager\library\utilities\processes.py", line 136, in identify_drive if drive not in file_path: TypeError: 'in ' requires string as left operand, not NoneType

All paths in config.yaml are valid.

(chia1) C:\chia\Swar-Chia-Plot-Manager>git log -1 commit a4621ff21f7ef7659aa02e82036aa038ae832712 (HEAD -> main, tag: v.0.1.0, origin/main, origin/HEAD) Merge: d5b25b1 e0d9ad4 Author: Swar Patel swar.m.patel@gmail.com Date: Wed May 19 22:17:45 2021 -0400

Merge pull request #584 from swar/development

v.0.1.0
Scorillo47 commented 3 years ago

I don't know where the regression was introduced but it seems that the current version of SWAR assumes only local drives.

My destination folder is a network share, thus this code path fails to find any drives. This used to work previously

(processes.py, line 132):

def identify_drive(file_path, drives): if not file_path: return None for drive in drives: if drive not in file_path: continue return drive return None

Scorillo47 commented 3 years ago

Workaround for me is very simple. Add these two lines in identify_drive. NOTE: this won't work if your network drives is mapped to a local drive letter. A separate fix would be needed for that case

def identify_drive(file_path, drives): # Return network shares "as is" if file_path.startswith("\\\\"): return file_path if not file_path: return None for drive in drives: if drive not in file_path: continue return drive return None

andrewsno1 commented 3 years ago

I get the same error message. I am using Manjaro Linux.

Sometimes I can start the manager, sometimes I cannot (this error occurs). When the manager was able to start it crashes after a while.

So far, I did not understand why this happens.

andrewsno1 commented 3 years ago

I get the same error message. I am using Manjaro Linux.

Sometimes I can start the manager, sometimes I cannot (this error occurs). When the manager was able to start it crashes after a while.

So far, I did not understand why this happens.

I had left the second example job in the config file. The manager works fine since I removed that job. I guess the manager simply did not find the drives that were in that configuration and crashed.