Пример #1
0
        private bool InstallSnapshot(ClusterOperationContext context, CancellationToken token)
        {
            var txw = context.Transaction.InnerTransaction;

            var fileName = $"snapshot.{Guid.NewGuid():N}";
            var filePath = context.Environment.Options.DataPager.Options.TempPath.Combine(fileName);

            using (var temp = new StreamsTempFile(filePath.FullPath, context.Environment))
                using (var stream = temp.StartNewStream())
                    using (var remoteReader = _connection.CreateReaderToStream(stream))
                    {
                        if (ReadSnapshot(remoteReader, context, txw, dryRun: true, token) == false)
                        {
                            return(false);
                        }

                        stream.Seek(0, SeekOrigin.Begin);
                        using (var fileReader = new StreamSnapshotReader(stream))
                        {
                            ReadSnapshot(fileReader, context, txw, dryRun: false, token);
                        }
                    }

            return(true);
        }