public override void Update(TableStorage tableStorage, Action<string> output) { Migrate(tableStorage.Environment, Tables.Files.TableName, output, (key, value) => { var fileEtag = Guid.Parse(value["etag"].ToString()); value["etag"] = fileEtag.ToByteArray(); }); Migrate(tableStorage.Environment, Tables.Config.TableName, output, (key, value) => { var actualKey = key.ToString(); if (actualKey.StartsWith(RavenFileNameHelper.SyncNamePrefix, StringComparison.InvariantCultureIgnoreCase)) { string currentEtag = ((RavenJObject) value["metadata"])["FileETag"].ToString(); ((RavenJObject) value["metadata"])["FileETag"] = Etag.Parse(Guid.Parse(currentEtag).ToByteArray()).ToString(); } else if (actualKey.StartsWith(RavenFileNameHelper.SyncResultNamePrefix, StringComparison.InvariantCultureIgnoreCase)) { string currentEtag = ((RavenJObject) value["metadata"])["FileETag"].ToString(); ((RavenJObject) value["metadata"])["FileETag"] = Etag.Parse(Guid.Parse(currentEtag).ToByteArray()).ToString(); } else if (actualKey.StartsWith(SynchronizationConstants.RavenSynchronizationSourcesBasePath, StringComparison.InvariantCultureIgnoreCase)) { string currentEtag = ((RavenJObject) value["metadata"])["LastSourceFileEtag"].ToString(); ((RavenJObject) value["metadata"])["LastSourceFileEtag"] = Etag.Parse(Guid.Parse(currentEtag).ToByteArray()).ToString(); } }); UpdateSchemaVersion(tableStorage, output); }
public StorageActionsAccessor(TableStorage storage, Reference<WriteBatch> writeBatch, Reference<SnapshotReader> snapshot, IdGenerator generator, IBufferPool bufferPool, OrderedPartCollection<AbstractFileCodec> fileCodecs) : base(snapshot, generator, bufferPool) { this.storage = storage; this.writeBatch = writeBatch; this.fileCodecs = fileCodecs; }
public SchemaCreator(InMemoryRavenConfiguration configuration, TableStorage storage, Action<string> output, ILog log) { this.storage = storage; this.output = output; this.log = log; configuration.Container.SatisfyImportsOnce(this); }
public void UpdateSchemaVersion(TableStorage tableStorage, Action<string> output) { using (var tx = tableStorage.Environment.NewTransaction(TransactionFlags.ReadWrite)) { tx.ReadTree(Tables.Details.TableName).Add("schema_version", ToSchemaVersion); tx.Commit(); } tableStorage.SetDatabaseIdAndSchemaVersion(tableStorage.Id, ToSchemaVersion); }
public IdGenerator(TableStorage storage) { tableIds = new ConcurrentDictionary<string, int>(); using (var snapshot = storage.CreateSnapshot()) { var pages = storage.Pages.TableName; tableIds.TryAdd(pages, ReadLastIdFromTable(storage.Pages, snapshot)); var usage = storage.Usage.TableName; tableIds.TryAdd(usage, ReadLastIdFromTable(storage.Usage, snapshot)); var signatures = storage.Signatures.TableName; tableIds.TryAdd(signatures, ReadLastIdFromTable(storage.Signatures, snapshot)); } }
public abstract void Update(TableStorage tableStorage, Action<string> output);
public void Initialize() { bool runInMemory; bool.TryParse(settings["Raven/RunInMemory"], out runInMemory); var persistenceSource = runInMemory ? StorageEnvironmentOptions.CreateMemoryOnly() : CreateStorageOptionsFromConfiguration(path, settings); tableStorage = new TableStorage(persistenceSource, bufferPool); var schemaCreator = new SchemaCreator(configuration, tableStorage, Output, Log); schemaCreator.CreateSchema(); schemaCreator.SetupDatabaseIdAndSchemaVersion(); schemaCreator.UpdateSchemaIfNecessary(); SetupDatabaseId(); idGenerator = new IdGenerator(tableStorage); }
private static void CreateDetailsSchema(Transaction tx, TableStorage storage) { storage.Environment.CreateTree(tx, Tables.Details.TableName); }
private static void CreateFilesSchema(Transaction tx, TableStorage storage) { storage.Environment.CreateTree(tx, Tables.Files.TableName); storage.Environment.CreateTree(tx, storage.Files.GetIndexKey(Tables.Files.Indices.Count)); storage.Environment.CreateTree(tx, storage.Files.GetIndexKey(Tables.Files.Indices.ByEtag)); }
private static void CreatSignaturesSchema(Transaction tx, TableStorage storage) { storage.Environment.CreateTree(tx, Tables.Signatures.TableName); storage.Environment.CreateTree(tx, storage.Signatures.GetIndexKey(Tables.Signatures.Indices.Data)); storage.Environment.CreateTree(tx, storage.Signatures.GetIndexKey(Tables.Signatures.Indices.ByName)); }
private static void CreateConfigSchema(Transaction tx, TableStorage storage) { storage.Environment.CreateTree(tx, Tables.Config.TableName); }
private static void CreateUsageSchema(Transaction tx, TableStorage storage) { storage.Environment.CreateTree(tx, Tables.Usage.TableName); storage.Environment.CreateTree(tx, storage.Usage.GetIndexKey(Tables.Usage.Indices.ByFileName)); storage.Environment.CreateTree(tx, storage.Usage.GetIndexKey(Tables.Usage.Indices.ByFileNameAndPosition)); }
public void Initialize(UuidGenerator generator, OrderedPartCollection<AbstractFileCodec> codecs) { if (codecs == null) throw new ArgumentNullException("codecs"); fileCodecs = codecs; uuidGenerator = generator; bool runInMemory; bool.TryParse(settings[Constants.RunInMemory], out runInMemory); var persistenceSource = runInMemory ? StorageEnvironmentOptions.CreateMemoryOnly() : CreateStorageOptionsFromConfiguration(path, settings); tableStorage = new TableStorage(persistenceSource, bufferPool); var schemaCreator = new SchemaCreator(configuration, tableStorage, Output, Log); schemaCreator.CreateSchema(); schemaCreator.SetupDatabaseIdAndSchemaVersion(); schemaCreator.UpdateSchemaIfNecessary(); SetupDatabaseId(); idGenerator = new IdGenerator(tableStorage); }
public StorageActionsAccessor(TableStorage storage, Reference<WriteBatch> writeBatch, SnapshotReader snapshot, IdGenerator generator, IBufferPool bufferPool) : base(snapshot, generator, bufferPool) { this.storage = storage; this.writeBatch = writeBatch; }