Beispiel #1
0
		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;
        }
Beispiel #3
0
		public SchemaCreator(InMemoryRavenConfiguration configuration, TableStorage storage, Action<string> output, ILog log)
		{
			this.storage = storage;
			this.output = output;
			this.log = log;

			configuration.Container.SatisfyImportsOnce(this);
		}
Beispiel #4
0
		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);
		}
Beispiel #5
0
        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));
            }
        }
Beispiel #6
0
		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);
        }
Beispiel #8
0
		private static void CreateDetailsSchema(Transaction tx, TableStorage storage)
		{
			storage.Environment.CreateTree(tx, Tables.Details.TableName);
		}
Beispiel #9
0
		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));
		}
Beispiel #10
0
		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));
		}
Beispiel #11
0
		private static void CreateConfigSchema(Transaction tx, TableStorage storage)
		{
			storage.Environment.CreateTree(tx, Tables.Config.TableName);
		}
Beispiel #12
0
		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));
		}
Beispiel #13
0
        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;
 }