SL project news week 50/2: server and viewer

Server Deployments Update

The RC channel deployments went head as scheduled, and included the promised fix for offline IMs from scripted objects failing to reach people’s e-mail (BUG-1002). A further issue (BUG-1027) with group owners receiving garbled messages on ejecting group members was reported over the weekend of the 9/10th December, and this also received a fix which formed a part of the deployments.

As reported in part 1, Magnum received code to double the server-side memory allocation from 60KB to 120KB. Animations within SL have two core limits: loop time (30 seconds) and memory allocation (60KB). Apparently, some complex animations which ran within the 30-second time frame have been hitting the memory allocation limit. This initial change should help to ease that issue when encountered. A future change on the viewer-side of things should eventually increase the animation run-time as well, allowing for animations longer than 30 seconds to be uploaded and used.

Server Deployments Week 51

Given Magnum has all the same changes as both BlueSteel and Le Tigre, plus the additional stability improvements and memory leak fixes, it now looks likely that this code will be promoted to the Main Channel on week 51 (week commencing Monday 17th December).  No news was provided during the Server Beta meeting on any proposed RC releases during week 51.

Again, as a reminder, there will be no server code releases during weeks 52 (commencing Monday 24th December) and week 1, 2013 (commencing Monday 31st December). There will also be no further Server Beta meetings until Thursday January 3rd, 2013.

Viewer Updates

Linden Lab continue to work on the beta and development viewers in order to clear the backlog of releases resulting from the memory leak / crash issues. Currently, they are “almost” at the end of catching-up on the release schedule. Some of the focus at present is on the Mac side of things, with Oz Linden reporting that there should be “A bunch of changes for the Mac build and the Mac implementation coming into viewer development” over the next few days.

The beta viewer has seen a further 3.4.3 code release (3.4.3.268139 on December 14th). This should mark the last of the 3.4.3 code releases for the beta viewer prior to that code moving to the release viewer, possibly in week 51. After this, the beta viewer will move to the 3.4.4 code base, which will include the changes for the Mac side of things as well. This should then see the viewer branches all more-or-less back to a normal pace of development and update, with fresh releases on the order of every three weeks or so, including more HTTP service updates and improvements.

Tcmalloc has been set off to one side in order to clear the backlog, but “has not been forgotten”. Currently it is still enabled in the beta release, but appears to be disabled in upcoming viewer development versions.

Avatar Baking

The biggest news of the week came with the announcement that for Avatar Baking, the countdown has commenced. This is going to take the next few months to implement, and requires both changes on the server-side of things and significant changes to the viewer. An update had actually been promised at the Content Creation User Group on Monday 17th December, but given the large impact the changes have on viewers, Nyx Linden rightly announced the news relating to the project at the TPV Developer meeting on Friday 14th December.

Nyx linden discusses server-side baking at the TPV Developer meeting, Friday 14th December
Nyx linden discusses server-side baking at the TPV Developer meeting, Friday 14th December

Threaded Region Crossings

The work on multi-threaded region crossings is still with the LL QA team. In the meantime, further regions have been added to the simulator version (server code  DRTSIM-184) running the new code. Four of the latter are GC Test 9, GC Test 10, GC Test 15 and GC Test 16, which form a block of four regions which may assist with testing the capability (remember these SLurls are all to Aditi!). Caleb Linden has been testing the capability and reports that he has encountered some issues himself, with crashes during “automated horde testing” and with repeated crossing with heavy scripts. He’s interested in hearing constructive feedback from anyone willing to carry out informal tests on the code.

Related Links

Avatar Baking: “and the clock has started!”

Update, April 6th, 2013: Please also see my updated status report.

The new avatar baking project took a step closer on December 14th, as LL started to release more in the way of technical details on the project and launched a project viewer.

Avatar bake fail
Avatar bake fail

Code-named Project Sunshine, and a part of the Shining Project, this work is aimed at improving avatar baking and at eliminate bake fail issues.

The project represents a sizeable change in how Second Life works, and as such will take time to fully implement, requiring extensive changes to the viewer itself – something which Nyx Linden has previously referred to as, “Some pretty scary viewer re-architecting”, as well as a good part of the back-end services – hence why it has taken so long for the project to mature. Because of the degree of changes taking place, Linden Lab have consistently promised, via Oz Linden, that TPV developers would some eight weeks notice prior to any initial deployment of the new service in order for them to ensure they can integrate the required viewer-side code changes, test them, and ensure they can support the new service.

Speaking at the TPV Developer meeting on Friday 14th December, Oz reiterated the 8-week lead time before adding, “Today begins the clock! … You get at least two months from now before we begin rolling server-side baking out to the main grid, at least beyond a test region or two.” So while the precise timescale as to when the new baking service will start to appear on the main (Agni) grid remains open, TPVs can now start to engage in the project, a step which itself brings it one step closer to reaching the grid.

A Quick Recap: How It Is and How It Will Be

Currently, avatar baking is essentially driven from the viewer. In summary (and without drilling too much into detail), this means that when a system layer outfit or item of clothing is changed (including alpha layers), the updates are applied locally in the user’s viewer. They are then uploaded to the server the user is connected to, which then passes the updates out to the other viewers connected to it, so that other users get to see the change as well. This process has several points of potential failure: communications between the viewer and the server may be interrupted, for example, with the result that the server doesn’t receive all the information pertaining to an outfit change, with the result that  – again as just one example – the user sees their avatar perfectly fine, but others see the avatar as blurred / grey. In some instances, the process can fail such that while the user sees their avatar wearing the desired outfit, other see the same avatar still wearing the “old” outfit.

The new service will hopefully eliminate these issues by moving much of the emphasis for the baking process from the viewer to a new “Texture Compositing Service”. The viewer will retain some elements involved in avatar baking – the actual baking of the avatar shape (i.e. shape values and IDs) will still take place on the viewer side, for example. However, the new compositing service will take over most the donkey-work and handle the majority of avatar baking data and communications (excluding prim-based attachments).

As with many of the new services being introduced into Second Life by LL, the new baking service will be HTTP driven (the current system is UDP protocol based) which should have an additional benefit of speeding up the entire avatar load process when logging-in to SL and in fetching textures.

How the entire process should work can be summarised as follows:

  • The new service will use the Current Outfit folder as its viewer-side driver. This means that in order to use the service a viewer must have the Current Outfit folder properly implemented
  • When a rebake request is due (e.g. after a user has finished editing their appearance) the viewer sends a message to the baking service essentially asking it to look at the contents of the viewer’s Current Outfit folder and then return an updated appearance based on the contents of that folder
  • At the same time as the data is returned to the user’s viewer, it is also sent to the simulator to which the user’s viewer is connected, so that the simulator can send the appearance information to all other viewers connected to it.

To further TPV developers understand the new system and answer their questions,  Nyx Linden dropped by the TPV developer meeting on Friday 14th December. Note that what follows is an overview of Nyx’s discussion from the point-of-view of providing digestible information on the new service for “general” users, rather than a in-depth review of the full technicalities of the system and Q&A session.

Nyx linden discusses server-side baking at the TPV Developer meeting, Friday 14th December
Nyx linden discusses server-side baking at the TPV Developer meeting, Friday 14th December

Please use the page numbers below to continue reading this article

SL project news: week 50/1: Server, JIRA, mesh and Shining

Server Deployments

Due to the offline e-mail issue involving scripted objects, as reported in my last news update, there has been no Main Channel deployment this week. Two RC deployments are currently planned for Wednesday 12th December, however. These are:

  • BlueSteel and LeTigre: should receive the same maint-server project that rolled to Magnum in week 49, with bug fixes arising from that deployment. The release notes are available for review
  • Magnum should receive a superset of the changes scheduled for BlueSteel and LeTigre, which includes extra bug fixes, including stability improvements and a memory leak fix.  
    • The only new feature new to Magnum is an increase in the allowed animation asset size – the 60KB size limit on animation assets has been raised to 120KB. This change is to allow for longer and more complex animations to be made in the future, once an viewer-side update to allow 60-second animation loops has been implemented. Magnum’s release notes can be read here.
So be sure to read them :-) (with thanks to Whirly Fizzle for the link)
So be sure to read them 🙂 (with thanks to Whirly Fizzle for the link)

Update on Key Region Issues

Physics Memory / Region Performance

As reported last time, the physics memory issues affecting some regions, which I reported in week 47, had been tracked down by Simon Linden to a Havok issue related to navmesh rebakes. His fix for this problem cleared QA and forms a part of the RC deployments for the 12th December, together with a fix for a low-level threading problem within the simulator code which has also been causing region crashes.

Offline IMs from In-world Objects Failing to Forward to E-mail

This issue, linked to llInstantMessage(llGetOwner(), caused the RC deployments in week 49 to be rolled back on Thursday 6th December. A fix has been developed and tested and is included in all three RC deployments planned for Wednesday 12th December.

Code Freeze / No Change Windows

Again, to re-iterate from my last report, there will be no server-side code changes over the holiday period as follows:

  • Week 52  – commencing Monday December 24th
  • Week 1, 2013 – commencing Monday December 31st

Simon Linden still hoped that one of the code being deployed to the RC channels this week can be rolled to the Main Channel in week 51. There will likely be a further update on this following the Thursday Server Beta UG.

JIRA / Bug Tracker Update

Linden Lab are still mulling the September closure of the old public JIRA system. Since the initial shut-down, things have opened up a little. Additional JIRAs have been left open as read only beyond the initial triage, while others have been opened and have had their comments enabled in order to allow feedback – such as the CHUI JIRA, which is being very constructively used for comments and feedback and shows how, in an ideal world, the system might work.

Currently, it appears that “nothing definitive” has been decided on the change, although it has been under internal discussion.

Feedback from those in the two JIRA support groups (developers who have significantly contributed code and those who have in the past supplied significant support in handling JIRAs) has been interesting. It appears that the number of feared duplicates on issues has been a lot smaller than had been feared. The overall quality of input given using the new form also appears to have been significantly improved since it was introduced.

Continue reading “SL project news: week 50/1: Server, JIRA, mesh and Shining”

SL project news week 46/2: Code freezes, avatar baking, interest list wierdness and more

Server Deployments

Wednesday November 14th saw the same code deployed to all three RC regions in preparation for the US Thanksgiving week code freeze (see below). This primarily brought all three RCs to the same code level, release-wise and fixed a bug discovered in week 45.

There will be no rolling restarts in week 47 (week commencing Monday 19th November) due to the code freeze.

SL Viewer Update

The beta viewer rolled to the last of the 3.4.2 releases on Thursday November 15th, with the release of 3.4.2266995. Providing the crash statistics remain good (they were very positive for the first 24 hours), it will be going to the production (release) viewer QA in week 47 and should result in the release of a new version of the viewer shortly after the Thanksgiving weekend.

This beta contains a lot of updates and improvements, as well as a wide range of fixes for issues encountered with earlier releases up to and including the previous beta release, 3.4.2.266708, issued on November 8th. For a comprehensive list of changes, please refer to the release notes.

At the same time, the development viewer rolled to 3.4.3.267061, marking a further update of the development viewer to the 3.4.3 code, which should be appearing in the next release of the beta viewer. This include the new viewer-side code for the HTTP texture fetch project developed by Monty Linden as a part of the Shining Project improvements.

The code for faster texture fetching / rezzing has moved from a project viewer into the viewer-development stream and is present in the 3.4.3267061 Ddevelopment viewer release and should appear in the beta viewer after the US Thanksgiving weekend

As the holiday period is approaching, viewer releases will be slowing down, but the aim remains to try to clear the backlog of waiting merges and updates by the New Year with a view to resuming their more usual cycle of releasing a development / beta update around every three weeks. Once things are back on track, LL will be looking more closely once again at the question of disabling tcmalloc completely within the viewer.

Code Change Freezes

The official dates for code change freezes during the upcoming holiday periods currently stand at:

  • Week 47 – Monday 19th November through to Sunday 25th November
  • Week 51 – Monday 17th December through Sunday 23rd December
  • Week 52 – Monday 24th December through Sunday 30th December.

No status has yet been given for the New Year week (Monday 31st December through Sunday 6th January 2013.

Avatar Baking

Bake fail: work on new service progressing

On Friday 16th November, Nyx Linden provided a brief update on the Avatar Baking project, which again forms a part of the Shining project improvements to Second Life. In short:

  • The viewer code is starting to look stable. However, merging the new code into the existing viewer code is liable to be somewhat more “painful” (Nyx’s term) than had been hoped
  • Work is progressing on the server-side elements (the composite baking server), with the code reaching a point where avatar texture can be generated server-side
  • Currently, the plan is to continue working on both sides of the equation, with the aim of ensuring the new code is successfully merged into the viewer development branch, and then offering it in a “very alpha” form to TPVs so that they can start merging it into their code and assist with testing. As this happens, one or two regions on the beta (Aditi) grid will be set-up to allow testing on the new service.

There is still no time frame for the appearance of the viewer code in the development branch or any test regions on Aditi, but in Nyx’s view, both are liable to be on the horizon “pretty soon”. Overall, the plan still remains to have at least a two month period from when the code is made available for testing purposes through to the official implementation of the new service.

Interest List Demonstration and Weirdness

The focus of this project is to optimise the data being sent to the viewer, information already cached on the viewer and the manner in which that data is used in order to ensure it is used more efficiently so that things rez both faster and in a more orderly manner than is currently the case.

This work is being undertaken by Andrew Linden in a number of stages, the first being to clean-up the code related to information sent to the viewer from the simulator relating to objects in the camera’s viewing range such that only objects actually in the camera frame are updated (if updates are required) and that objects outside of the current camera frame are not updated, thus reducing the amount of data both the server and the viewer need to process, which should lead to performance improvements.

It is possible to visualise the update process using a viewer debug setting (Develop > Show Info > Show Updates to objects or Ctrl+Alt+Shift+U) to show object updates being received by the viewer. This shows updates in three colours: red, which indicates the viewer is receiving a “full” update on the object (generally because it is being “seen” / is within draw distance) for the first time; blue, which indicates the viewer already has data on the object and is receiving “terse” updates relating to changes in the object’s appearance / position relative to the viewer’s camera position; and green, which indicates the object has been deleted / remove from the camera view, and updates are about to cease.

On the 15th November, Andrew used this debug setting, together with a set of scripted “bouncing” cubes to demonstrate his improvements to this update process. Observers were asked to focus their camera on the cubes, which were initially static and had no coloured data stream associated with them.  The cubes were then set bouncing, which generated a stream of blue “terse” updates, indicating the motion of the cubes in the viewer was being updated. However, when observers angled their camera to view the space above the cubes (so the cubes were not directly in their world view), the update stream ceased – indicating the viewer was no longer receiving update data for the cubes.

This may seem a small change, but it does dramatically decrease the amount of information the viewer has to process relating to in-world objects, and should result in performance improvements within the viewer. In the future, further work will be undertaken to enhance the interest list code even further – such as prioritising the order in which objects in the world view are actually rezzed, so that items closest to the camera view are rezzed first, etc.

HUD Issues

Following the demonstration, however, some people started noticing an odd issue: they could right-click on the centre of their screen and reveal a prim attachment belonging to someone else’s HUD. Chieron Tenk was the first to raise the issue, although Ana Stubbs also quickly reported the same problem.

Chieron Tenk posted an image of the problem: a prim appears in the centre of his viewer which, on inspection, appears to be linked to a HUD worn by Rex Cronin

After initial confusion, investigation revealed it was possible for anyone to find they had random prims from other people’s HUDs appearing on their screen, simply by attaching a HUD or a prim to their own screen. Concerns were further raised when it appeared that events might be able to be triggered if the prim was touchable.

I find I have a prim belonging to Ana Stubb’s Mystitool appearing on my screen

The issue appears to be tied to changes made to the interest list code on the test region, and is obviously going to be the subject of further investigation on the Lab’s part prior to the interest list project being carried forward.

Related Links

SL projects week 46/1: server, projects and general news

Server Deployments – Week 46

Deployments for the week are progressing as planned.

Main Channel

The main channel received the code which had been running on the Magnum RC channel as well as some updates.

This now means that the server-side Group Services code to improve the loading and editing of very large groups (10K+ members) is active right across the main grid – see the section on Group Services below for further information.

This roll-out restored functionality within the Estate Tools which allows region physics to be put in a condition of limited functionality, which is sometimes useful in dealing with issues and problems within a region. The capability was disabled around the time of the mesh roll-out, and has now been restored with this release. This caused some minor inconvenience on some regions (at least one), where the option has been enabled at some point, with the result that following their restart, objects within the region(s) were not functioning correctly. However, this was corrected without major incident.

Main channel release notes.

Release Candidates

Wednesday 13th November will see all three Release Candidate channel receive the same update package, including the BUG-166 update, which means that linksets with bounding boxes larger than 64m (in any dimension) are prevented from being rezzed if doing so will cause the object to collide with an avatar excluding the object owner.

Release notes:  Magnum, BlueSteel, LeTirgre.

Week 47 Deployments and Christmas Run-up

There will be no server roll-outs in week 47 (week commencing Monday 19th November) due to the forthcoming Thanksgiving weekend in the United States. There will be deployments between Thanksgiving and Christmas, but it currently looks as if these may be limited to a couple of weeks during that period according to Simon Linden (details on the likely number pending), and there will as usual be no releases over the Christmas / New Year period.

Interest List and Object Caching

Andrew Linden reports that the first phase of this work is drawing to a conclusion, and he is planning on having a possible demonstration of the capability on the beta (Aditi) grid on Thursday 15th November, most likely during the Bet Server User Group meeting.

The focus of this project is to optimise the data being sent to the viewer, information already cached on the viewer and the manner in which that data is used in order to ensure it is used more efficiently so that things rez both faster and in a more orderly manner than is currently the case.

Interest lists and object rezzing: initial srver code updates almost ready

Andrew reports that general performance on object rezzing should be improved, although the overall sorting element of the code (ensuring objects closer to an avatar’s camera position rez sooner than those further away) isn’t currently as rigorous as it could be. However, the server and viewer do now interact better, so less information is sent to the viewer relating to in-world items which are not visible within the current camera view for the viewer.

Commenting on demonstrating the capability when speaking at the Simulator User Group meeting on Tuesday 13th November, Andrew acknowledged that it may be difficult to achieve on Aditi, which is a relatively static environment (improvements will hopefully be more noticeable on regions where there is a lot of movement and activity); however, anyone interested in this work may want to try attending the Beta Server Group meeting on the 15th November, in case a demo is provided.

Currently, this represents the fist pass in Interest list improvements, and one which is liable to be heading to an RC channel in the near future – it does not require any specific viewer updates to work -, and Andrew expects to be building on this work in the future.

Group Services

As mentioned above, Baker Linden’s Group Services HTTP code is now available across the main grid. As there was some confusion evidenced on Plurk yesterday, here’s a quick re-cap on what this means:

  • The new code allows for improved loading of membership lists of very large groups, together with improved reliability in editing such groups (i.e. assigning roles, removing people, etc.), by the group moderators
  • The code requires a viewer update. At the time of writing, this is available with the official Second Life beta viewer (3.4.2.266708+), and the code will be filtering into the majority of popular TPVs as they update (and currently appears to be available in Zen (3.4.2.2+) and Niran’s Viewer (2.0.3.2262+) and Cool VL (1.26.4.38), all of which successfully loaded large group lists for me)
  • Until such time as the viewer-side code has been incorporated into TPVs, the “old” method of loading group lists into the viewer will still be available. However, viewers using the “old” method (a protocol referred to as UDP) will have group loading capped at 10K members. This means:
    • That for groups with 10K or fewer members, there will be no change regardless as to whether the viewer is using HTTP or UDP
    • But for groups large than 10K, viewers running the UDP code will be unable to load the group until such time as they have been updated to the new code
  • The code will not lead to any improvements in group chat reliability, and is not aimed at improving group chat.

Materials Processing and Avatar Baking

No news on either of these, beyond what has been previously reported in these pages. Materials processing has a test region on Aditi, but there is no timeline on when a project viewer is to be made available. For an overview of the initial capabilities for material processing, please see my project update here, and remember that the capabilities will be applicable to prims and mesh, but not directly to avatars or system layer clothing.

Avatar Baking is progressing, but without any significant update at this time, please refer to my last detailed update on this project for information.

Mesh Importer Fix

JIRA SH-3055 records a  problem with the official viewer’s mesh uploader which has been affecting people over the course of the year. The fix for this, released as a project viewer (3.4.2.266471, available for Windows, Linux and Mac OS) on November 5th, is still available for those experiencing uploader issues, although it is in the pipeline to be merged with the beta viewer now that crash issues seem to have been resolved. Bear in mind that – as Runitai states in his JIRA comment, the viewer is a pre-beat project version, and may include other bugs and problems. While reports on the JIRA seem to point to it being relatively stable, caution should still be taken if attempting to use it as a primary viewer.

Related Links

SL project news: week 44/4: server and viewer news

Quick Links

Server Deployments, Week 44

There was some confusion on the server channel deployments this week. As reported earlier this week, roll-outs were put back by a day due to issues within LL. This meant that the main channel deployment did not occur until Wednesday 31st October, and the RC channels on Thursday 1st November.

There was further confusion as the main channel had been scheduled to receive the code which had been on BlueSteel and Magnum, but it instead received code which had been on BlueSteel some two weeks ago, and caused some confusion on the Server Deployment forum discussion for the week.

Other than being 24 hours late, the RC releases were more-or-less as planned and previously documented:

  • BlueSteel received the Havok updates deployed to LeTigre, complete with the lHTTPRequest header “fix”
  • Magnum has the Group Services code from Baker Linden for handling the editing and managing of large in-world group lists. The code includes some fixes to problems found in the Snack RC deployment of the Group Services code (again, see part 2 of this report)
  • LeTigre received further updates for the Havok deployment, etc.

In addition, Magnum received a fix for the Estate Tools debug capability to disable collisions. When enabled, the option freezes all physical objects in a region in place and prevents avatars colliding with objects. As such, it is primarily a useful tool when trying to sort-out performance issues or locate and remove unwanted objects (although in the latter case, any TPV with Area Search included can achieve the same result. The option has been broken for some time, and the code deployed to Magnum should fix it.

Also on Magnum, Qie Niangao reported issues which may – or may not – be linked to previously encountered problems with llsensor(). However, it is not clear as to how widespread this might be.

Deployments for Week 45

As they currently stand, the plans for Week 45 (commencing Monday 5th November) are:

  • Tuesday 6th: the Main Channel should get the code currently running on Bluesteel and LeTigre  – so this will be the Havok updates, etc
  • Wedneday 7th:
    • Magnum should get fixes and updates to the code currently running there (including the Group Services code)
    • LeTigre and Bluesteel should get the next bug fix server in the pipeline, which includes the code currently on Magnum, and more.
  • Further details will be available as the release notes are issued

Threaded Region Crossings

This has been a project which has been going on for some time now, with Lindens working on it quietly in the background. As it hasn’t been openly mentioned in User Groups for some time, it had led some commentators to believe the project was no longer being worked on. However, as I’ve commented in these pages (and more recently quoted Baker Linden as commenting on it), the work has been progressing, and may now be nearing the time when it will see greater light of day. As a part of this, it looks like there might be a call for volunteers to participate in a “pile-on” test in the near future, specifically to test whether the new code is easing region crossing issues and generally leading to an improvement.

Avatar Baking

Avatar bake fail

Questions about server-side baking are a common occurrence at OpenDev and TPV meetings.

Currently (and as all too often indicated in these reports!) work is progressing on both sides of the equation within LL, but there is currently little of major impact to report. The emphasis has been on the viewer code (which will be used as the basis for the new Texture Compositing server the Lab will be implementing.

However, it remains that are still  no ETAs on the availability of either the viewer code or the server. The plan, however, remains that TPVs should receive around 2 months notice as to the availability of code for merging into test viewers. Given this, it remains highly unlikely that there will be visible progress with the project before the start of 2013.

Please use the page numbers below to continue reading