Chat log from the meeting on 2024-04-02

From OpenSimulator

Jump to: navigation, search
[11:12 AM PT]  Ubit Umarov: welcome :)
[11:12 AM PT]  Ubit Umarov: well about code changes... yes there where a few...
[11:13 AM PT]  Lyr Lobo chuckles
[11:14 AM PT]  Ubit Umarov: some to reduce of our power bill saving a few ns of cpu
[11:15 AM PT]  Ubit Umarov: on sending of http headers.  just doing direct copies of thigns we know are ascII
[11:15 AM PT]  Ubit Umarov: and on a reusable array..
[11:15 AM PT]  Ubit Umarov: so yeah.. some ns savings.. :)
[11:16 AM PT]  Ubit Umarov: did (again) remove the default copy of system.drawing.common that was jsut a cpoy of the .win one
[11:17 AM PT]  Ubit Umarov: runprebuild.bat and .sh should copy the right one..
[11:17 AM PT]  Ubit Umarov: did forbid some chars on the region name of map search
[11:18 AM PT]  Gavin.Hird such as?
[11:18 AM PT]  Ubit Umarov: for now  .,:;\/
[11:18 AM PT]  Kayaker Magic: People love their apostrophes and spaces
[11:18 AM PT]  Ubit Umarov: the 11 is 1
[11:18 AM PT]  Ubit Umarov: \\ is \
[11:18 AM PT]  Gavin.Hird ok
[11:19 AM PT]  Ubit Umarov: myregion.north   will not be found
[11:19 AM PT]  Ubit Umarov: if anyone had such names
[11:19 AM PT]  Ubit Umarov: in fact forbidden at sl..
[11:19 AM PT]  Gavin.Hird but east andwest is still allowed?
[11:19 AM PT]  Ubit Umarov: yeap space works
[11:19 AM PT]  Vincent.Sylvester Region names should really only be A-z0-9_ and spaces, dots have always been broken due to it constituting a url
[11:20 AM PT]  Ubit Umarov: well on making a uri string for map search, etc, now those are forbidden
[11:21 AM PT]  Joe Magarac: If you want a set of rules, use the ones for valid domain names. There are parsers for those. They catch things such as homoglyphs due to mixed alphabets, forward/reverse in the same string, etc.
[11:21 AM PT]  Ubit Umarov: and finally added store of linksetdata on the dbs, inventories and oars
[11:21 AM PT]  Ubit Umarov: well untested :P
[11:22 AM PT]  Ubit Umarov: on dbs it is stored in a binary form ( blob )
[11:22 AM PT]  Vincent.Sylvester And it is just region names, urls still work in world map search. There is a deeper reason to this too, it was a potential spam vector
[11:22 AM PT]  Ubit Umarov: and on xml that baser64 encoded
[11:22 AM PT]  Ubit Umarov: ( yes ugly..  but xml is ugly anyways )
[11:23 AM PT]  Vincent.Sylvester Should parsing regions.ini not throw an exception if a bad char is found though?
[11:23 AM PT]  Vincent.Sylvester Request user supply a different name or something
[11:24 AM PT]  Ubit Umarov: just returns invalid url
[11:24 AM PT]  Ubit Umarov: in current uses, silent ignored..
[11:24 AM PT]  Ubit Umarov: map search will return not found etc
[11:25 AM PT]  Ubit Umarov: ohh  code is running here
[11:25 AM PT]  Vincent.Sylvester Wondering if that might not be better to alert the user that their region name is not valid less they wonder why they can't teleport to it
[11:25 AM PT]  Ubit Umarov: wel that should be a check on region load
[11:25 AM PT]  Ubit Umarov: todo
[11:25 AM PT]  Vincent.Sylvester That's what I mean yeah
[11:26 AM PT]  Ubit Umarov: ohh also added 2 lsl functions
[11:27 AM PT]  Ubit Umarov: and code to get needed info sent by viewers, so far ignored
[11:27 AM PT]  Ubit Umarov: public LSL_Float llGetCameraFOV()
[11:27 AM PT]  Ubit Umarov: public LSL_Float llGetCameraAspect()
[11:28 AM PT]  Vincent.Sylvester Imagine the set functions for that would be fun, making people dizzy by changing the camera xD
[11:28 AM PT]  Ubit Umarov: well that would not work..   it is a viewer side thing
[11:29 AM PT]  Ubit Umarov: they only tell current values
[11:30 AM PT]  Vincent.Sylvester There was also a fix for a bug on list sort orders mantis 9121
[11:30 AM PT]  Ubit Umarov: ah yes..
[11:31 AM PT]  Ubit Umarov: code assumed a implicit cast they did not happen
[11:31 AM PT]  Ubit Umarov: we do allow Lists to store native strings, instead of lslstrings
[11:32 AM PT]  Ubit Umarov: lsllists i mean
[11:32 AM PT]  Ubit Umarov: sames soem mem etc and fine in most cases..  well not on the sort :)
[11:32 AM PT]  Vincent.Sylvester I made some progress on migrations on saturday getting the mysql routines stable so they can properly migrate any possible table state. sqlite still left to do. Been having some trouble with that returning consistent results as it randomly sorts things so I have to lock down sort orders on it which is annoying as the queries don't offer a consistent key to sort by either
[11:33 AM PT]  Object: Script running
[11:33 AM PT]  Vincent.Sylvester Probably won't support Postgres on that as it just is so broken now and we have no one to maintain it either or fix it up so it actually works again
[11:33 AM PT]  Object: aspect = 1.795980  FOV = 1.250000
[11:34 AM PT]  Object: aspect = 2.009135  FOV = 1.250000
[11:34 AM PT]  Gavin.Hird Postgres is major undertaking in itself
[11:34 AM PT]  Object: aspect = 1.728989  FOV = 1.250000
[11:34 AM PT]  Vincent.Sylvester I'm in favor for dropping that entirely actually given we don't know how much MySQL and MariaDB will diverge in future, which might mean separating those as well adding one more data project to maintain
[11:34 AM PT]  Ubit Umarov: seems many still love it
[11:35 AM PT]  Vincent.Sylvester I have had no complaints with MariaDB so far, only their apt repo management is annoying, as db it works fine
[11:35 AM PT]  Jagga Meredith: Are many people still using sqllite?
[11:35 AM PT]  Joe Magarac: It's annoying when open source politics impacts stability of really important packages.
[11:35 AM PT]  Ubit Umarov: some things do use sqlite internally
[11:36 AM PT]  Ubit Umarov: and it is nice option for simple regions
[11:36 AM PT]  Gavin.Hird yes, and it is getting faster too
[11:36 AM PT]  Vincent.Sylvester Well it's more that they use separate repos for each thing so I constantly get dead repos and have to update the sources lists, but that's got nothing to do with how it operates otherwise
[11:36 AM PT]  Vincent.Sylvester sqlite has less precision though
[11:36 AM PT]  Gavin.Hird meaning?
[11:37 AM PT]  Vincent.Sylvester In the mysql migrations have specific migration for numeric scale and precision
[11:37 AM PT]  Ubit Umarov: wel he only has doubles.. so same :P
[11:37 AM PT]  Ubit Umarov: it..
[11:37 AM PT]  Jagga Meredith: we've got an app that uses sqllite at work.  Brutally slow, weird errors
[11:38 AM PT]  Vincent.Sylvester sqlite is well light, so some things not quite as equal to mysql. Equally the collations and charset handling is slightly different, which might cause issues when things get funky unicode
[11:38 AM PT]  Ubit Umarov: it should be fast
[11:38 AM PT]  Ubit Umarov: it is local etc
[11:38 AM PT]  Ubit Umarov: ofc depends a lot on the disk
[11:38 AM PT]  Vincent.Sylvester It's fine for testing, but should not be used in production environments
[11:38 AM PT]  Ubit Umarov: it may hammer the disk more the others,  maybe has less cache
[11:39 AM PT]  Vincent.Sylvester sqlite can be really slow depending on filesystem and the type of queries as there is no real caches like mysql can provide
[11:39 AM PT]  Ubit Umarov: but no tcp crap the others use
[11:40 AM PT]  Ubit Umarov: may also burn your ssd fast :)
[11:40 AM PT]  Ubit Umarov: our code for sqlite seems pretty bad
[11:41 AM PT]  Ubit Umarov: but to change.. well big pain..
[11:41 AM PT]  Vincent.Sylvester I'll look into Postgres to mysql migration, but I think Gavin you might know best what that requires. Should just be dump to sql and load or was there anything that is problematic?
[11:41 AM PT]  Ubit Umarov: no idea
[11:41 AM PT]  Ubit Umarov: save oars and iars and reload? :P
[11:42 AM PT]  Gavin.Hird the Postgres version use transactions
[11:42 AM PT]  Ubit Umarov: mysql uses also on a few places
[11:42 AM PT]  Gavin.Hird but I run on MySQL noiw
[11:42 AM PT]  Ubit Umarov: where makes sense to abort
[11:43 AM PT]  Gavin.Hird not planning on using Postgres for some time till it can get actually fixed
[11:43 AM PT]  Gavin.Hird not prio right now compared to all the shit LL pours on the viewer every week :-)
[11:43 AM PT]  Ubit Umarov: seems one of its devs died
[11:44 AM PT]  Ubit Umarov: but others still claim it is the best sql thing
[11:44 AM PT]  Gavin.Hird it is fast
[11:45 AM PT]  Ubit Umarov: wel no idea.. some of our code for it was even made by you lol
[11:45 AM PT]  Gavin.Hird one of these days ;-)
[11:46 AM PT]  Joe Magarac: Can I get in some region crossing questions today?
[11:46 AM PT]  Vincent.Sylvester So I'll not bother with it for now then and eventually we'll just add it back properly from scratch, that might work best, might even convince me to switch over
[11:46 AM PT]  Ubit Umarov: you may ask joe, ofc
[11:46 AM PT]  Joe Magarac: OK.
[11:47 AM PT]  Joe Magarac: Crossing a vehicle at a region corner.
[11:47 AM PT]  Joe Magarac: Sometimes, parts of the vehicle are missing in the new region.
[11:47 AM PT]  Joe Magarac: I'm relying on the simulator to tell me all the objects on entry to a new region.
[11:48 AM PT]  Joe Magarac: Firestorm, at least, does not seem to totallly rely on the simulator.
[11:48 AM PT]  Ubit Umarov: all parts should go to where the root prim went
[11:48 AM PT]  Joe Magarac: But will reuse child prims from the previous region.
[11:48 AM PT]  Ubit Umarov: inc the avatars
[11:48 AM PT]  Joe Magarac: Usually, I get an ObjectUpdate for all prims after a crossing.
[11:49 AM PT]  Joe Magarac: This works for single crossings.
[11:49 AM PT]  Joe Magarac: But it's not reliable at a 3-region corner.
[11:49 AM PT]  Ubit Umarov: wlel if the cross results into a fast crossing to other region,  things will blow up
[11:50 AM PT]  Joe Magarac: Well, yes. I want to get that fixed.
[11:50 AM PT]  Ubit Umarov: better put a strong wall there :p
[11:50 AM PT]  Joe Magarac: If it can't work, don;t let crossing #2 start until crossing #1 is complete.
[11:50 AM PT]  Vincent.Sylvester That makes that very janky though
[11:51 AM PT]  Joe Magarac: Only for the cases that already break.
[11:51 AM PT]  Vincent.Sylvester Is it really a crazy idea that the vehicle is probably not going to be any different just because it moved from one region to another? Shouldn't there be an object cache anyways?
[11:51 AM PT]  Gavin.Hird how do you coordinate that across regions running on different simmulators?
[11:51 AM PT]  Ubit Umarov: you know why we made large regions ( and before that mega regions) right?
[11:52 AM PT]  Joe Magarac: Oh, 3 questions.
[11:52 AM PT]  Joe Magarac: As for "not the same", the viewer-side problem is that local IDs change and the hierarchy is organized by local ID.
[11:52 AM PT]  Ubit Umarov: on that guess we do have worng inter regions protocols..
[11:53 AM PT]  Ubit Umarov: adn wrong threading model on that
[11:53 AM PT]  Joe Magarac: So "see root prim move, move entire hierarchy" doesn't quite work.
[11:53 AM PT]  Ubit Umarov: local ids are per region ofc
[11:54 AM PT]  Joe Magarac: Right. So you can't just re-use the tree. I've seen the code in Firestorm for this and can't figure out how it works in the hard cases.
[11:54 AM PT]  Joe Magarac: I think it's possible to have a temporarily invalid viewer tree while object updates are still coming in, and I'm not sure what that means.
[11:55 AM PT]  Ubit Umarov: well there is no real tree..
[11:55 AM PT]  Ubit Umarov: just a line :)
[11:55 AM PT]  Joe Magarac: Sure there is. Vehicle [11:55 AM PT]  Ubit Umarov: well ok a tree with single leafs
[11:55 AM PT]  Joe Magarac: I put a full hierarchy in Sharpview because it was easier to do the general case.
[11:55 AM PT]  Ubit Umarov: avatar is a leaf
[11:56 AM PT]  Joe Magarac: Parent of attachment is avatar.
[11:56 AM PT]  Ubit Umarov: is side by side with prims
[11:56 AM PT]  Joe Magarac: At the ObjectUpdate level.
[11:56 AM PT]  Ubit Umarov: ok attachments are other thing..
[11:56 AM PT]  Joe Magarac: Right, but at the ObjectUpdate level, they work a lot  like prims.
[11:57 AM PT]  Vincent.Sylvester It's ultimately what that will have to be, because doing a hard lock on crossing complete would mean some crossings would take a lot longer to complete and users will complain about that. Smooth and stable is what they ultimately want
[11:57 AM PT]  Joe Magarac: You only have to do a hard lock on a double crossing.
[11:57 AM PT]  Ubit Umarov: a opensim nonsense is that it sends prim by prim then avatar by avatar to the other region
[11:58 AM PT]  Ubit Umarov: i once started changing that..  but ofc a breaking change..
[11:58 AM PT]  Joe Magarac: It's the second crossing starting when the first one is incomplete that causes trouble.
[11:58 AM PT]  Vincent.Sylvester But "double crossing" isn't something the simulator knows about so there is no way to test for it
[11:58 AM PT]  Ubit Umarov: ( and then attachment one by one, if i remember )
[11:58 AM PT]  Joe Magarac: Vincent has a good question.
[11:59 AM PT]  Joe Magarac: Does the simulator know when the current crossing is complete?
[11:59 AM PT]  Joe Magarac: That everything has arrived?
[11:59 AM PT]  Ubit Umarov: ofc not :p
[11:59 AM PT]  Ubit Umarov: wlel there is intransit control actually
[11:59 AM PT]  Joe Magarac: I'm not familiar with sim-to-sim comms.
[12:00 PM PT]  Joe Magarac: Sim-to-viewer has nothing like an EOF or somethign to say "All objects delivered"
[12:00 PM PT]  Joe Magarac: Can you say more about intransit control?
[12:00 PM PT]  Vincent.Sylvester Yes and no. It knows when things failed and the ultimate call back to close or convert the agent hasn't come through, but it has no clue if the process of sending all the data is complete or not. It just fires that off to be sent and that's by design. These things need to by async to be faster and they can't all await a response of completion before running other tasks, that would would make crossings ten times slower
[12:00 PM PT]  Ubit Umarov: as i said.. bad protocol
[12:01 PM PT]  Ubit Umarov: fast reteleports will most likely fail
[12:01 PM PT]  Ubit Umarov: even just a avatar
[12:02 PM PT]  Vincent.Sylvester Initiate crossing? Send all the things! Basically. Only listens to "Oi I ain't got anyone to send this to" and fails crossings then
[12:02 PM PT]  Ubit Umarov: well bullet does not even do simple ones..
[12:02 PM PT]  Gavin.Hird it is at best very choppy
[12:02 PM PT]  Vincent.Sylvester This has a timeout of 30 seconds though
[12:02 PM PT]  Gavin.Hird plant a tree on the 3 way border
[12:03 PM PT]  Ubit Umarov: well make simple region to region crossing work...
[12:03 PM PT]  Ubit Umarov: if that works, then in time "corner" cases will be improvec region side
[12:04 PM PT]  Vincent.Sylvester Again, from our perspective it might even be easier to take the velocity vector and position during the crossing and figure out if the crossing would end up calling another crossing within 5 seconds across a corner and instead attempt to cross directly into that region rather than trying the intermediate region first
[12:04 PM PT]  Gavin.Hird yeah
[12:04 PM PT]  Joe Magarac: Vincent - hmm. Worth thinking about. OS allows diagonal crossing, which SL does not.
[12:05 PM PT]  Vincent.Sylvester Of course that approach would make assumptions too, which are never a good idea, but very fast crossings over region corners are a recipe for disaster one way or another so mitigation will always have to be a balance between making assumptions and hard facts
[12:05 PM PT]  Joe Magarac: Right.
[12:05 PM PT]  Ubit Umarov: public virtual bool HandleIncomingSceneObject(SceneObjectGroup so, Vector3 newPosition)
[12:05 PM PT]  Joe Magarac: There are basically two approaches that work - lockstep, and "eventually consistent".
[12:05 PM PT]  Joe Magarac: SL and OS have neither.
[12:05 PM PT]  Ubit Umarov: this is a bad thing
[12:06 PM PT]  Gavin.Hird make the same restriction in your viewer code then, so if force the user to do plain single region crossings to traverse
[12:06 PM PT]  Ubit Umarov: well works on normal cases.. if network allows
[12:06 PM PT]  Joe Magarac: I don't have enough control viewer side to force this.
[12:06 PM PT]  Joe Magarac: I can't stop crossing #2 from starting.
[12:07 PM PT]  Joe Magarac: Also, if there are multiple passengers on a vehicle, that won't work.
[12:07 PM PT]  Joe Magarac: Anyway, think about this. We shouldn't accept that it can't work right.
[12:07 PM PT]  Vincent.Sylvester If we disallow diagonal crossings then you force the issue of doing a fast crossing, rather forcing the diagonal crossing if you are 5 meters from a corner seems like the more stable approach to me, prevent the fast crossing into the intermediate when we know the velocity will carry the object to the next region anyways
[12:08 PM PT]  Vincent.Sylvester Close to corner? Fast moving? Cross diagonally directly
[12:08 PM PT]  Joe Magarac: Worth thinking about. Won't work for SL, of course.
[12:09 PM PT]  Joe Magarac: Think on this, please. Back next week. Must go off to next meeting.
[12:10 PM PT]  Ubit Umarov: well rl also calls me
[12:10 PM PT]  Ubit Umarov: any other issue?
[12:10 PM PT]  Gavin.Hird me too
[12:10 PM PT]  Lyr Lobo: take care
[12:10 PM PT]  Lyr Lobo: Thank you!
[12:10 PM PT]  Ubit Umarov: so hope to see you all next week :)
Personal tools
About This Wiki