[Opensim-dev] Opensim 0.7 tidying up the MySQL DB connection string

Melanie melanie at t-data.com
Sat Jun 19 16:57:17 UTC 2010


Hi,

3600 was an arbitrary limit Frank used. It's not an upper bound. He
used it because he thought 0 means "use default", not "infinite".

I don't know how the old dll dan work with the new Migrations, does
the old dll then also contain a MySqlScript class?
If not, why aren't there loading/linking errors with the old dll?

Melanie

Diva Canto wrote:
> A few points to clarify the situation:
> 
> - The rollback I'm talking about is purely on the 0.7-post-fixes branch, 
> and for the purposes of the 0.7 release. I'm fine with continuing to 
> push on the new driver in the master branch.
> 
> - "Rolling back" is as simple as replacing the new MySql.Data.dll with 
> the old one. No changes in the migration code seem to be necessary.
> 
> Now for the master branch's debugging of the new MySql driver:
> 
> - The point above is something to be noted in the puzzle surrounding the 
> new MySql driver.
> 
> - The connection string variable Default Command Timeout does not work 
> here; several people tried it, including myself.
> 
> - MySqlScript seems to be the culprit. I think it's being used by the 
> new migrations code that you wrote, Alex. I can see here
> http://www.devart.com/dotconnect/mysql/docs/Devart.Data.MySql~Devart.Data.MySql.MySqlScript_members.html
> that is has a programatic interface for setting the timeout. So maybe we 
> need to do that. I haven't been able to find references for the limit 
> 3600 secs that Frank mentioned. This needs to be completely clarified. 
> Thanks.
> 
> 
> On 6/18/2010 3:16 PM, Melanie wrote:
>> The long run times can't be avoided. MySQL alter table is
>> excruciatingly slow with the huge BLOBs opensim uses.
>>
>> We have to live with it.
>>
>> I think there may be middle road between rollback and error. I'll
>> look at it.
>>
>> Melanie
>>
>> Alex Ra wrote:
>>    
>>> DC>  Since you were the one who wrote the newly introduced
>>> DC>  MySqlMigrations class, which uses the MySqlScript class, can you
>>> DC>  please explain how we can get around the issue that Frank is
>>> DC>  talking about?
>>>
>>> Hello Diva,
>>>
>>> I haven't looked how the timeouts are implemented in the driver,
>>> the code I added/modified doesn't do anything about them.
>>>
>>> MySqlScript class is ONLY needed if a proc needs to be defined.
>>> Otherwise, the common Migration class can be used for mySQL just as
>>> for all other DBs.
>>>
>>> I'm not sure the regular MySqlCommand would work any
>>> better with huge timeouts than MySqlScript.  If the timeout can be
>>> extended beyond the "default default" of 30 sec but then hits a
>>> limit, it sounds to me more like some server-side limitation
>>> then something in MySqlScript.
>>>
>>> I can look at the driver sources, but not today.
>>>
>>> Re rolling back to the old driver:  the code changes that accompanied
>>> the driver update can be found in r/12794, r/12795.  The converter
>>> function in DBGuids.cs is supposed to convert between UUIDs and the
>>> DB-specific representation more or less regardless of what the driver
>>> returns (string or Guid). So it should be possible to rollback the
>>> driver (or use "OldGuids" var) without actually touching the code.
>>> MySqlMigration would have to be removed, though.
>>>
>>> I wonder what could make the migration run so slow, may be it would
>>> make sense to look into the migration scripts and try to optimize them
>>> somehow (add/remove some indexes or whatever).  Most of the migration stuff is
>>> just about adding/changing columns and for all I know a server should be
>>> able to process quite a lot of data in 1 hour (like hundreds of
>>> thousands rows).
>>>
>>> Can Frank provide some details on what parts of the migration are
>>> especially slow?
>>>
>>> When people start migrating their DBs to 0.7, it would be nice to make
>>> sure the scripts are reasonably efficient.
>>>
>>>
>>> DC>  Since you were the one who wrote the newly introduced
>>> DC>  MySqlMigrations class, which uses the MySqlScript class, can you
>>> DC>  please explain how we can get around the issue that Frank is
>>> DC>  talking about? It looks like the MySqlScript class has some
>>> DC>  hardcoded timeouts. Frank says that we might be able to specify a
>>> DC>  timeout between 0 and 1 hour, but not more. Some DB migrations,
>>> DC>  especially assets, might take more than 1 hour.
>>>
>>> DC>  I'm really considering rolling back to using the old driver
>>> DC>  because this one is causing too much grief and confusion at this
>>> DC>  critical time when we want things to be stable.
>>> DC>
>>> DC>  Any light on this new driver, especially its limitations/bugs,
>>> DC>  and how we can overcome them, would be very much appreciated so
>>> DC>  that we can try to continue to use it in dev code.
>>>
>>> DC>  Thanks.
>>> DC>  Crista
>>>
>>>
>>> DC>  On 6/18/2010 10:57 AM, Frank Nichols wrote:
>>> DC>  The use of the MysqlScript class is at the heart of most of the
>>> DC>  problems I have seen with the migration of mysql databases from
>>> DC>  0.6.9 to 0.7.0. The problem seems to be that the default command
>>> DC>  timeout value for processing a sql statement with this class is 30
>>> DC>  seconds, which is far to short to alter a table inserting a column
>>> DC>  when there are hundreds of thousands of rows in that table.
>>>
>>> DC>  In researching this it appears that the devart version of the new
>>> DC>  MySql.data.dll has a version of the MysqlScript which allows you
>>> DC>  to set the command timeout programmatically, however the mysql
>>> DC>  version of this library does not have this property available. As
>>> DC>  far as I could see there is currently no way to set the command
>>> DC>  timeout. So, it would appear that automatic migrations are doomed
>>> DC>  to fail in any case where they take more than 30 seconds.
>>>
>>> DC>  Frank
>>>
>>> DC>  On Fri, Jun 18, 2010 at 7:13 AM, Michael Cerquoni<nebadon2025 at gmail.com>  wrote:
>>> DC>  I have to say so far this new MySQL connector has been absolutely
>>> DC>  nothing but trouble for Frank Nichols and myself testing Migration
>>> DC>  from 0.6.9 to 0.7,  All throughout the testing we have had nothing
>>> DC>  but failure after failure from this new MySQL connector that has
>>> DC>  been introduced.  It has been nearly impossible to move forward on
>>> DC>  to 0.7 because of this,  I have no doubt that this will be a major
>>> DC>  problem for everyone to migrate over if you have even what seems
>>> DC>  like the most minimal amounts of data.   At this time i really
>>> DC>  have to give this new connector a -1.   Can someone please explain
>>> DC>  to me why the Original MySQL connector that seemed to work
>>> DC>  perfectly for years has now been replaced with one that constantly
>>> DC>  times out during migrations and gives nothing but trouble with
>>> DC>  DNS, requires us to use additional connection string settings, and
>>> DC>  basiclly makes moving on to 0.7 impossible for myself and others??
>>> DC>  I must be missing something here!
>>>
>>>
>>> DC>  On Fri, Jun 18, 2010 at 6:06 AM, AlexRa<info at adeptsql.com>  wrote:
>>>
>>> AA>>  But I note that I has "pooling=false;" in my own string though its
>>> AA>>  not been in the example ini files for a while.  Anyone know what this
>>> AA>>  does and if its wise to keep it in the string if I had a working
>>> AA>>  0.6.9 system with it there before?
>>>
>>> DC>  Hello Ai,
>>>
>>> DC>  Can't tell you why the "pooling=false;" was there in the 1st place, but
>>> DC>  I've noticed that it did cause connection failures on a Windows box during
>>> DC>  performance testing (thousands mySQL requests in a loop, each with
>>> DC>  connect/disconnect). The error didn't happen without the "pooling=false;"
>>> DC>  option. I don't know if that affects mySQL on Linux as well.
>>>
>>> DC>  Best regards,
>>>
>>> DC>  Alex
>>>
>>>
>>> DC>  _______________________________________________
>>> DC>  Opensim-dev mailing list
>>> DC>  Opensim-dev at lists.berlios.de
>>> DC>  https://lists.berlios.de/mailman/listinfo/opensim-dev
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> Best regards,
>>>
>>> Alex
>>>
>>> _______________________________________________
>>> Opensim-dev mailing list
>>> Opensim-dev at lists.berlios.de
>>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>>
>>>
>>>      
>> _______________________________________________
>> Opensim-dev mailing list
>> Opensim-dev at lists.berlios.de
>> https://lists.berlios.de/mailman/listinfo/opensim-dev
>>
>>    
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
> 
> 



More information about the Opensim-dev mailing list