Right way to resolve asset

My c++ connector creates and updates prims. Prims are external .usd assets.
The code of prim creation:

UsdPrim newPrim = allPrims[path];
if (!newPrim) {
    int siz = assetPath.size();
    newPrim = connector->getStage()->DefinePrim(SdfPath(path));
    BOOST_LOG_TRIVIAL(info) << "created " << path << " primitive" << std::endl;
    int idx = std::rand() % assetPath.size();
 
    std::string selectedPath = assetPath[idx].as_string().c_str();
    std::string resolvedPath = resolvedPaths[selectedPath];
    if (resolvedPath.empty()) {
        std::string resolvedPath = resolver.Resolve(selectedPath).GetPathString();
        resolvedPaths[selectedPath] = resolvedPath;
    }
    SdfReference ref = SdfReference(resolvedPath);
    newPrim.GetReferences().AddReference(ref);
    newPrim.SetInstanceable(false);
    allPrims[path] = newPrim;
    return;
}

It works but connector constantly gives warnings

No prim found for id:

Am I doing something wrong?