diff --git a/Project.toml b/Project.toml index ea523b7d..352d4691 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "DistributedFactorGraphs" uuid = "b5cc3c7e-6572-11e9-2517-99fb8daf2f04" -version = "0.23.7" +version = "0.23.8" [deps] Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" diff --git a/src/DataBlobs/services/BlobStores.jl b/src/DataBlobs/services/BlobStores.jl index 333f2561..91648894 100644 --- a/src/DataBlobs/services/BlobStores.jl +++ b/src/DataBlobs/services/BlobStores.jl @@ -179,17 +179,14 @@ end struct FolderStore{T} <: AbstractBlobStore{T} key::Symbol folder::String - function FolderStore{T}(key, folder) where {T} - if !isdir(folder) - @info "Folder '$folder' doesn't exist - creating." - # create new folder - mkpath(folder) - end - return new(key, folder) - end end -function FolderStore(foldername::String) +function FolderStore(foldername::String; createfolder = true) + if createfolder && !isdir(foldername) + @info "Folder '$foldername' doesn't exist - creating." + # create new folder + mkpath(foldername) + end return FolderStore{Vector{UInt8}}(:default_folder_store, foldername) end diff --git a/src/FileDFG/services/FileDFG.jl b/src/FileDFG/services/FileDFG.jl index 472d0827..38946d1e 100644 --- a/src/FileDFG/services/FileDFG.jl +++ b/src/FileDFG/services/FileDFG.jl @@ -251,5 +251,5 @@ function loadDFG(file::AbstractString) # cleanup temporary folder Base.rm(loaddir; recursive = true, force = true) - return loadDFG!(dfg, file) + return loadDFG!(dfg, file; overwriteDFGMetadata = false) end diff --git a/src/GraphsDFG/services/GraphsDFGSerialization.jl b/src/GraphsDFG/services/GraphsDFGSerialization.jl index ac134b8e..b1cdb84a 100644 --- a/src/GraphsDFG/services/GraphsDFGSerialization.jl +++ b/src/GraphsDFG/services/GraphsDFGSerialization.jl @@ -65,8 +65,19 @@ function unpackDFGMetadata(packed::PackedGraphsDFG) #FIXME Deprecate remove in DFG v0.24 setdiff!(commonfields, [:blobStores]) blobStores = Dict{Symbol, AbstractBlobStore}() + !isnothing(packed.blobStores) && merge!(blobStores, packed.blobStores) + _isfolderstorepath(s) = false + _isfolderstorepath(s::FolderStore) = ispath(s.folder) + # FIXME escalate to keyword + for (ks, bs) in blobStores + if !_isfolderstorepath(bs) + delete!(blobStores, ks) + @warn("Unable to load blobstore, $ks") + end + end + props = (k => getproperty(packed, k) for k in commonfields) VT = if isnothing(packed.typePackedVariable) || !packed.typePackedVariable diff --git a/test/consol_DataEntryBlobTests.jl b/test/consol_DataEntryBlobTests.jl index 858d322e..dba9250b 100644 --- a/test/consol_DataEntryBlobTests.jl +++ b/test/consol_DataEntryBlobTests.jl @@ -86,6 +86,7 @@ dataset2 = rand(UInt8, 1000) ##============================================================================== # Create a data store and add it to DFG +mkdir("/tmp/dfgFolderStore") ds = FolderStore{Vector{UInt8}}(:filestore, "/tmp/dfgFolderStore") addBlobStore!(dfg, ds)