We're getting an error when trying to create a snapshot of a site.
failed: Could not find a part of the path 'E:\UmbracoCms\App_Data\TEMP\uSync\Snapshots\a3c4fa8a-4de7-4679-a08c-adf02a31f2a2\Content\document-name.config'.
It's a production site on a load balanced server setup with file replication for the media folders.
and its the same for uSync, there are multiple steps when a snapshot is created, and i am guessing the underling server changed in the middle (so things from the first steps are missing).
best thing to do is have a URL that only hits one of your load balanced servers and use that as the one you access the back office from.
Kevin:
So, we are using a url that only hits one of the servers when attempting to take the snapshot. Each server is accessible by a specific url. I should have specified this more clearly.
I'm wondering if this has to do with the length of the content node name. It looks like the client has put a name that's approximately 160 characters.
I have confirmed this is happening on development and staging servers as well, so I don't believe it is due to the load balancing.
It looks like you get a slightly diffrent error with long file names .
"failed: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters."
but you can get around this by setting UseGuidFileNames to true in the uSync8.config - this will make usync save the files by the key, not the name, so they don't then get to long.
<UseGuidFilenames>False</UseGuidFilenames>
n.b doing this also changes how the file names are set for normal uSync so you might not want to keep it on for testing. there is a way to do it just for snapshots, but its a bit more involved.
I suspect your error is something else, if you still get the error after changing this setting can you look in the Log Viewer in umbraco and see if the error in the logs has any additional information.
I've updated the config setting, restarted the site, ran a clean export, and ran a snapshot.
<UseGuidFilenames>True</UseGuidFilenames>
The export works successfully and respects the config setting, using Guids now. However the Snapshot still fails with the original error, and is building out the filestructure with filenames instead of Guids.
thinking we'd need to try what you alluded to earlier about a Snapshot-specific setting?
The snapshot stops in its tracks at the content with a long name, and doesn't process any further items.
EDIT:
Also, there are no additional errors in the logs besides the the
System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\UmbracoCMS\App_Data\TEMP\uSync\Snapshots\dbead834-d953-4eb5-a6d8-4c41e161baec\Content\phs-guideline-for-reducing-human-immunodeficiency-virus-hiv-hepatitis-b-virus-hbv-and-hepatitis-c-virus-hcv-through-organ-transplantation-frequently-asked-questions-2013.config'
It appears to fail creating the file (System.IO.FileInfo.CopyTo) in /umbraco/backoffice/uSync/SnapshotApi/CreateSnapshot
System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\UmbracoCms\App_Data\TEMP\uSync\Snapshots\78845f06-8dc7-4d15-82b7-9d2411c34933\Content\phs-guideline-for-reducing-human-immunodeficiency-virus-hiv-hepatitis-b-virus-hbv-and-hepatitis-c-virus-hcv-through-organ-transplantation-frequently-asked-questions-2013.config'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.FileInfo.CopyTo(String destFileName, Boolean overwrite)
at uSync.Snapshots.Services.SnapshotService.MergeFolder(String source, String target, Boolean ignoreConfig)
at uSync.Snapshots.Services.SnapshotService.MergeFolder(String source, String target, Boolean ignoreConfig)
at uSync.Snapshots.Services.SnapshotService.Combine(String folder)
at uSync.Snapshots.Services.SnapshotService.CreateSnapshot(SnapshotCreateOptions options, SyncEventCallback callback, SyncUpdateCallback update)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
So it looks like it is failing to find that file to merge from an existing snapshot 😕.
it might be that as it attempts to move it - the name is to long.
but for uSync the filename doesn't actually matter (as long as its a .config file) . maybe if you search the uSync/snapshots folder for this file, you could rename it to something shorter and then attempt the merge. if it is because the name is to long that might fix it.
in the meantime i am going to have a look and see what i can reproduce
Some additional information. we've determined if we remove the existing snapshot, the process will start. It gets to the content section and then has the following error:
Now, if we go back to snapshots, we see it. I'm just not sure if it actually has EVERYTHING from the site since it did produce an error.
Here's the full stack trace:
Exception
System.IO.DirectoryNotFoundException: Could not find a part of the path 'E:\UmbracoCms\uSync\Snapshots\20211019_085849_test\views\DfsrPrivate\Staging\ContentSet{97DEFBFC-F7D4-4B12-9B40-DDC717FAA7CA}-{5B34D42B-41D1-4125-93A6-5F1295188F7C}\00\8600-{CA6EBA1A-7117-4418-9664-510E16F82202}-v8600-{CA6EBA1A-7117-4418-9664-510E16F82202}-v8600-Downloaded.frx'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.FileInfo.CopyTo(String destFileName, Boolean overwrite)
at uSync.Snapshots.Services.SnapshotService.MergeFolder(String source, String target, Boolean ignoreConfig)
at uSync.Snapshots.Services.SnapshotService.MergeFolder(String source, String target, Boolean ignoreConfig)
at uSync.Snapshots.Services.SnapshotService.MergeFolder(String source, String target, Boolean ignoreConfig)
at uSync.Snapshots.Services.SnapshotService.MergeFolder(String source, String target, Boolean ignoreConfig)
at uSync.Snapshots.Services.SnapshotService.MergeFolder(String source, String target, Boolean ignoreConfig)
at uSync.Snapshots.Services.SnapshotService.GetFolders(String folderName, SnapshotCreateOptions options, SyncEventCallback callback, SyncUpdateCallback update)
at uSync.Snapshots.Services.SnapshotService.CreateSnapshot(SnapshotCreateOptions options, SyncEventCallback callback, SyncUpdateCallback update)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()
it looks like it's gotten confused with some DFS settings, are your views in a DFS folder, and how are they redirected (e.g is there a virtual directory in IIS or is it something else ?
I think a DFS ContentSet{... folder is a artifact of a staged DFS folder (not 100% sure, think it means its something that has or is pending copy/deletion)
I am not 100% sure that folder should be there for DFS but its is equally possible that the snapshot process has gotten confused with folder paths.
as a test you could remove the views folder from the snapshot process by removing it from the list of folders in the setting section (this mean you view files won't be in that snapshot, but it will help to see if everything else is getting captured)
I think something we have being testing for the next release is the ability to exclude things from the folders in a snapshot based on some patterns (e.g you could excludeDfsrPrivate\Staging\ContentSet)
but i do have a sneaking suspicion those files shouldn't really be in the views folder so maybe the calculation of the path has gone wrong or the site is configured a little different than what we expect. so the config would be good - as we then might be able to also work out if we need to add a fix for that before the next release too.
We've just released an update (v8.11.4) and in that we've added an 'exclusions' list to the files for when you are creating snapshots.
my guess is that putting \\DfsrPrivate in the exclusions box should be enough for your site not to include any of the DFS files.
but i am still a little bit concerned that this might be something else going on in the view folder because i don't really think those files should be getting found at all.
I agree. Unfortunately, I don't have direct access to the filesystem on the production site, so I'm unable to really take a look at that at the moment.
However, I will say that the DFSR is not on staging and development and they still had the original error and continue to have the original error if any snapshot already exists. Once we delete it and then creating a new one works.
However, we did run into another issue today. I'll start another thread for that so I'm not muddying the water too much if somebody comes back to look at this in the future.
I suspect we will be updating the uSync package very soon and hopefully that will fix the secondary (DFSR) issue, but do we have any idea on how to fix the fact we cannot have more than one snapshot on the sites?
yeah there really should be no reason why you can't have multiple snapshots.
I suspect it might be benficial to have a call to go over things and maybe we can spot what the issue might be.
if you want to email me [email protected], we could arrange something for next week.
We are still dealing with the issue with the DsfrPrivate folder. I added the folder to the exclusions list and now we are not receiving the original error regarding the DsfrPrivate, but the process is not completing. We are receiving 500 errors in the console. Any help with this would be appreciated.
This is the error shown in the log. Looks like it's still trying to access the DsfrPrivate folder even with it in the exclusions. I have it listed as "\\DfsrPrivate" Is that correct?
Umbraco 8 - uSync Complete
Hello:
We're getting an error when trying to create a snapshot of a site.
failed: Could not find a part of the path 'E:\UmbracoCms\App_Data\TEMP\uSync\Snapshots\a3c4fa8a-4de7-4679-a08c-adf02a31f2a2\Content\document-name.config'.
It's a production site on a load balanced server setup with file replication for the media folders.
Has anybody experienced this issue?
Thanks!
Hi Stephanie,
I suspect this is due to the site being load balanced. the Umbraco recomendation is that you don't run the back office load balanced (see https://our.umbraco.com/documentation/fundamentals/Setup/Server-Setup/Load-Balancing/#faqs)
and its the same for uSync, there are multiple steps when a snapshot is created, and i am guessing the underling server changed in the middle (so things from the first steps are missing).
best thing to do is have a URL that only hits one of your load balanced servers and use that as the one you access the back office from.
Kevin: So, we are using a url that only hits one of the servers when attempting to take the snapshot. Each server is accessible by a specific url. I should have specified this more clearly.
I'm wondering if this has to do with the length of the content node name. It looks like the client has put a name that's approximately 160 characters.
I have confirmed this is happening on development and staging servers as well, so I don't believe it is due to the load balancing.
Thanks!
Hi Stephanie,
yeah i will take a look, It might well be that.
i would think a long file name should throw a different error, but i will see what happens when i throw some long names at a local copy.
Hi,
It looks like you get a slightly diffrent error with long file names .
"failed: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters."
but you can get around this by setting
UseGuidFileNames
to true in the uSync8.config - this will make usync save the files by the key, not the name, so they don't then get to long.n.b doing this also changes how the file names are set for normal uSync so you might not want to keep it on for testing. there is a way to do it just for snapshots, but its a bit more involved.
I suspect your error is something else, if you still get the error after changing this setting can you look in the Log Viewer in umbraco and see if the error in the logs has any additional information.
Hi Kevin,
I've updated the config setting, restarted the site, ran a clean export, and ran a snapshot.
The export works successfully and respects the config setting, using Guids now. However the Snapshot still fails with the original error, and is building out the filestructure with filenames instead of Guids.
thinking we'd need to try what you alluded to earlier about a Snapshot-specific setting?
The snapshot stops in its tracks at the content with a long name, and doesn't process any further items.
EDIT: Also, there are no additional errors in the logs besides the the
Hi,
Is there more of a stack trace to the error (e.g if you open it up in the logs does it pin point which bit of the code its failing in ?
Hi Kevin,
It appears to fail creating the file (System.IO.FileInfo.CopyTo) in /umbraco/backoffice/uSync/SnapshotApi/CreateSnapshot
So it looks like it is failing to find that file to merge from an existing snapshot 😕.
it might be that as it attempts to move it - the name is to long.
but for uSync the filename doesn't actually matter (as long as its a .config file) . maybe if you search the uSync/snapshots folder for this file, you could rename it to something shorter and then attempt the merge. if it is because the name is to long that might fix it.
in the meantime i am going to have a look and see what i can reproduce
Kevin,
Some additional information. we've determined if we remove the existing snapshot, the process will start. It gets to the content section and then has the following error:
Now, if we go back to snapshots, we see it. I'm just not sure if it actually has EVERYTHING from the site since it did produce an error.
Here's the full stack trace:
Hi Stephanie,
it looks like it's gotten confused with some DFS settings, are your views in a DFS folder, and how are they redirected (e.g is there a virtual directory in IIS or is it something else ?
I think a DFS
ContentSet{...
folder is a artifact of a staged DFS folder (not 100% sure, think it means its something that has or is pending copy/deletion)I am not 100% sure that folder should be there for DFS but its is equally possible that the snapshot process has gotten confused with folder paths.
as a test you could remove the views folder from the snapshot process by removing it from the list of folders in the setting section (this mean you view files won't be in that snapshot, but it will help to see if everything else is getting captured)
HI,
I think something we have being testing for the next release is the ability to exclude things from the folders in a snapshot based on some patterns (e.g you could exclude
DfsrPrivate\Staging\ContentSet
)but i do have a sneaking suspicion those files shouldn't really be in the views folder so maybe the calculation of the path has gone wrong or the site is configured a little different than what we expect. so the config would be good - as we then might be able to also work out if we need to add a fix for that before the next release too.
Hi,
We've just released an update (v8.11.4) and in that we've added an 'exclusions' list to the files for when you are creating snapshots.
my guess is that putting
\\DfsrPrivate
in the exclusions box should be enough for your site not to include any of the DFS files.but i am still a little bit concerned that this might be something else going on in the view folder because i don't really think those files should be getting found at all.
I agree. Unfortunately, I don't have direct access to the filesystem on the production site, so I'm unable to really take a look at that at the moment.
However, I will say that the DFSR is not on staging and development and they still had the original error and continue to have the original error if any snapshot already exists. Once we delete it and then creating a new one works.
However, we did run into another issue today. I'll start another thread for that so I'm not muddying the water too much if somebody comes back to look at this in the future.
I suspect we will be updating the uSync package very soon and hopefully that will fix the secondary (DFSR) issue, but do we have any idea on how to fix the fact we cannot have more than one snapshot on the sites?
Hi Stephanie,
yeah there really should be no reason why you can't have multiple snapshots. I suspect it might be benficial to have a call to go over things and maybe we can spot what the issue might be.
if you want to email me [email protected], we could arrange something for next week.
Kevin,
We are still dealing with the issue with the DsfrPrivate folder. I added the folder to the exclusions list and now we are not receiving the original error regarding the DsfrPrivate, but the process is not completing. We are receiving 500 errors in the console. Any help with this would be appreciated.
Hi Stephanie,
can you look in the logs (in settings section) to see if there is any corresponding error for that ?
or if you look in the network tab inside the chrome tools, you might be able get the details of what is being returned from the 500 error ?
This is the error shown in the log. Looks like it's still trying to access the DsfrPrivate folder even with it in the exclusions. I have it listed as "\\DfsrPrivate" Is that correct?
Just following up on this again Kevin. I'll follow up with an email as well.
is working on a reply...