CN101126987A - 流处理系统中的软件替换 - Google Patents
流处理系统中的软件替换 Download PDFInfo
- Publication number
- CN101126987A CN101126987A CNA2007101418838A CN200710141883A CN101126987A CN 101126987 A CN101126987 A CN 101126987A CN A2007101418838 A CNA2007101418838 A CN A2007101418838A CN 200710141883 A CN200710141883 A CN 200710141883A CN 101126987 A CN101126987 A CN 101126987A
- Authority
- CN
- China
- Prior art keywords
- upgrading
- subsystems
- software
- redundant
- stream processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种用于用冗余来替换如媒体网关的流处理系统的软件的方法,该方法包括:在当前版本运行的同时加载软件或该软件的一部分的升级,并且合并和激活所述升级,以便运行的升级接管功能性,其中,用于需升级的可操作子系统的冗余子系统被重配置为独立子系统,并且在可操作子系统用当前版本仍可操作的同时将升级加载到独立子系统上。然后在可操作子系统和独立子系统之间同步可操作上下文信息以同步这两个运行的子系统,并且在同步之后,运行的独立系统无损地接管(以稳定承载维护)可操作子系统的功能性并变为运行升级的可操作子系统。最后,升级被加载到被重配置为冗余子系统的初始操作的子系统上。本发明还涉及流处理系统和计算机软件产品。
Description
技术领域
本发明涉及一种用于替换流处理系统的软件的方法、流处理系统以及计算机软件产品。
背景技术
媒体网关在下一代网络(NGN)中用作电信级网络单元。典型的网关结构,尤其对于高容量应用,是建立在如电路接口模块、交换机结构模块等的不同硬件模块之上,所述硬件模块也用于系统可扩缩的目的。
电信级意味着系统可用性的特定需求,所述需求可以映射为非常小的系统中断时间图(time figure)。因此,运转和维护活动(例如软件替换过程)不应当增加系统中断时间,并且此外应当在不影响运行于该系统上的当前已建立的业务的情形下是可执行的。
软件替换过程可以再细分为两类:
不具有接口和数据上下文改变的软件替换过程;
具有接口和数据上下文改变的软件替换过程。
接口表示用于板间通信的系统内部软件接口。数据上下文表示上下文信息,现用/备用板同步需要该上下文信息作为满足系统稳定承载(bearer)维护需求的关键元素。术语系统理解为一种设备或者一组协作设备。
而在第一种情况下,当前的和目标的,即升级的和先前的版本的软件可以在同一个系统中一起运行。在第二种情况下,这不是立即可行的,因此必须引入专门机制来解决上述情形。
原则上,上述方法能够实现软件升级和降级过程,以及在非连续软件版本之间的软件替换。新发明的软件替换过程适于以有效的方式满足导言部分中所提及的需求。
不具有接口和数据上下文改变的软件替换过程,典型地顺次利用内建系统冗余能力来实现,这意味着当前版本和升级版本要同时在同一系统中运行。其它实现只集中于在没有稳定承载维护(非无损的)的情况下最小化服务中断时间(快速启动)。
在US2003130985中,公开了一种用于在利用影子系统运行的同时升级数据库的方法。其中,在升级期间,影子系统作为数据库的新实例而被建立。影子系统可以是一种完整的中央实例,并且包括要安装的新版本。新版本或“目标版本”可以代表软件应用的版本和/或用户想要在将来运行的数据。目标版本可以替换当前运行于数据库上的数据和/或软件应用的源版本作为主生产系统的一部分。在一个实施例中,影子系统可以与主生产系统并行地运转,从而最小化升级所需的中断时间。
上述应用尤其集中于可执行升级,即可执行软件部分。这种升级过程在WO0106798中被公开。所公开的方法及装置可以在持续运行的系统上升级软件,同时系统在运转。一套基本的软件被建立,其在其存储结构中含有预留存储区。升级源文件被建立在该预留存储区中。提取升级映像并且将其转换成可加载的升级映像。报头指示了要将升级软件下载到系统中的哪个地方,并且也标识了在预留存储区中的位置,即要将升级软件存储在系统相关组件中的位置。将升级软件下载到系统中各个组件中的存储设备中的各个预留存储区。下载可以在系统运转时进行,因为预留存储区不包含活代码。利用跳越指令序列来激活或停用升级软件。
这不适用于像面向硬实时约束的媒体网关的流处理系统,因为升级过程本身会影响执行并且会造成故障。
技术问题是提供一种机制,该机制可以在没有服务中断且无须稳定的承载维护的情况下、与升级即替换当前版本的软件所带来的改变的量和范围无关地实现在运行的分布式系统中的软件替换。
具有接口和数据上下文改变的软件替换过程不能采用这种方法,因为这种机制无法避免当前的和升级的软件在不同的模块中同时运行(这会导致系统不正常运转,甚至会导致系统崩溃)。
这个问题可以通过一种用于升级具有冗余的流处理系统的软件方法来解决,该方法包括以下步骤:在运行当前版本的同时加载软件或是软件的一部分的升级,并且合并和激活该升级,以便运行的升级接管功能性,其中所述流处理系统包括用于可操作子系统的冗余子系统。所述冗余子系统被重配置为独立的子系统,并且当可操作子系统仍旧在当前版本中可操作时将升级软件加载到该独立系统上。然后可操作上下文信息在所述可操作子系统和所述独立子系统之间被同步从而同步两个运行的子系统,并且在同步之后,运行的独立子系统接管所述可操作子系统的功能性,并且成为运行所述升级的操作。最后,升级被加载到最初的操作子系统上,该子系统被重配置为冗余子系统。
发明内容
所述问题尤其通过一种流处理系统而得到解决,该流处理系统包括可操作子系统和用于该可操作子系统的冗余子系统,该流处理系统适用于执行运行在两个子系统上的软件的升级。所述流媒体处理系统包括用于重配置所述冗余子系统为运行升级的独立子系统的重配置装置,所述流处理系统包括子系统之间的互通装置,其中,所述互通装置适于在两个子系统之间同步可操作上下文信息,所述重配置装置适于将功能性从所述可操作子系统转移至所述独立子系统从而使得该独立子系统可操作,所述流处理系统包括用于升级所述可操作子系统的升级装置,以及所述重配置装置适于在升级之后将所述可操作子系统重配置为冗余子系统。
而且,所述问题通过一种包括用于流处理的组件及该组件的冗余组件的计算机软件产品而得到解决,其中,所述计算机软件产品包括用于重配置所述冗余组件为升级的独立实例的编程装置,该组件和独立实例包括用于同步可操作上下文信息的接口,以便该独立实例可以接管该组件的功能性并且该组件可以被单独地升级以成为冗余组件。
所述方法依赖于冗余系统结构。要更新为替换软件版本的子系统,即升级,需要各自的冗余子系统。
基于该冗余系统结构,可以把冗余组件转变为完全解耦的两个激活组件实例。一个实例运行当前的版本,而另一个实例运行升级版本。在此期间,该冗余组件无法弥补故障,即容错降级。
引入了一种专用的简单且稳定的接口,以实现两个媒体网关组件实例之间的上下文数据同步。除该指定接口外,所述媒体网关组件实例并行运行而不与其它组件互通,即该媒体网关组件实例必须彼此完全孤立地运行。
交换的上下文数据用如XML或者ASN.1的标准内容描述语言来描述。
运行所述升级的组件实例通过发布(roll-out)机制而将接收的上下文数据应用于其软件子模块。所述发布机制表示这样一种机制:犹如上下文数据从外部接口中导出,如H.248(与一般的软件子模块级上的现用/备用同步相反)。所述发布机制规定独立组件要与运行当前版本的组件同步。
最后,仍运行当前版本的媒体网关组件实例也被升级,并且该系统再次合并为具有冗余媒体网关组件的一个完整的冗余媒体网关系统。
本发明的主要优点是可以在没有服务中断且无需稳定的承载维护的情况下、与软件更改(有w/o接口和上下文数据改变)的量和类型无关地执行无损的软件替换。
同样支持软件的升级和降级过程,也可以支持非连续软件版本的替换(因为使用内容描述语言)。
只要还没有发起系统接管,所述软件替换过程就可以在不卸下任何承载的情况下随时被中断/停止。系统返回冗余模式。
所述软件替换过程的风险由于下述事实而被最小化,即媒体网关组件实例之间的通信通过单一的简单通信点而被限制为最小。
使用内容描述标准语言确保了所述接口的可维护性。
使用所述发布机制确保了媒体网关组件实例之间的同步点保持为最小。每个媒体网关组件实例可以使用其正常的内部机制来适当地建立承载。
附图说明
通过附图来详细描述本发明,其中:
图1示出了根据本发明的流处理系统;
图2和3示出了根据本发明的用于升级流处理系统的方法;
图4示出了根据本发明的计算机软件产品;
下面,本发明被描述为应用于媒体网关。
具体实施方式
运行媒体网关组件是一种特例,该媒体网关组件必须在1+1的设备保护模式下升级,如在欧洲专利申请No.06300844.5A中所描述的。在该软件替换过程开始之前,N+1配置必须被(临时)重配置为1+1配置。
图1示出了所述媒体网关配置或一般的流式处理系统MG。该流式处理系统包括子系统I,每个子系统具有用于接收和传送流的外部接口。子系统需要运行操作软件SW来进行操作。
如图2所示的软件替换过程可以分为以下步骤:首先,创建当前软件版本CR的两个独立实例,一个运行在第一个组件I1上,另一个在冗余组件I2上。作为该步骤的前提,系统必须在1+1设备保护方案下运行。优选地,任何系统冗余方案都必须有足够的灵活性设计以在N+1与1+1方案之间在线转换,从而以迭代方案升级组件。
两个实例I1和I2运行分别的软件版本,首先彼此孤立地运行,图中用垂直虚线显示。运行当前版本的实例I1,保持它的(H.248)接口eI为激活;冗余实例运行升级UG并且等待上下文信息来进行同步。
为了确保在软件替换过程中维持激活的承载通道,上下文数据将通过内部接口iI在运行当前版本CR的实例I1与运行升级UG的实例I2之间被同步。
因为这是两个实例I1和I2之间唯一的通信通道,所以该接口必须与标准操作无关地被定义,即它必须稳定并且因此专门用于该应用。
接收上下文数据的实例I2必须向其软件模块(向南的)发布例如媒体网关情形下的承载配置的流式上下文。上下文数据同步以及发布机制包括稳定承载以及建立/拆除阶段的承载。
在两个实例I1和I2同步后,已经在升级UG上运行的实例I2通过维持稳定承载而准备接管。如所述,上下文被同步;在实例I1和I2中都完全建立了承载。因此可以以无损的方式执行系统接管。
因此,系统接管过程限于外部接口重配置。这可以是例如在硬件中实现以最小化承载中断的简单的交换机。此时正在运行升级UG的实例I2使用例如为H.248接口的外部接口eI。
通过用新版本初始化仍在运行当前版本的实例I1而结束本过程。
然后,正运行当前版本CR的实例I1与运行升级UG的实例I2可被合并为一个完全冗余的1+1受保护系统,如图3所示。
有关板将被加载所述升级,并且该板将被指派为“备用”状态。现用/备用板同步遵循现用/备用板同步的常规的系统原理。从此刻起,所述流式处理系统运行升级,此外恢复整个系统冗余。
图4示出了软件结构的原理图(在上下文数据同步阶段)。图中示出了必须被升级UG替换的当前版本CR,即新的版本。CR和UG都包含多个部分,即当被执行时处理流的应用AP1,AP2。在升级阶段,必须指示并传达该流处理的计时以同步CR和UG二者。因此,同步事件通过事件同步编码器/解码器D而变得明确。优选地,这种指示使用如ASN.1Syntax或XML的已建立的格式。
所述同步事件可能是过程状态、专门的变量或值,其中类型优选地用于匹配在版本CR和UG二者中同步事件的发生。
除了通过内部接口iI传送所生成的描述流,也可能发生例如消除不必要同步信息的变换,例如降低的状态变量。所述变换也可以针对不可用的同步信息而定义默认值。
与事件描述指示相结合的所述变换确保了多个版本之间的稳定迁移。因为编码器/解码器D可以标准化并且为同步提供有关的必要事件描述。这实现例如事件结构的改变和软件反应性,这在同步原始数据时几乎是不可能的,如内部协议栈事件。
标准化还可以通过不复制或提供冗余事件信息而避免不一致性。
描述流在升级UG处被解码以利用记录的事件来规定正运行的升级。当升级的和当前的版本同步时可进行没有任何中断的切换。
Claims (3)
1.一种用于以冗余替换如媒体网关(MG)的流处理系统的软件的方法,该方法包括以下步骤:
-在当前版本(CR)运行的同时,加载所述软件或者是软件的一部分的升级(UG),并且
-合并和激活所述升级,以便运行中的所述升级接管功能性,其特征在于,
所述流处理系统包括用于应当被升级的可操作子系统(I1)的冗余子系统(I1),
-所述冗余子系统被重配置为独立子系统(I2)并且所述升级(UG)被加载到所述独立系统上,同时所述可操作子系统(I1)仍旧可以以当前版本(CR)来操作,
-然后在所述可操作子系统(I1)和所述独立系统之间(I2)同步可操作上下文信息,以同步这两个运行的子系统,并且
-在所述同步之后,运行的所述独立系统(I2)无损地接管所述可操作子系统的功能性,并且成为运行所述升级(UG)的可操作子系统,
-最后,所述升级被加载到被重配置为冗余子系统的初始操作的子系统(I1)上。
2.如媒体网关(MG)的流处理系统,其包括可操作子系统(I1)和用于该可操作子系统(I1)的冗余子系统,所述流处理系统适于执行运行在两个子系统上的软件的升级(UG),其特征在于,所述流媒体处理系统包括用于将所述冗余子系统重配置为运行所述升级(UG)的独立子系统(I2)的重配置装置,所述流处理系统包括子系统之间的互通装置,其中,所述互通装置(iI)适于在两个子系统之间同步可操作上下文信息,以及其中,所述重配置装置适于将功能性从所述可操作子系统转移至所述独立子系统,以使得所述独立子系统可操作,以及其中,所述流处理系统包括用于升级所述可操作子系统的升级装置,以及其中,所述重配置装置适于在升级后将所述可操作子系统(I1)重配置为冗余子系统。
3.一种计算机软件产品,其包括用于流处理的组件(I1)及用于该组件的冗余组件(I2),其特征在于,所述计算机软件产品包括用于重配置所述冗余组件为升级的独立实例的编程装置,所述组件和所述独立实例包含接口(iI)用于同步可操作上下文信息,以便所述独立实例可以接管所述组件的功能性并且所述组件可以被独立地升级以变为冗余组件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06300878A EP1890230A1 (en) | 2006-08-15 | 2006-08-15 | Software replacement in a stream processing system |
EP06300878.3 | 2006-08-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101126987A true CN101126987A (zh) | 2008-02-20 |
Family
ID=38543545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007101418838A Pending CN101126987A (zh) | 2006-08-15 | 2007-08-15 | 流处理系统中的软件替换 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20080256528A1 (zh) |
EP (1) | EP1890230A1 (zh) |
CN (1) | CN101126987A (zh) |
WO (1) | WO2008019950A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106406928A (zh) * | 2016-08-24 | 2017-02-15 | 北京奇艺世纪科技有限公司 | 一种软件热插拔方法及系统 |
CN107158705A (zh) * | 2017-05-18 | 2017-09-15 | 腾讯科技(深圳)有限公司 | 服务的更新方法和装置 |
CN111638890A (zh) * | 2019-03-01 | 2020-09-08 | Abb瑞士股份有限公司 | 在进程控制系统中的节点的在线固件升级 |
US10785272B2 (en) | 2014-10-22 | 2020-09-22 | Huawei Technologies Co., Ltd. | Streaming application upgrading method, master node, and stream computing system |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090076628A1 (en) * | 2007-09-18 | 2009-03-19 | David Mark Smith | Methods and apparatus to upgrade and provide control redundancy in process plants |
US8230416B2 (en) * | 2007-12-31 | 2012-07-24 | Sap Ag | System, method and article of manufacture for using shadow installations of software modules during distributed system upgrade |
US8479187B2 (en) * | 2008-12-02 | 2013-07-02 | Sap Ag | Adaptive switch installer |
US9092474B2 (en) | 2010-10-12 | 2015-07-28 | Sap Se | Incremental conversion of database objects during upgrade of an original system |
US8984514B2 (en) | 2010-11-30 | 2015-03-17 | Sap Se | Modifying scheduled execution of object modification methods associated with database objects |
US9626390B2 (en) | 2010-12-27 | 2017-04-18 | Sap Se | Shadow system start during upgrade of an original system |
US8527471B2 (en) * | 2010-12-27 | 2013-09-03 | Sap Ag | Shadow system mirroring of an original system during uptime of an upgrade process |
CN102394769B (zh) * | 2011-10-14 | 2014-07-23 | 迈普通信技术股份有限公司 | 数据平滑方法和装置 |
US9213728B2 (en) | 2011-12-14 | 2015-12-15 | Sap Se | Change data capturing during an upgrade |
US9841971B1 (en) * | 2015-03-11 | 2017-12-12 | Intuit, Inc. | Embedding software updates into content retrieved by applications |
US10037203B1 (en) * | 2016-07-28 | 2018-07-31 | National Technology & Engineering Solutions Of Sandia, Llc | Real-time software upgrade |
CN109189444A (zh) * | 2018-10-11 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种服务器虚拟化系统的管理节点的升级控制方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155837A (en) * | 1989-03-02 | 1992-10-13 | Bell Communications Research, Inc. | Methods and apparatus for software retrofitting |
US5469503A (en) * | 1993-07-27 | 1995-11-21 | Aspect Telecommunications Corporation | Method for resynchronizing secondary database and primary database with preservation of functionality of an automatic call distribution system |
US5996001A (en) * | 1994-09-27 | 1999-11-30 | Quarles; Philip | High availability on-line transaction processing system |
US6157932A (en) * | 1998-06-04 | 2000-12-05 | Aspect Telecommunications | Method of updating a redundant service system while preserving transaction data in a database featuring on-line resynchronization |
US6698017B1 (en) * | 1999-07-16 | 2004-02-24 | Nortel Networks Limited | Software migration on an active processing element |
GB2359385B (en) * | 2000-02-16 | 2004-04-07 | Data Connection Ltd | Method for upgrading running software processes without compromising fault-tolerance |
US7171606B2 (en) * | 2003-03-25 | 2007-01-30 | Wegener Communications, Inc. | Software download control system, apparatus and method |
-
2006
- 2006-08-15 EP EP06300878A patent/EP1890230A1/en not_active Withdrawn
-
2007
- 2007-08-02 WO PCT/EP2007/058011 patent/WO2008019950A1/en active Application Filing
- 2007-08-14 US US11/838,655 patent/US20080256528A1/en not_active Abandoned
- 2007-08-15 CN CNA2007101418838A patent/CN101126987A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10785272B2 (en) | 2014-10-22 | 2020-09-22 | Huawei Technologies Co., Ltd. | Streaming application upgrading method, master node, and stream computing system |
CN106406928A (zh) * | 2016-08-24 | 2017-02-15 | 北京奇艺世纪科技有限公司 | 一种软件热插拔方法及系统 |
CN106406928B (zh) * | 2016-08-24 | 2019-08-09 | 北京奇艺世纪科技有限公司 | 一种软件热插拔方法及系统 |
CN107158705A (zh) * | 2017-05-18 | 2017-09-15 | 腾讯科技(深圳)有限公司 | 服务的更新方法和装置 |
CN107158705B (zh) * | 2017-05-18 | 2018-09-18 | 腾讯科技(深圳)有限公司 | 服务的更新方法和装置 |
CN111638890A (zh) * | 2019-03-01 | 2020-09-08 | Abb瑞士股份有限公司 | 在进程控制系统中的节点的在线固件升级 |
Also Published As
Publication number | Publication date |
---|---|
EP1890230A1 (en) | 2008-02-20 |
WO2008019950A1 (en) | 2008-02-21 |
US20080256528A1 (en) | 2008-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101126987A (zh) | 流处理系统中的软件替换 | |
US6463584B1 (en) | State copying method for software update | |
US7240188B2 (en) | Storage system | |
US8924498B2 (en) | Method and system for process control network migration | |
CN101595667B (zh) | 协调定时网络中的服务器同步的方法、装置和系统 | |
EP2049987B1 (en) | Apparatus and method for allowing a fail-back to a prior software release in a process control system | |
CN102360305B (zh) | 用于航天计算机的VxWorks操作系统裁剪定制方法 | |
CN1818873A (zh) | 用于虚拟机中的集中式软件管理的系统和方法 | |
CN103345470A (zh) | 一种数据库容灾方法、系统及服务器 | |
CN101114232A (zh) | 在计算机系统中分发盘映像的方法 | |
CN112477919B (zh) | 一种适用于列车控制系统平台的动态冗余备份方法及系统 | |
CN110033095A (zh) | 一种高可用分布式机器学习计算框架的容错方法和系统 | |
CN102207879A (zh) | Lua脚本热更新方法及系统 | |
CN105556407A (zh) | 故障容限工业自动化控制系统 | |
JP4770242B2 (ja) | ソフトウェア更新情報配布システム及びソフトウェア更新情報配布方法 | |
CN100477603C (zh) | 一种多功能网络应用设备及启动和在线升级方法 | |
US7617175B1 (en) | Method and apparatus for upgrading a database in a redundant environment by release chaining | |
CN105827435A (zh) | 一种基于双中心系统保持业务连续运行的系统及方法 | |
US20240036852A1 (en) | In-service software upgrade centralized database versioning and migration | |
Santraine et al. | From tore Supra to WEST: Evolution of the CODAC infrastructure | |
EP4175262A1 (en) | Remote terminal unit processor redundancy synchronization | |
Ockwell et al. | Configuration management in an open architecture system power system control | |
US20220215001A1 (en) | Replacing dedicated witness node in a stretched cluster with distributed management controllers | |
Masetti et al. | Increasing Availability by Implementing Software Redundancy in the CMS Detector Control System | |
Jibb et al. | Avionics architecture standards as an approach to obsolescence management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |