Autodesk / Autodesk/maya-usd

Layers don't get deallocated from memory when deleted

Open
#3,658 3 comments 0 reactions 1 assignee Claimed by @santosg87 View on GitHub
bug
Dominant language
Wolfram Language
Stars
905
Forks
223
Avg merge
2d 9h
Merged PRs (30d)
17

Description

**Linux, Maya 2024.2, maya-usd 0.25.0**
When a layer is inserted in a maya-usd composition arc, it won't get deallocated from memory when deleted

```py
import os
import gc
from pxr import Sdf
import maya.cmds as mc
import mayaUsd

# get home path and set layer name
path = os.path.join(os.path.expanduser('~'), "test1.usda")

# create usd stage
stageShape = mc.createNode('mayaUsdProxyShape')
stageShape = mc.ls(stageShape, long=True)[0]
mc.connectAttr('time1.outTime', stageShape + ".time")
stage = mayaUsd.ufe.getStage(stageShape)

# create first layer and save it
layer1 = Sdf.Layer.CreateNew(path)
layer1.Save()

# add layer to stage
rootLayer = stage.GetRootLayer()
rootLayer.subLayerPaths.append(layer1)

# delete .usda and layer
rootLayer.subLayerPaths = []
os.remove(path)
del layer1
gc.collect()

# create second layer with same path
layer2 = Sdf.Layer.CreateNew(path)
layer2.Save()
```
In the example above the creation of `layer2` will raise an exception, because `layer1` is still present in memory.

The same thing doesn't happen if we do it all via USD
```py
import os
import gc
from pxr import Sdf, Usd

# get home path and set layer name
path = os.path.join(os.path.expanduser('~'), "test2.usda")

# create usd stage
stage = Usd.Stage.CreateInMemory()

# create first layer and save it
layer1 = Sdf.Layer.CreateNew(path)
layer1.Save()

# add layer to stage
rootLayer = stage.GetRootLayer()
rootLayer.subLayerPaths.append(layer1.identifier)

# delete .usda and layer
rootLayer.subLayerPaths = []
os.remove(path)
del layer1
gc.collect()

# create second layer with same path
layer2 = Sdf.Layer.CreateNew(path)
layer2.Save()
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.