首页> 中国专利> 用于在网络中内容同步以及检测同步递归的方法和系统

用于在网络中内容同步以及检测同步递归的方法和系统

摘要

一种实现用于在CDS传送操作中检测和避免同步递归的内容同步的处理的方法和系统。在多个装置的CDS容器之间形成同步关系。随后基于所述关系执行内容同步处理以避免同步递归。

著录项

  • 公开/公告号CN101502035A

    专利类型发明专利

  • 公开/公告日2009-08-05

    原文格式PDF

  • 申请/专利权人 三星电子株式会社;

    申请/专利号CN200780029853.6

  • 申请日2007-08-06

  • 分类号H04L7/00;

  • 代理机构北京铭硕知识产权代理有限公司;

  • 代理人郭鸿禧

  • 地址 韩国京畿道

  • 入库时间 2023-12-17 22:27:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-23

    未缴年费专利权终止 IPC(主分类):H04L7/00 授权公告日:20130213 终止日期:20180806 申请日:20070806

    专利权的终止

  • 2013-02-13

    授权

    授权

  • 2009-09-30

    实质审查的生效

    实质审查的生效

  • 2009-08-05

    公开

    公开

说明书

技术领域

本发明涉及内容同步,具体地,涉及在内容同步期间检测同步递归。

背景技术

通用即插即用(UPnP)架构提供用于包括包含各种内容的多个装置的网络中的内容管理的内容目录服务(CDS)。CDS允许用户使用CDS的内容浏览特点访问装置中的内容,而无需与所述装置直接交互。

用于装置的CDS包括分层结构,该分层结构包括保持包含一项或更多项的对象的容器,并该CDS可按分级方式将其它容器包括在其中。每个对象包括具有标识符和可选元数据的描述。所述对象还可包括内容或用于内容的定位器。用户可浏览用于对象的CDS。

CDS还支持CDS对象的上传和下载。为了将对象从一个CDS传送到另一CDS,用户搜索/浏览用于传送的对象,并使用CDS来传送(例如,输入和/或输出)这些对象。

当传送发生一次时可接受这样的传送操作。然而,对正则基的一系列这样的操作是繁琐的、费时的并易产生错误。例如,如果用户期望在移动装置中和在媒体服务器的音乐文件夹中具有相同的音乐内容,则用户必须经由CDS浏览对象并确定传送哪个对象,并随后执行传送。此外,为了同步用户期望其包含改变的内容的各个装置中的CDS容器,一旦音乐内容(对象)改变则用户就必须重复这些操作。此外,用户必须小心不要引入当参与内容同步的装置无限期地从彼此复制对象时发生的递归。因此,需要一种解决上述缺点的用于网络中的内容同步的方法和系统。

发明内容

技术方案

本发明提供了一种实现用于在多个装置的网络之间同步内容的处理的方法和系统。

本发明提供了一种用于在CDS传送操作中检测和避免同步递归的内容同步的处理。在多个装置的CDS容器之间形成同步关系,其中,基于所述关系执行内容同步处理(上传/下载)以进行检测,从而避免同步递归。

参照以下描述、附加权利要求和附图,本发明的这些和其它特点、方面和优点将会变得更加易于理解。

有益效果

本发明提供了一种实现用于在多个装置的网络之间同步内容的处理的方法和系统。本发明提供了一种用于在CDS传送操作中进行检测并避免同步递归的内容同步的处理。在多个装置的CDS容器之间形成同步关系,其中,基于所述关系执行内容同步处理(上传/下载)以进行检测,从而避免同步递归。

如本领域的技术人员所知,根据本发明,可以以多种方式实现上述的示例性架构,诸如由处理器执行的程序指令、逻辑电路、专用集成电路、固件等。已经参照本发明的特定的优选版本详细地描述了本发明,然而,其它版本也是可行的。因此,附加权利要求的精神和范围不应局限于在此包含的优选版本的描述。

附图说明

图1示出根据本发明的用于在网络中的两个装置中的CDS容器中同步对象的示例结构;

图2示出根据本发明的用于在网络中的两个装置中的CDS容器中同步对象的另一更详细的示例结构;

图3示出在图2的网络中为内容同步设置的同步的示例;

图4示出用于在图2的网络中的内容同步的同步操作的示例;

图5示出在包括三个装置的网络中的示例同步循环;

图6示出在包括三个装置的网络中的另一示例同步循环;

图7A-7E示出由于同步循环引起的同步递归的示例;

图8A-8D示出由于同步循环引起的对象映射冲突的示例;

图9示出根据本发明的实施例的用于在同步关系的创建期间检测循环的处理的流程图;

图10A示出根据本发明的在同步关系的创建期间检测循环的示例;

图10B示出根据本发明的在同步关系的创建期间检测循环的另一示例;

图11A-11D示出在同步关系的创建期间可能不被检测到的循环的示例;

图12示出根据本发明的实施例的用于在同步处理期间检测同步循环的处理的流程图。

最优模式

在一个实施例中,处理包括在网络中的多个装置的每个中提供CDS,其中,每个CDS包括用于存储数据对象的容器的分层结构,其中,每个容器包括全局唯一标识。

在所述用于同步在选择的容器中的对象的两个或更多个装置中的每对装置之间创建同步关系,其中,所述每个对象包括全局唯一标识,从而所述同步关系与一个或多个现有同步关系的组合免于递归同步循环。

本发明提供了一种用于在CDS传送操作中进行检测并避免同步递归的内容同步的处理。在多个装置的CDS容器之间形成同步关系,其中,基于检测的所述关系执行内容同步处理(上传/下载)以进行检测,从而避免同步递归。

具体实施例

本发明模式

本发明提供了一种用于在CDS传送操作中的包括同步递归的检测的内容同步的方法和系统。在一个实施例中涉及用于检测的内容同步处理,该内容同步处理实现在网络中的多个装置中的CDS之间的内容同步,从而避免导致同步递归的同步循环。

内容同步操作由控制点起动并在两个或更多个被控装置中的CDS之间发生。通常,控制点包括能够控制在网络中提供服务的一个或更多被控装置的装置。由于控制点和被控装置是逻辑实体,物理装置可作为一个或多个控制点和/或提供几种服务的一个或多个被控装置。

图1示出示例,其中,网络10包括控制点(CP)12和两个被控装置14和16。图1还示出下面描述的同步组17。被控装置14和16的每一个实现包括一个或多个容器的CDS。被控装置14包括容器18A,被控装置16包括容器18B。容器18A和容器18B的每一个包括一个或多个对象19并且可包括一个或多个其它容器。

根据本发明,通常由控制点起动的同步处理比较位于两个或更多个被控装置中的不同CDS的对象,以将一个被控装置中的CDS容器中的对象的元数据和资源与另一个被控装置中的CDS容器中的对象的元数据和资源进行同步。这允许控制点执行同步操作而无需多次执行CDS功能(动作),并避免如下进一步描述的同步递归。

这样,CP12通过输出和/或输入(例如,上传和/或下载)被控装置14和装置16的CDS中的元数据和资源来执行同步。根据本发明的同步处理允许CP 12配置一次CDS容器18A与CDS容器18B之间的关系,然后每当需要同步时基于该关系触发输出/输入操作。

为了促进以下所述的示例的描述和理解,现描述特定同步术语:

同步容器:由控制点指定用于同步的CDS容器。同步容器的所有后代是用于同步的候选。

同步对象:将被同步的CDS对象。该对象是同步容器的后代,并将元数据(例如,数字项声明语言(DIDL)—Lite对象)及其本地资源包括在CDS中。此处的本地资源是在相同装置的CDS中存在的资源,没有在网络中分布。

同步关系:当两个容器互相同步时,这两个容器具有由同步描述符描述的同步关系。

同步信息:同步信息表示CDS中的所有同步描述符。同步描述符提供基本信息以在两个CDS之间执行同步。描述符包括信息,诸如同步策略、相对装置、本地同步对象等。当控制点定义两个同步容器之间的新同步关系时创建描述符。对于不同的内容同步存在不同的同步描述符。为每个同步关系创建一个同步描述符。

同步策略:控制点(或用户)创建这样一种同步策略:该同步策略描述在输出/输入操作中哪个涉及的被控装置是同步信息的源/接收器,当在CDS中的改变的对象之间存在冲突时哪个被控装置具有优先。当每个被控装置不同地修改了同步对象时发生冲突。

同步组:与同步容器有关的一组容器。示例是图1中的同步组17,同步组17包括上至根的同步容器18A的所有容器祖先15;以及下至叶的同步容器18A的所有容器后代13。

控制点通过选择被控装置中的CDS容器作为将与另一被控装置中的CDS同步的同步容器,来建立用于同步关系管理的同步关系。同步容器中的所有对象自动成为同步操作的目标。控制点创建同步描述符,该同步描述符包括同步策略和同步所需的其它信息。控制点可建立和移除同步关系,并且在起动内容同步之后,控制点可离开网络。

同步策略描述内容传送的类型。例如,类型1传送包括“单向”传送,其中,在两个被控装置中的一个中的CDS是提供同步对象的源,在两个被控装置中的另一个中的CDS是从源接收同步对象的接收器。在源装置中的CDS不改变。除了特定“被保护”内容之外,接收装置移除接收器装置中的同步容器中的所有内容,并在同步操作期间使用从源装置接收的对象来更新接收器装置中的CDS容器。类型2传送操作包括“双向”传送,其中,所述两个被控装置可以是源和接收器,并互相传送内容。被控装置之一具有用于在同步对象上避免冲突的优先权。同步策略还包括基于特性的策略。

在一对被控装置之间的同步操作期间,一个被控装置同步由相对(对等)被控装置提供的被同步的对象。一旦控制点为这两个被控装置建立了同步关系,则被控装置之一管理并提供用于相对被控装置的同步对象。所述被控装置提供从最后同步改变的同步对象。

在同步操作期间,被控装置决定同步对象被完全同步还是部分同步。除特殊情况外,当两个对象具有相同的元数据和资源时所述两个对象被完全同步。当一些,而不是所有元数据和资源被同步时,所述两个对象被部分同步。

在接收到对象的状态改变的指示后,被控装置还确定将被同步的对象的类型。在成功完成同步操作之后,由于不同的装置能力(例如,具有仅用于音频、视频和图像内容的CDS能力,而不具有调谐器、播放列表等的移动MP3播放器),两个被控装置可具有对象的不同设置。这样,同步说明书描述了如何操作被控装置支持的每个对象的能力(特性)。此外,同步数据完整性检查允许被控装置排除不包括在同步对象中的特殊的对象。当被控装置同步了由相对被控装置提供的所有同步对象时终止所述同步操作。

现对建立在网络中的被控装置之间的同步关系的示例进行描述。图2示出包括控制两个被控装置24和装置26(指定为装置A和装置B)的CP 22的示例网络20,其中,每个被控装置包括CDS。被控装置24还包括内容同步函数(即,内容同步特征)21,被控装置26还包括内容同步函数(即,内容同步特征)23。被控装置中的每个内容同步函数保持用于同步的信息,如用于对等装置的同步关系和对象改变状态。装置24和装置26中的内容同步函数21和23还分别包括控制点函数25和27,控制点函数25和27允许装置24和装置26互相通信。

CP 22分别从装置24和装置26中的内容同步函数21和23收集同步信息。CP 22寻找装置24和装置26之间的现有同步关系(例如,BrowseSyncRelationships()动作)。UPnP移除动作(例如,RemoveSyncRelationships()动作)允许CP 22移除同步关系。CP 22可决定是否对是同步关系的部分的对象进行同步。如果CP 22决定所述对象不再需要同步,则CP22可移除涉及所述对象的同步关系。对于一个CDS可存在多个同步关系。在一个示例中,用户利用控制点来创建用于将个人数字助理(PDA)的内容与计算机的内容进行同步的同步关系。在一段时间后,用户决定她不再想要将PDA与计算机同步,并移除所述同步关系。这种类型的关系移除独立于检测/移除同步循环。

接下来,CP 22在被控装置24和装置26之间创建新同步关系(例如,CreateSyncRelationship()和CreatePeerSyncRelationship()动作),还创建描述该新同步关系的描述符。

这两个被控装置24和装置26之间的同步操作实现为主(源)装置(例如,Synchronize()动作)和从(接收器)装置(例如,InitializeSync()动作)。

对每个容器执行同步。在单向同步示例中,CP 22选择接收器被控装置的CDS中的特定容器作为同步容器(例如,图1中的同步容器18A)。用于接收器被控装置的内容同步函数使用在其中的改变日志29以记录同步容器中的所有对象的改变信息。在CDS对象特性中保存改变日志。每个对象记录什么已经被改变。当CP 22触发同步时,这两个被控装置从它们的日志29交换对象改变状态。基于接收的对象改变状态,接收器被控装置从源被控装置的CDS获得资源并更新接收器被控装置CDS中的同步容器。

由被控装置中的CDS实现的内容同步特征(例如,内容同步函数21、23)管理同步关系,检测同步递归(循环),并经由嵌入的控制点函数(例如,控制点函数25、27)执行与对等被控装置的同步。由于同步涉及对等装置中的两个CDS之间的交互,故被控装置中的每个CDS的嵌入的控制点函数控制对等被控装置中的CDS的内容同步函数。UPnP架构不允许UPnP装置之间的交互,但是提供控制点与UPnP装置之间的交互。对于内容同步,作为同步的部分的UPnP被控装置经由控制点使用控制点函数互相通信。以这种方式,对等被控装置为操作(诸如,检索彼此的改变日志、检索同步关系信息等)进行通信。内容同步函数利用CDS中的相应改变日志来描述自从最后同步以来哪些对象添加到CDS、从CDS修改或删除哪些对象。

CP 22基于事件机制(例如,GetSyncProgress()动作)使用状态变量确定同步操作的状态,并可中断同步操作(例如,AbortSync()动作)。此外,在同步操作完成上,一组规则确保在装置24和装置26中的CDS之间的一致性。

可在单个容器中引起结构递归的任何同步关系必须被检测并避免。在进行同步操作的同时,不应改变同步容器中的相关同步对象。在一个示例中,当同步操作“A”改变另一同步操作“B”的同步对象时,可发生递归。这会引起改变同步操作“A”的同步对象的同步操作“B”的重新起动。这会再次引起改变同步操作“B”的同步对象的同步操作“A”的重新起动,等等。这会引起无穷的同步递归(循环)。

图3—4示出图2的网络20(也适用于图1的网络10)中的示例同步步骤,所述同步步骤包括如下的同步初始化阶段(图3)和同步操作阶段(图4)。所有在此描述中使用的动作名称(例如,Browse()、Search()、CreateSyncRelationship()等)仅是示例的目的,简单地使用这些名称是为了方便描述本发明的示例性实施例。如本领域的技术人员将认识到,也可对执行所述功能并达到所述结果的动作(或其它动作)使用其它名称。

I、同步信息初始化和设置

1、  1、CP 22调用Browse()或Search()动作来从每个装置24和装置26检索CDS对象,并选择将被同步的容器(例如,装置24中的容器)。

1、  2、CP 22创建与选择的容器的“同步关系”,包括步骤:

A、CP 22向具有初始化同步关系的装置24调用CreateSyncRelationship()动作,所述初始化同步关系包含同步标题、同步策略和对等装置信息。

1、  B、当装置24接收到CreateSyncRelationship()动作时,装置24使用内部创建且应为唯一的“同步关系ID”来响应CP 22。

1、  C、此外,在接收到CreateSyncRelationship()动作的情况下,装置24解析初始化同步关系,并寻找包括同步容器信息的对等装置信息。

在解析初始化同步关系之后,装置24执行以下步骤:

1、  i、装置24的嵌入的控制点函数25对对等装置26调用CreatePeerSyncRelationship()动作,以对对等装置26创建同步关系,其中,同步关系具有标识(SyncID)。

1、  ii、在调用CreatePeerSyncRelationship()动作的同时,装置24将新创建的同步关系ID(即,SyncID)传递给对等装置26。如果对等装置26不能将同步关系ID用作唯一ID,则对等装置26以表示给定的SyncID不唯一的错误代码(例如,7xx)做出响应。当装置24接收到这样的错误响应时,装置24使用不同的同步关系ID再次对对等装置26调用CreatePeerSyncRelationship()动作,且该处理一直进行直到动作响应成功(即,已经为所述同步关系建立唯一SyncID)或达到响应的最大时间限制(例如,30秒)。这样,每个对象的SyncID的值是全局唯一的。

II、同步操作

1、  1、当CP 22将同步装置24、装置26时,CP 22向装置24调用BrowseSyncRelationship()动作以获得当前同步信息。所述动作的结果是同步关系的集合,由此CP 22从该集合选择同步关系。

1、  2、CP 22通过对同步关系中的装置之一(例如,装置24)调用Synchronize()动作来触发同步操作。CP22传递同步关系ID以标识动作中的同步关系。作为结果,装置24执行以下步骤:

1、  A、装置24从CP 22接收Synchronize()动作,并通过检查与给定的同步关系相关的装置24中的CDS中的所有对象来为同步操作做准备。在所述同步操作期间不能修改被另一控制点锁定的每个对象。装置24锁定其CDS中的所有未锁定的对象,从而这些对象不能被改变。

1、  B、在锁定未锁定的对象之后,装置24对对等装置26调用InitializePeerSync()动作以开始对等装置26的初始化。当对等装置26接收到InitializePeerSync()动作时,对等装置26还通过锁定其用于所述同步关系的CDS中的所有未锁定的对象来为同步操作做准备。

1、  3、所述两个装置24和装置26如下进行同步:

1、  A、每个装置通过对对等装置调用GetSyncObjectsURI()动作来确定其对等装置的日志29中的改变,并从指向对等装置的CDS中的同步对象的对等装置接收地址,用于更新本地CDS。例如,装置24通过对对等装置26调用GetSyncObjectsURI()动作来确定对等装置26的日志29中的改变,并从指向对等装置26的CDS中的同步对象的装置26接收地址,用于更新装置24中的本地CDS。

1、  B、在接收到对GetSyncObjectsURI()动作的响应之后,每个被控装置通过例如使用HTTP协议格式连接到接收的地址来从对等装置检索同步对象的集合。

1、  C、在获得同步对象的情况下,每个被控装置更新其本身的(即,本地)CDS。

1、  D、每个被控装置还使用HTTP GET方法作为传输协议来传送资源。随后每个被控装置对其本地CDS中的每个对象更新同步关系的状态,以指示所述对象的同步是否成功。

1、  4、如果被控装置从指示同步结束的对等被控装置接收到事件消息,则接收控制器装置结束同步,并释放用于所述同步操作的锁定的对象。

新同步关系的创建可结合一个或更多其它已经存在的同步关系来创建循环。已经标识了两种类型的循环:

1、  类型1循环是用仅包括CDS中的同步根容器的同步关系创建的循环。图5示出包括CDS A、CDS B和CDS C的被控装置的网络30中的类型1循环的示例。CDS A与CDS B之间的同步关系32、CDS B与CDS C之间的同步关系34以及CDS C与CDS A之间的同步关系36仅分别包括同步根容器31、33和35。

2、类型2循环是用包括同步根容器和同步根容器的后代的同步关系创建的循环。图6示出包括CDS A、CDS B和CDS C的被控装置的网络40中的类型2循环的示例。CDS A与CDS B之间的同步关系42包括根容器41和根容器43。CDS C与CDS A之间的同步关系46包括根容器41和根容器45。然而,CDS B与CDS C之间的同步关系44包括根容器45和处于CDS B的根容器43的后代47。

图7A-7E示出包括三个被控装置的示例网络70,每个被控装置包括一个CDS,指定为CDS A、CDS B和CDS C。图7A-7E示出在形成类型2循环并导致同步递归的网络70中的进展。如图7A-7E所示,同步递归通过在每个同步操作期间复制相同的对象来引起CDS分层无限地产生。在图7A的网络70中,在CDS A和CDS B中的根容器之间形成同步关系71,在CDS C和CDSA的根容器之间形成同步关系72。然而,在图7B(与图6相似)中,CDS C与CDS B之间的同步关系73包括处于CDS C的根容器,还包括处于CDS B的根容器的后代74。这样,在图7C中,基于在CDS A与CDS B之间的同步关系71的同步操作导致从CDS B到CDS A复制后代结构74作为CDS A中的新后代结构75。所述改变引起基于在CDS C与CDS A之间的同步关系72的同步操作,该同步操作反过来导致从CDS A到CDS C复制所述新后代结构75作为另一后代结构76(图7D)。所述改变反过来引起基于在CDS C与CDS B之间的同步关系73的同步操作,该同步操作导致从CDS C到CDS B复制所述另一后代结构76作为另一后代结构77(图7E),等等。因此,包括类型2循环的CDS分层通过在每个同步操作期间复制相同的对象来无限地增长。

图8A-8D示出包括三个被控装置的网络80,每个所述被控装置包括指定为CDS A、CDS B和CDS C的CDS。图8A-8D示出网络80中的进程,其中,在CDS A、CDS B与CDS C之间形成类型1循环,并导致对象映射冲突。在图8A中,在根容器801和802、802和803以及801和803之间的同步关系81、82、83分别形成类型1循环。

对象811、812和813分别在容器801、802和803中。容器801、802和803都具有相同的祖先SyncID821。对象811、812和813保持表示这些对象的每一个保持其对等的ID(例如,remoteObjID)的对等信息。由于从具有祖先SyncID822的相同的对象811产生对象812和对象813,故对象811、812和813也具有相同的祖先SyncID 822。

图8B示出这样一种方案,对象811以这种方式修改:对象811不再是相同类型的对象,且用户期望不同于处理对象812来处理所述对象。为了实现这点,用户通过移除对象映射信息并改变对象811(或对象812)的祖先SyncID来永久性地打破在容器801与容器802之间的关系。例如,对象811的祖先SyncID被改变为ID 823。

图8C示出这样一种方案,在容器801与容器802之间再次创建同步关系。由于对象812的祖先SyncID与对象811的祖先SyncID不匹配,故CDS A将对象812识别为新添加的项。在容器801与容器802之间同步之后,CDS A创建具有祖先SyncID 822的新对象814并保持与对象812的对象映射信息。同样,CDS B将对象811看作新对象,并创建新对象815,将对象815与对象811同步并保持映射信息。

图8D示出这样一种方案,容器801与容器802同步。当容器801与容器803同步时,由于对象813与对象811通过映射信息互相链接,故它们如之前一样同步。此时,CDS C在具有祖先SyncID 822的CDS A中找到对象814。通常,CDS C尝试寻找具有祖先SyncID 822的另一对象,以将它们同步。然而,CDS C发现,对象813的祖先SyncID是SyncID 822,且其已经与另一容器(或对象)811具有关系。在该方案中,CDS A中的多项尝试与CDS C中的单个对象同步,这是由于类型1循环引起的对象冲突的示例。

为了避免由循环引起的同步递归、对象冲突和其它问题,本发明提供了当控制点在一对对等被控装置(例如,第一对等装置和第二对等装置)之间创建同步关系时检测循环的处理。

当创建时,向每个对象被分配唯一标识(ObjectID)。对于同步,还向对象分配可以与objectID相同的SyncID。当所述对象与另一对象同步时,复制所述SyncID,从而两个对象都具有相同的SyncID。每个同步的容器还包括当创建容器时分配的同步容器ID(correspondingSyncContainerID)。

为了在第二对等装置是源且第二对等装置是包括同步容器的接收器时建立同步关系,第二对等装置将correspondingSyncContainerID传递给第一对等装置。当试图创建同步关系时,第一对等装置检查从第一对等装置传递的correspondingSyncContainerID是否存在于用于第一对等装置中的同步关系的同步组。如果从第二对等装置传递的correspondingSyncContainerID与第一对等装置中的本地同步组的同步容器ID中的一个匹配,则正在创建的同步关系可引起导致同步递归的类型2循环。

例如,在图1中,为了同步容器18B与容器18A,第二对等装置16将用于容器18B的correspondingSyncContainerID传递到第一装置14。第一对等装置14检查容器18B的correspondingSyncContainerID是否存在于用于第一对等装置14中的本地同步关系的同步组17中。如果用于容器18B的correspondingSyncContainerID与本地同步组17的同步容器ID中的一个匹配,则正在创建的同步关系可引起导致同步递归的类型2循环。

为了基于同步关系确定在同步操作期间是否发生同步递归,第一对等装置检查具有相同correspondingSyncContainerID的同步容器的等级。如果这些容器是与同步容器分离的具有相同等级的祖先或后代,则新同步关系将不会导致同步递归。否则,该关系将导致同步递归,从而不创建这样的关系。如果些容器是与同步容器分离的具有相同等级的祖先或后代,则这意味着它们处于相同的分层等级。例如,CDS 1有具有后代B1和C1的容器A1,CDS 2有具有后代B2和C2的容器A2,CDS 3有具有后代B3和C3的容器A3。由于B1、B2和B3处于相同的分层等级为B1、B2和B3创建同步关系不可能创建同步循环。然而,由于A1、A2和B1处于不同的分层等级,为A1、A2和B1创建同步关系创建循环。

当具有后代(后代一父代)关系的容器直接与对等装置的具体容器同步时也发生同步递归。为了检测这样的情况,为支持内容同步函数的CDS容器中的每个对象提供SyncID。该SyncID唯一地标识对象,该对象可在网络中被同步(可同步),并且当同步了对象时,将所述对象从一个CDS传播(复制)到另一CDS。此外,在对象的寿命期间一定不能改变用于所述对象的SyncID的值,且甚至在所述对象已从CDS移除的情况下也一定不能将用于所述对象的SyncID的值重新分配给另一对象。

图9示出根据本发明的实施例的用于在同步关系的创建期间检测循环的处理90的流程图,包括步骤:

步骤92:开始在每个包括CDS的一对对等装置之间创建同步(sync)。

步骤94:第一对等装置检查处于第一对等装置的CDS中的同步目标根容器/对象或同步目标根容器/对象的其中一个沿袭(后代或祖先)是否具有与第二对等装置的CDS中的源根容器/对象相同的祖先SyncID。为具有与其父代相同的SyncID的SyncID的容器建立同步关系,可创建循环。例如,当CDSA具有后代B和后代C,其中,A是B的祖先时,如果B具有与A相同的SyncID,则B具有与其祖先相同的SyncID。如果是,进行步骤99,否则,进行步骤96。

步骤96:第二对等装置检查处于第二对等装置的CDS中的同步源根容器/对象或同步源根容器/对象的其中一个沿袭(后代或祖先)是否具有与第一对等装置的CDS中的源根容器/对象相同的祖先SyncID。如果是,进行步骤98,否则,进行步骤99。

步骤98:在同步目标根容器/对象与源根容器/对象之间建立同步关系。步骤99:在同步目标根容器/对象与源根容器/对象之间建立同步关系将创建循环,并从而避免建立同步关系。

当创建同步关系时,接收器(目标)对等装置检查处于接收对等装置的CDS中的同步目标根容器/对象或同步目标根容器/对象的其中一个沿袭(后代或祖先)是否具有与源对等装置的CDS中的源根容器/对象相同的祖先SyncID。如果是,则这样的关系将创建循环,并且不建立所述关系。同样,源对等装置检查同步源根容器/对象或同步源根容器/对象的其中任何一个沿袭的祖先SyncID是否与同步目标根容器/对象相同。如果是,则这样的关系将创建循环,并且不建立所述关系。

图10A示出在同步关系的创建期间检测循环的示例。在图10A中,在包含包括CDS A的源装置和包括CDS B的接收器装置的同步对等装置之间创建同步关系的同时,接收器装置检查处于CDS B中的目标根容器/对象1002或目标根容器/对象1002的其中一个沿袭(后代或祖先)是否具有与相应的CDS A中的源根容器/对象1001相同的祖先SyncID。如果是,则同步关系将创建循环。所述沿袭不限于父代或后代,并且包括容器/对象的所有后代和祖先。由于源根容器/对象1001和目标根容器/对象1002的后代1003具有相同的祖先SyncID 1021,故1001与1002之间的同步关系的创建将创建循环,并从而避免创建所述同步关系。

在图10B示出的另一示例中,在包含包括CDS B的源装置和包括CDS A的接收器装置的同步对等装置之间创建同步关系的同时,源装置通过其沿袭检查CDS B中的目标容器/根对象1003的祖先SyncID。如果源根容器/对象1003或源根容器/对象1003其中一个沿袭(后代或祖先)具有与相应的目标根容器/对象1001相同的祖先SyncID,则同步关系将创建循环,并避免所述同步关系。由于源根容器/对象1003的祖先1002具有与目标容器/对象1001相同的祖先SyncID,故在1001与1003之间的同步关系的创建将创建循环,并从而避免创建所述同步关系。

在同步关系的创建期间能够检测到类型1循环。此外,在大部分例子中,在同步关系的创建期间可检测到类型2循环。然而,在一些例子中,在同步关系的创建期间可能不会检测到类型2循环。图11A-11D示出这样的在同步关系的创建期间可检测到的类型2循环的方案。图11A示出分别包括容器(对象)1101、容器(对象)1102和容器(对象)1103的CDS A、CDS B和CDSC。在图11B中,CDS A与CDS B同步,其中,所述CDS B创建新同步根容器1104作为目标根容器。在图11C中,CDS C与CDS B同步,其中,所述CDS C选择1104作为目标根容器的父代。随后,CDS B创建同步根容器1105。在图11D中,CDS A与CDS C同步,其中,所述CDS A选择1103作为目标根容器的父代,CDS C创建同步根容器1106。

如图11D所示,在CDS C与CDS A之间形成关系的同时创建类型2循环同步循环。然而,使用上述的循环检测在关系创建时间期间不能检测到所述循环。然而,在同步操作期间可检测到类型2循环。在执行同步操作的同时,所有装置将在网络中且装置将能够从其它装置获得同步关系信息并可确定是否将创建循环。这样,本发明还提供了当执行同步操作时的循环检测,由此当对等装置中的CDS发现同步根对象的相同副本在后代(即,根对象下的任何后代)被创建时;CDS终止同步操作并报告错误。

图12示出用于在同步处理期间检测类型2循环循环同步的处理100的流程图,包括步骤:

步骤102:在包括源根对象的源装置与包括目标根对象的接收器装置之间创建同步(sync)关系。

步骤103:开始同步,并检查目标根对象SyncID是否与源根对象SyncID相同。如果是,进行步骤107,否则,进行步骤104。

步骤104:检查目标根对象的祖先SyncID是否与源根对象SyncID相同。如果是,进行步骤107,否则,进行步骤105。

步骤105:检查目标根对象的后代SyncID是否与源根对象SyncID相同。如果是,进行步骤107,否则,进行步骤106。

步骤106:继续同步处理。

步骤107:终止同步处理并报告错误。

如该领域的技术人员所知,根据本发明的以上描述的等级的例子可被以多种方法实施,诸如处理器执行的程序指令、逻辑电路、专用集成电路、固件等。参考本文中的特定优选版本对本发明进行了相当详细的描述,然而,其他版本也是可能的。因此,权利要求的精神和范围并不应对本发明包含的优选版本的描述进行限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号