Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0004174opensim[REGION] OpenSim Corepublic2009-09-22 12:092011-08-14 15:52
Reporterjhurliman 
Assigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
Statuspatch feedbackResolutionopen 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0004174: Implements a generic key/value storage
DescriptionAs discussed in the mailing list thread at <https://lists.berlios.de/pipermail/opensim-dev/2009-September/007599.html>, [^] this adds an IGenericDataService connector, an IGenericData data interface, and storage implementations for MySQL, SQLite, and MSSQL.
Additional InformationThe purpose of this storage system is to allow third party plugins to store additional columns of data in the region store or UGAIM stores without having to modify the existing tables. It is *not* intended to be a scalable semi-structured data backend, a next generation cloud service, or a fault-tolerant storage cluster.

The Get() method allows scoped or global queries, and does not automatically force scope. This allows flexibility for meta-plugins (such as doing operations on all of the key/value pairs in the store), but assumes the plugin developer will use a unique namespace for the scope parameter.
TagsNo tags attached.
Git Revision or version number0
Run ModeStandalone (1 Region) , Standalone (Multiple Regions) , Grid (1 Region per Sim) , Grid (Multiple Regions per Sim)
Physics EngineOther
Script Engine
EnvironmentMono / Linux32, Mono / Linux64, Mono / Windows, Mono / OSX, .NET / Windows32, .NET / Windows64
Mono VersionNone
Viewer
Attached Filespatch file icon Implemented-the-generic-data-store.patch [^] (35,645 bytes) 2009-09-22 12:09 [Show Content]

- Relationships

-  Notes
(0013599)
melanie (administrator)
2009-09-22 12:11

There is a namespace error on the service. rest of it looks good. There are no remote connectors or handlers yet.
(0013600)
jhurliman (manager)
2009-09-22 12:22

Thanks for the catch. Here is a reference snippet for loading an instance of the generic data store. It looks more or less identical to the other service loading code.

        private IGenericDataService GetGenericDataService(IConfigSource config)
        {
            IConfig genericDataConfig = config.Configs["GenericDataService"];
            if (genericDataConfig == null)
                throw new Exception("No GenericDataService section in config file");

            string genericDataService = genericDataConfig.GetString("LocalServiceModule", String.Empty);

            Object[] args = new Object[] { config };
            return ServerUtils.LoadPlugin<IGenericDataService>(genericDataService, args);
        }
(0013602)
melanie (administrator)
2009-09-22 13:07

There really should be that "Realm" parameter (table name). For compatibility and flexibility. Why did you strip that out?
(0013603)
jhurliman (manager)
2009-09-22 14:02

I didn't strip anything out, this is all new code. Can you describe what a "Realm" parameter is, and point to an example of how I can use it?
(0013618)
jhurliman (manager)
2009-09-24 16:51

I just looked into the Realm stuff and it doesn't appear to be functional in OpenSim. You can define any table name you want for each table (deviating from the standard industry practice of a user-defined global table prefix), but if you choose anything other than the "correct" name for each table migrations will break.

I think the best path would be to commit the key/value store without Realm support and then revisit what the original intention was with that parameter and how to make it functional. Along with the namespace fix Melanie spotted I also made a fix to the MySQL and MSSQL .sql files after some more testing, so I need to regenerate the patch.
(0013620)
melanie (administrator)
2009-09-24 23:39

The Realm support is specifically to break out of the straitjacket of Migrations. Migrations will happily convert the "standard" tables, but not touch whatever table data was redirected to.
From a large hosting/mass hosting POV, you need to be able to run multiple servers off multiple tablesets and also need to have control over what migration, if any, are performed.
This prevents a migration "sneaking up" on the grid operator, since their table versions will need them specifically and manually applied. This is a requirement for a proper hosting quality control and downtime scheduling. Therefore, "Realm" is working as intended.
(0014032)
Revolution (reporter)
2009-11-01 06:09

Any progress on this patch?
(0019553)
makopoppo (manager)
2011-08-14 15:52

I don't know if this patch is working but, as long as I saw the discussion in the mailing-list, there are several agree post. Probably just waiting for re-writing or comment from the submitter.

- Issue History
Date Modified Username Field Change
2009-09-22 12:09 jhurliman New Issue
2009-09-22 12:09 jhurliman File Added: Implemented-the-generic-data-store.patch
2009-09-22 12:09 jhurliman Git Revision => 0
2009-09-22 12:09 jhurliman SVN Revision => 0
2009-09-22 12:09 jhurliman Run Mode => Standalone (1 Region) , Standalone (Multiple Regions) , Grid (1 Region per Sim) , Grid (Multiple Regions per Sim)
2009-09-22 12:09 jhurliman Physics Engine => Other
2009-09-22 12:09 jhurliman Environment => Mono / Linux32, Mono / Linux64, Mono / Windows, Mono / OSX, .NET / Windows32, .NET / Windows64
2009-09-22 12:09 jhurliman Mono Version => None
2009-09-22 12:11 melanie Note Added: 0013599
2009-09-22 12:22 jhurliman Note Added: 0013600
2009-09-22 13:07 melanie Note Added: 0013602
2009-09-22 14:02 jhurliman Note Added: 0013603
2009-09-24 16:51 jhurliman Note Added: 0013618
2009-09-24 23:39 melanie Note Added: 0013620
2009-11-01 06:09 Revolution Note Added: 0014032
2011-08-14 15:52 makopoppo Note Added: 0019553
2011-08-14 15:52 makopoppo Status new => patch feedback


Copyright © 2000 - 2012 MantisBT Group
Powered by Mantis Bugtracker