Shared DataStore Directory

Topics: Troubleshooting
Mar 9, 2011 at 2:09 PM

I am having an issue where I have two development composite C1 environments on two seperate systems with a couple of shared data directories are not refreshing their data well.

Here is the portion of my composite.config

<Composite.Data.Plugins.DataProviderConfiguration defaultDynamicTypeDataProviderName="DynamicXmlDataProvider">
    <DataProviderPlugins>
      <add storeDirectory="\\vrcapp\ExternalData\CompositeC1Proof\Composite\DataStores" type="Composite.Plugins.Data.DataProviders.XmlDataProvider.XmlDataProvider, Composite" name="DynamicXmlDataProvider" />
      <add rootDirectory="~/App_Data/Xslt" fileSearchPattern="*" topDirectoryOnly="false" fileInterfaceType="Composite.Data.Types.IFile, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" type="Composite.Plugins.Data.DataProviders.FileSystemDataProvider.FileSystemDataProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="AllFileProvider" />
      <add rootDirectory="~/Composite/content/forms" fileSearchPattern="*.xml" topDirectoryOnly="false" fileInterfaceType="Composite.C1Console.Forms.DataServices.IFormDefinitionFile, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" type="Composite.Plugins.Data.DataProviders.FileSystemDataProvider.FileSystemDataProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="FormFileProvider" />
      <add rootDirectory="~/App_Data/Composite/DynamicTypeForms" fileSearchPattern="*.xml" topDirectoryOnly="false" fileInterfaceType="Composite.Data.Types.IDynamicTypeFormDefinitionFile, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" type="Composite.Plugins.Data.DataProviders.FileSystemDataProvider.FileSystemDataProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="DynamicTypeFormFileProvider" />
      <add rootDirectory="~/App_Data/Media" storeId="MediaArchive" storeDescription="Media Archive Files" storeTitle="Media Archive" type="Composite.Plugins.Data.DataProviders.MediaFileProvider.MediaFileProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="MediaFileDataProvider" />
      <add type="Composite.Plugins.Data.DataProviders.VirtualImageFileProvider.VirtualImageFileProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="VirtualImageFileProvider" />
      <add storeDirectory="~/Frontend/styles/VisualEditor" type="Composite.Plugins.Data.DataProviders.XmlDataProvider.XmlDataProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="XmlDataProvider" />
      <add rootDirectory="~/App_Data/Xslt" fileSearchPattern="*.xsl" topDirectoryOnly="false" fileInterfaceType="Composite.Data.Types.IXsltFile, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" type="Composite.Plugins.Data.DataProviders.FileSystemDataProvider.FileSystemDataProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="XslFileProvider" />
      <add rootDirectory="~/App_Data/PageTemplates" fileSearchPattern="*.xml" topDirectoryOnly="false" fileInterfaceType="Composite.Data.Types.IPageTemplateFile, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" type="Composite.Plugins.Data.DataProviders.FileSystemDataProvider.FileSystemDataProvider, Composite, Version=1.0.3037.13741, Culture=neutral, PublicKeyToken=null" name="PageTemplateFileProvider" />
    </DataProviderPlugins> ...
Sharing a couple of the xml data directories serves to simplify the source control environment.  Where I am running into issues however is that when dynamic data is edited from two different admin environments the data in composite c1 is not refreshing content unless I restart or recycle the application pool in IIS.  As far as I can tell I have turned all caching off.
<Composite.Core.Configuration.Plugins.GlobalSettingsProviderConfiguration defaultGlobalSettingsProvider="ConfigBasedGlobalSettingsProvider">
    <GlobalSettingsProviderPlugins>
      <add type="Composite.Plugins.GlobalSettings.GlobalSettingsProviders.ConfigBasedGlobalSettingsProvider, Composite" name="ConfigBasedGlobalSettingsProvider" autoCreatedAdministratorUserName="admin" applicationName="Composite C1" defaultCultureName="en-US" defaultLocalizationCultureName="en-US" enableDataTypesAutoUpdate="true" broadcastConsoleElementChanges="true" customConfigurationDirectory="~/App_Data/Composite/Configuration" serializedWorkflowsDirectory="\\vrcapp\ExternalData\CompositeC1Proof\Composite\ApplicationState\SerializedWorkflows" serializedConsoleMessagesDirectory="\\vrcapp\ExternalData\CompositeC1Proof\Composite\ApplicationState\SerializedConsoleMessages" generatedAssembliesDirectory="~/App_Data/Composite/Cache/Assemblies" tempDirectory="~/App_Data/Composite/Cache/Temp" cachePath="~/App_Data/Composite/Cache/ResourceCache" packageDirectory="~/App_Data/Composite/Packages" autoPackageInstallDirectory="~/App_Data/Composite/AutoInstallPackages" treeDefinitionsDirectory="~/App_Data/Composite/TreeDefinitions" dataMetaDataDirectory="\\vrcapp\ExternalData\CompositeC1Proof\Composite\DataMetaData" inlineCSharpFunctionDirectory="~/App_Data/Composite/InlineCSharpFunctions" binDirectory="~/Bin" clientCacheMinutes="0" serverCacheMinutes="0" workflowTimeout="7.00:00:00" consoleTimeout="00:05:00" applicationCultureNames="en-US,da-DK,nb-NO,sv-SE,nl-NL,uk-UA,en-GB,de-DE" nonProbeableAssemblyNames="System*,VJSharpCodeProvider,WebDev.*,Microsoft.Practices.EnterpriseLibrary.Common,CppCodeProvider,Microsoft.JScript,Microsoft.Practices.ObjectBuilder">
        <Caching enabled="true">
          <add name="DataAccess" enabled="false" size="-1" />
          <add name="Pages" enabled="false" size="2000" />
          <add name="Page associations" enabled="false" size="2000" />
          <add name="Ancestors" enabled="false" size="1000" />
          <add name="Child pages" enabled="false" size="1000" />
          <add name="Security permissions" enabled="false" size="50" />
          <add name="Resource strings" enabled="false" size="5000" />
          <add name="Entity token parents" enabled="false" size="50000" />
        </Caching>
      </add>
    </GlobalSettingsProviderPlugins>
At a minimum the behavior that I was expecting is that if I right click on a data node in the content or data perspective and select refresh the tree would be reloaded with the updated data from the shared datastore directory. Does anyone have any thoughts? 
Thanks, Peter
Coordinator
Mar 10, 2011 at 10:08 PM

FileWatcher-s we have supposed to work even on network drives, so it is either some ntfs permissions are missing or it is a bug. It is also possible to add some logic, so caches will be cleared once a related file is changed.

I'll check it as soon as we get the release out