Removed unnecessary CoCoL channel scope

This commit is contained in:
Carl Johnsen
2024-12-10 10:28:44 +01:00
parent 5bc12e3d46
commit c13482cf4c
@@ -332,47 +332,44 @@ namespace Duplicati.Library.Main.Operation
CreateDirectoryStructure(database, m_options, m_result);
database.SetResult(m_result);
using (new ChannelScope())
{
// Create the channels between BlockManager and FileProcessor
var fileprocessor_requests = new Channel<Restore.BlockRequest>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<Restore.BlockRequest>(buffersize:Restore.Channels.BufferSize)).ToArray();
var fileprocessor_responses = new Channel<byte[]>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<byte[]>(buffersize:Restore.Channels.BufferSize)).ToArray();
// Create the channels between BlockManager and FileProcessor
var fileprocessor_requests = new Channel<Restore.BlockRequest>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<Restore.BlockRequest>(buffersize:Restore.Channels.BufferSize)).ToArray();
var fileprocessor_responses = new Channel<byte[]>[m_options.RestoreFileProcessors].Select(_ => ChannelManager.CreateChannel<byte[]>(buffersize:Restore.Channels.BufferSize)).ToArray();
// Create the process network
Restore.Channels channels = new ();
var filelister = Restore.FileLister.Run(channels, database, m_options, m_result);
var fileprocessors = Enumerable.Range(0, m_options.RestoreFileProcessors).Select(i => Restore.FileProcessor.Run(channels, database, fileprocessor_requests[i], fileprocessor_responses[i], m_options, m_result)).ToArray();
var blockmanager = Restore.BlockManager.Run(channels, database, m_options, fileprocessor_requests, fileprocessor_responses);
var volumecache = Restore.VolumeManager.Run(channels, database, backend, m_options, m_result);
var volumedownloaders = Enumerable.Range(0, m_options.RestoreVolumeDownloaders).Select(i => Restore.VolumeDownloader.Run(channels, database, m_options, m_result)).ToArray();
var volumedecryptors = Enumerable.Range(0, m_options.RestoreVolumeDecryptors).Select(i => Restore.VolumeDecryptor.Run(channels, m_options)).ToArray();
var volumedecompressors = Enumerable.Range(0, m_options.RestoreVolumeDecompressors).Select(i => Restore.VolumeDecompressor.Run(channels, m_options)).ToArray();
// Create the process network
Restore.Channels channels = new ();
var filelister = Restore.FileLister.Run(channels, database, m_options, m_result);
var fileprocessors = Enumerable.Range(0, m_options.RestoreFileProcessors).Select(i => Restore.FileProcessor.Run(channels, database, fileprocessor_requests[i], fileprocessor_responses[i], m_options, m_result)).ToArray();
var blockmanager = Restore.BlockManager.Run(channels, database, m_options, fileprocessor_requests, fileprocessor_responses);
var volumecache = Restore.VolumeManager.Run(channels, database, backend, m_options, m_result);
var volumedownloaders = Enumerable.Range(0, m_options.RestoreVolumeDownloaders).Select(i => Restore.VolumeDownloader.Run(channels, database, m_options, m_result)).ToArray();
var volumedecryptors = Enumerable.Range(0, m_options.RestoreVolumeDecryptors).Select(i => Restore.VolumeDecryptor.Run(channels, m_options)).ToArray();
var volumedecompressors = Enumerable.Range(0, m_options.RestoreVolumeDecompressors).Select(i => Restore.VolumeDecompressor.Run(channels, m_options)).ToArray();
// Wait for the network to complete
Task[] all =
[
filelister,
..fileprocessors,
blockmanager,
volumecache,
..volumedownloaders,
..volumedecryptors,
..volumedecompressors
];
// Wait for the network to complete
Task[] all =
[
filelister,
..fileprocessors,
blockmanager,
volumecache,
..volumedownloaders,
..volumedecryptors,
..volumedecompressors
];
// Start the progress updater
var kill_updater = new CancellationTokenSource();
var updater = Task.Run(async () => {
while (true)
{
m_result.OperationProgressUpdater.UpdatefilesProcessed(m_result.RestoredFiles, m_result.SizeOfRestoredFiles);
await Task.Delay(1000);
}
}, kill_updater.Token);
// Start the progress updater
var kill_updater = new CancellationTokenSource();
var updater = Task.Run(async () => {
while (true)
{
m_result.OperationProgressUpdater.UpdatefilesProcessed(m_result.RestoredFiles, m_result.SizeOfRestoredFiles);
await Task.Delay(1000);
}
}, kill_updater.Token);
Task.WhenAll(all).Wait();
kill_updater.Cancel();
}
Task.WhenAll(all).Wait();
kill_updater.Cancel();
if (m_result.TaskControlRendevouz() == TaskControlState.Stop)
return;