aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
authorJustin Clarke Casey2007-12-22 19:48:01 +0000
committerJustin Clarke Casey2007-12-22 19:48:01 +0000
commitc470efea5734e4515baaf9023f2f2b2cd724725c (patch)
tree23c6c1d80fe1c8995644c2e51002290de7216048 /OpenSim/Region/Environment
parentminor refactor (diff)
downloadopensim-SC-c470efea5734e4515baaf9023f2f2b2cd724725c.zip
opensim-SC-c470efea5734e4515baaf9023f2f2b2cd724725c.tar.gz
opensim-SC-c470efea5734e4515baaf9023f2f2b2cd724725c.tar.bz2
opensim-SC-c470efea5734e4515baaf9023f2f2b2cd724725c.tar.xz
Make copying of scripts into prim inventories more reliable on the first attempt when the asset server is lagging by formalising the de facto polling.
This may not be the best solution in the long run, but should improve things for now. This may also improve reliability when updating inventory item metadata (e.g. renaming an item) and in retrieving textures for the main map view.
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs43
1 files changed, 17 insertions, 26 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index efd96d2..2d0ffd8 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -429,16 +429,15 @@ namespace OpenSim.Region.Environment.Scenes
429 //group.AddInventoryItem(rmoteClient, primLocalID, null); 429 //group.AddInventoryItem(rmoteClient, primLocalID, null);
430 MainLog.Instance.Verbose( 430 MainLog.Instance.Verbose(
431 "PRIMINVENTORY", 431 "PRIMINVENTORY",
432 "UpdateTaskInventory called with item {0}, folder {1}, primLocalID {2}", 432 "UpdateTaskInventory called with script {0}, folder {1}, primLocalID {2}, user {3}",
433 itemID, folderID, primLocalID); 433 itemID, folderID, primLocalID, remoteClient.Name);
434 } 434 }
435 else 435 else
436 { 436 {
437 MainLog.Instance.Warn( 437 MainLog.Instance.Warn(
438 "PRIMINVENTORY", 438 "PRIMINVENTORY",
439 "Update with item {0} requested of prim {1} but this prim does not exist", 439 "Update with script {0} requested of prim {1} for {2} but this prim does not exist",
440 itemID, 440 itemID, primLocalID, remoteClient.Name);
441 primLocalID);
442 } 441 }
443 } 442 }
444 443
@@ -465,14 +464,9 @@ namespace OpenSim.Region.Environment.Scenes
465 { 464 {
466 isTexture = true; 465 isTexture = true;
467 } 466 }
467
468 AssetBase rezAsset = AssetCache.GetAsset(item.assetID, isTexture); 468 AssetBase rezAsset = AssetCache.GetAsset(item.assetID, isTexture);
469 469
470 if (rezAsset == null)
471 {
472 // lets try once more in case the asset cache is being slow getting the asset from server
473 rezAsset = AssetCache.GetAsset(item.assetID, isTexture);
474 }
475
476 if (rezAsset != null) 470 if (rezAsset != null)
477 { 471 {
478 string script = Util.FieldToString(rezAsset.Data); 472 string script = Util.FieldToString(rezAsset.Data);
@@ -489,32 +483,35 @@ namespace OpenSim.Region.Environment.Scenes
489 // TODO: do we care about the value of this bool? 483 // TODO: do we care about the value of this bool?
490 group.AddInventoryItem(remoteClient, localID, item, copyID); 484 group.AddInventoryItem(remoteClient, localID, item, copyID);
491 group.GetProperites(remoteClient); 485 group.GetProperites(remoteClient);
486
487 MainLog.Instance.Verbose(
488 "PRIMINVENTORY",
489 "Rezzed script {0} (asset {1}) into prim {2} for user {3}",
490 item.inventoryName, rezAsset.FullID, localID, remoteClient.Name);
492 } 491 }
493 else 492 else
494 { 493 {
495 MainLog.Instance.Warn( 494 MainLog.Instance.Warn(
496 "PRIMINVENTORY", 495 "PRIMINVENTORY",
497 "Could not rez item {0} into prim {1}" 496 "Could not rez script {0} into prim {1} for user {2}"
498 + " because the prim could not be found in the region!", 497 + " because the prim could not be found in the region!",
499 item.inventoryName, 498 item.inventoryName, localID, remoteClient.Name);
500 localID);
501 } 499 }
502 } 500 }
503 else 501 else
504 { 502 {
505 MainLog.Instance.Warn( 503 MainLog.Instance.Warn(
506 "PRIMINVENTORY", 504 "PRIMINVENTORY",
507 "Could not rez item {0} into prim {1}" 505 "Could not rez script {0} into prim {1} for user {2}"
508 + " because the item asset {2} could not be found!", 506 + " because the item asset {3} could not be found!",
509 item.inventoryName, 507 item.inventoryName, localID, item.assetID, remoteClient.Name);
510 localID,
511 item.assetID);
512 } 508 }
513 } 509 }
514 else 510 else
515 { 511 {
516 MainLog.Instance.Warn( 512 MainLog.Instance.Warn(
517 "PRIMINVENTORY", "Could not find script inventory item {0} to rez!", itemID); 513 "PRIMINVENTORY", "Could not find script inventory item {0} to rez for {1}!",
514 itemID, remoteClient.Name);
518 } 515 }
519 } 516 }
520 } 517 }
@@ -625,12 +622,6 @@ namespace OpenSim.Region.Environment.Scenes
625 { 622 {
626 AssetBase rezAsset = AssetCache.GetAsset(item.assetID, false); 623 AssetBase rezAsset = AssetCache.GetAsset(item.assetID, false);
627 624
628 if (rezAsset == null)
629 {
630 // lets try once more in case the asset cache is being slow getting the asset from server
631 rezAsset = AssetCache.GetAsset(item.assetID, false);
632 }
633
634 if (rezAsset != null) 625 if (rezAsset != null)
635 { 626 {
636 AddRezObject(Util.FieldToString(rezAsset.Data), pos); 627 AddRezObject(Util.FieldToString(rezAsset.Data), pos);