ERROR at least one changed item being outside of the sync scope !

  • Thread starter Jérôme Piquot
  • Start date
J

Jérôme Piquot

Hello,

I can't find whats going wrong here!

Regards

The synchronization runtime encountered an error. The changes could not be
saved due to at least one changed item being outside of the sync scope which
is defined by the Replica.
à
System.Storage.Providers.WinFS.Sync.ChangeWriter.ApplyComplexItemChange(WinFSStoreComplexItemList
cciList, Dictionary`2 complexItemList)

à
System.Storage.Providers.WinFS.Sync.WinFSSyncUpdateProcessor.ProcessComplexItem(ChangeWriter
changeWriter, WinFSCreateComplexItemsOperation cciOp)

à
System.Storage.Providers.WinFS.Sync.WinFSSyncUpdateProcessor.ExecuteOperations(List`1
operationList)

à System.Storage.Providers.WinFS.WinFSUpdateProcessor.Process(List`1
pendingChanges)

à
System.Storage.Providers.WinFS.Sync.WinFSSyncUpdateProcessor.Process(List`1
pendingChanges)

à System.Storage.Providers.WinFS.WinFSProvider.SaveChanges(IList`1
pendingChanges, IProviderCache cache)

à System.Storage.StorageContext.SaveChangesCore(List`1 changeList)

à System.Storage.StorageContext.SaveChanges(ChangeSet changeSet)

à System.Storage.StorageContext.SaveChanges()

à System.Storage.Sync.SyncService.SaveContextChanges()

à
Krystal.PreviousVersionAdapter.PreviousVersionSyncAdapter.ReceiveTier(SyncService
syncService, WinFSData winfsData) dans
D:\KrystalFx\WinFS\Adapter\Krystal.PreviousVersionAdapter\PreviousVersionSyncAdapter.cs:ligne
193
-------------------------------------------

private void ReceiveTier(SyncService syncService, WinFSData winfsData)

{

using (TierMapper tierMapper = new
TierMapper((string)Profile.AdapterConfiguration))

{

List<TierMapper.ContactSync> contactList = tierMapper.GetSyncData();

syncService.RemoteKnowledge = syncService.RemotePartnerData as
ReplicaKnowledge;

StorageKey localKey;

Item localObject;

string remoteID;

foreach (TierMapper.ContactSync contactSync in contactList)

{

if (IsCancelled)

break;

remoteID = string.Format("Tier{0}", contactSync.ObjectID);

localKey = syncService.GetLocalKeyForRemoteId(remoteID);

if (localKey != null)

localObject = syncService.Context.GetObjectByKey(localKey) as Item;

else

localObject = null;

if (localObject == null)

{

localObject = tierMapper.TierToContact(contactSync.ObjectID);

localObject.Container = GetItemFolder(localObject);

localObject.SyncHelper.RemoteMetadata.RemoteId = remoteID;

}

else

tierMapper.TierToContact(contactSync.ObjectID, localObject as Contact);

OnProgress(new SyncProgressChangedEventArgs(new ProgressValue(TotalWork,
++WorkDone)));

}

// Save the updated remote knowledge

if (!IsCancelled)

{

syncService.RemotePartnerData = syncService.RemoteKnowledge;

syncService.SaveContextChanges();

}

}

}
 

My Computer

N

Neil Padgett [MSFT]

"Jérôme Piquot" <[email protected]> wrote in message
news:%[email protected]
> Hello,
>
> It seems that everithing works if the réplica is in the folder containing
> the data to sync or in a parent folder.
>
> if items are in //mypc/Default Store/Krystal and the replica file in
> //mypc/Default Store/Replica it does not work.
>
> Why?


[clip]

Hi Jérôme,

In WinFS Sync we have the concept of a replica. A replica defines some set
of items in a WinFS store that can be synchronized in a sync session. In
Beta 1, WinFS Sync allows you to create a replica whose scope is defined as
all items under some container. So, when you call
Replica.Create(myReplicaRoot), where myReplicaRoot is some container of your
choosing, you are creating a replica encompassing all items contained under
myReplicaRoot. The Replica item you create in WinFS is used by the system to
store synchronization metadata associated with that synchronization scope.
When you see a Replica item attached to some container in WinFS, you know
that container is the root of a synchronization scope.

In your case you've created a replica whose scope is all entities under
\Replica. So, you can't use this replica to synchronize the items contained
in \Krystal as those items are not within the synchronization scope for that
replica. If you would like to synchronize items contained in \Krystal, you
should create a replica containing those items by supplying the Krystal
folder as the first argument to Replica.Create(). You can then use this new
replica for your sync.

You can refer to the topics under the WinFS Sync node in the WinFS SDK for
more details about replicas and synchronization scopes.

I hope that helps,
Neil

--
Neil Padgett [MSFT]
[email protected]
This posting is provided "AS IS" with no warranties, and confers no rights.
 

My Computer

J

Jérôme Piquot

Thanks for this informations.

Regards

"Neil Padgett [MSFT]" <[email protected]> a écrit dans le
message de news: [email protected]...
> "Jérôme Piquot" <[email protected]> wrote in message
> news:%[email protected]
>> Hello,
>>
>> It seems that everithing works if the réplica is in the folder containing
>> the data to sync or in a parent folder.
>>
>> if items are in //mypc/Default Store/Krystal and the replica file in
>> //mypc/Default Store/Replica it does not work.
>>
>> Why?

>
> [clip]
>
> Hi Jérôme,
>
> In WinFS Sync we have the concept of a replica. A replica defines some set
> of items in a WinFS store that can be synchronized in a sync session. In
> Beta 1, WinFS Sync allows you to create a replica whose scope is defined
> as all items under some container. So, when you call
> Replica.Create(myReplicaRoot), where myReplicaRoot is some container of
> your choosing, you are creating a replica encompassing all items contained
> under myReplicaRoot. The Replica item you create in WinFS is used by the
> system to store synchronization metadata associated with that
> synchronization scope. When you see a Replica item attached to some
> container in WinFS, you know that container is the root of a
> synchronization scope.
>
> In your case you've created a replica whose scope is all entities under
> \Replica. So, you can't use this replica to synchronize the items
> contained in \Krystal as those items are not within the synchronization
> scope for that replica. If you would like to synchronize items contained
> in \Krystal, you should create a replica containing those items by
> supplying the Krystal folder as the first argument to Replica.Create().
> You can then use this new replica for your sync.
>
> You can refer to the topics under the WinFS Sync node in the WinFS SDK for
> more details about replicas and synchronization scopes.
>
> I hope that helps,
> Neil
>
> --
> Neil Padgett [MSFT]
> [email protected]
> This posting is provided "AS IS" with no warranties, and confers no
> rights.
>
 

My Computer

Top