CN107748703A - 一种包含时标容错与纠错机制的嵌入式数据存储方法 - Google Patents
一种包含时标容错与纠错机制的嵌入式数据存储方法 Download PDFInfo
- Publication number
- CN107748703A CN107748703A CN201710904928.6A CN201710904928A CN107748703A CN 107748703 A CN107748703 A CN 107748703A CN 201710904928 A CN201710904928 A CN 201710904928A CN 107748703 A CN107748703 A CN 107748703A
- Authority
- CN
- China
- Prior art keywords
- data
- time
- record
- markers
- block
- 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
Classifications
-
- 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/1446—Point-in-time backing up or restoration of persistent data
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种包含时标容错与纠错机制的嵌入式数据存储方法,包括以下几个步骤:(1)确定数据结构,用于提高数据存储的可靠性;(2)分配每种数据的存储空间,为每种数据配置一条索引表,并写入数据记录,写入数据记录时判断时钟是否发生异常,如果时钟异常,则写入虚拟时标,时钟正常时写入实际时标;(3)当需要对设定数据记录进行更新时,使用备份存储区的一个块对需要更新的数据进行中转。本发明通过在数据记录中使用虚拟时标与实际时标总共两种时标,能够在运行中自动检测嵌入式系统时钟混乱是否发生,并采取相应措施进行补救,并且在系统对时的时候自动进行纠错,可以避免给后续数据分析带来的严重错误。
Description
技术领域
本发明涉及一种包含时标容错与纠错机制的嵌入式数据存储方法,属于数据存储技术领域。
背景技术
随着嵌入式技术的高速发展,嵌入式系统已经广泛渗透到科学研究、工程设计、军事技术以及人们的日常生活等各种领域,无论在何种领域,嵌入式系统数据存储的可靠性都是一个被广泛关注的问题,它影响着产品的性能、稳定性和安全性。因此,对嵌入式系统的数据存储技术的研究就成了一个新的研究热点,并可能影响着未来嵌入式系统的发展方向。目前嵌入式系统广泛使用FLASH介质作为数据存储器,嵌入式系统运行时将历史记录按照时间顺序写入FLASH中,每条数据记录均带有时标。
当嵌入式系统在运行过程中遇到某种异常情况,如雷击、人为误操作等,使得系统的时钟出现混乱,系统后续的运行过程中将会一直使用错误的时标存储数据,这样后历史数据检索分析时将会发生错误。
发明内容
针对现有技术存在的不足,本发明目的是提供一种包含时标容错与纠错机制的嵌入式数据存储方法,通过在数据记录中使用虚拟时标与实际时标总共两种时标,能够在运行中自动检测嵌入式系统时钟混乱是否发生,解决了系统时间混乱引发的数据存储混乱问题。
为了实现上述目的,本发明是通过如下的技术方案来实现:
本发明的一种包含时标容错与纠错机制的嵌入式数据存储方法,包括以下几个步骤:
(1)确定数据结构,用于提高数据存储的可靠性;
(2)分配每种数据的存储空间,为每种数据配置一条索引表,并写入数据记录,写入数据记录时判断时钟是否发生异常,如果时钟异常,则写入虚拟时标,时钟正常时写入实际时标;
(3)当需要对设定数据记录进行更新时,使用备份存储区的一个块对需要更新的数据进行中转。
当系统存在外部对时或者手动对时,对之前设置为虚拟时间的数据记录进行系统时间更新。
上述系统时间的更新方法如下:
(1-1)检测设置时间的有效性;
(1-2)记录当前系统时间T0与即将要更新的时间T1,并更新系统时间为T1;
(1-3)将所有数据记录中只有虚拟时间的记录的实际时间字段进行写入,写入值=虚拟时间+(T1-T0),由于实际时间字段全为0xFF,此时写入无须重新对Flash进行擦除;
(1-4)将所述索引表中上一条记录的时间与上一条记录的时间类型进行更新。
步骤(1-1)中,时间有效性的判断方法为:第一次出现的虚拟时间使用设置时间换算成的实际时间不要超过前面一条数据记录的实际时间。
步骤(1)中,所述数据结构如下所示:
其中ValidFlag为数据有效标志,值为0xFFFF时为有效,否则为无效;UserData为用户数据,CRC为用户数据的CRC16校验;RealTime为当前数据记录的实际时间;VirtualTime为当前数据记录的虚拟时间。
步骤(2)中,所述索引表的数据结构如下:
所述索引表的每个字段含义如表1所示;
表1
其中,InitFlag为0x55AA表示索引表已经初始化,起始块号与结束块号为数据存储区映射表中的序号,而非flash物理块的序号,不通的Flash芯片对应不同的块大小。
步骤(2)中,所述数据记录的写入方法如下:
(2-1)读取所述索引表,然后判断索引表的有效性,如果索引表无效,则进行索引表初始化,然后判断数据写指针是否为块首地址,如果为块首地址则先进行擦除;
(2-2)判断当前待写入数据记录时间是否大于上一条记录的时间,如果小于上一条记录的时间,则当前时间设置为上调记录时间推后1小时,并更新系统时间,实际时间设置为全FF值,虚拟时间设置为更新后的系统时间,用于保证每一条数据的数据记录时间大于前一条记录的时间;然后执行数据写入;
(2-3)当Flash进行数据写入失败,则标记当前块为坏块,然后更新坏区映射表,从备份数据区分配一个缓冲区到数据区,再更新备份映射表与存储区映射表,然后重新写入;在每个数据存储区写入成功后更新数据索引表的写指针。
其中,数据检索方法如下:
(3-1)读取所述索引表,然后判断索引表的有效性,如果索引表无效则重新初始化索引表;
(3-2)判断数据是否发生了循环写入,如果发生了循环写入,则将数据存储区域分为两个区来进行查找,一个是写指针前的区域,还有一个是写指针之后的区域;
(3-3)对数据区使用二分法查询第一个符合检索条件的数据记录,使用二分法判断时间前后时,数据记录的时间使用实际时间与虚拟时间中有效的的那个,实际时间数值为全FF时无效,使用虚拟时间;两者都有效时使用实际时间,使用二分法可以迅速定位到需要查询的数据,然后从第一条记录往后依次寻找,直至不再符合查询条件或者查询缓冲区满。
其中,数据记录的删除方法如下:
(4-1)使用步骤(3)中的数据检索方法定位需要删除的数据;
(4-2)判断数据是否发生了循环写入,如果发生了循环写入,则将数据存储区域分为两个区来进行查找,一个是写指针前的区域,还有一个是写指针之后的区域;
(4-3)对数据区使用二分法查询第一个符合检索条件的数据记录,写入该数据记录的无效标记,既可达到从数据库删除的目的。
步骤(3)中,所述数据记录的更新方法如下:
(5-1)定位需要更新的数据所在的数据块A以及在数据块内的偏移地址Offset;
(5-2)从备份数据区中选取一个数据块B并进行擦除;
(5-3)将数据块A中从地址0到偏移地址Offset的数据写入数据块B;
(5-4)将数据更新后写入数据块B中偏移地址Offset之后RecordLen长度数据;
(5-5)将数据块A中剩余的数据写入数据块B中同样位置;
(5-6)将数据块A分配到备份数据区,更新数据存储区映射表与备份数据区映射表。
本发明的有益效果如下:
1、本发明可以在数据存储时检测到系统时间是否发生混乱,并且采用实际时间与虚拟时间双时标的方法进行容错,不影响数据的检索分析操作;
2、本发明可以在系统进行对时的时候,自动进行包含虚拟时间的数据记录的时标纠错,保证了数据记录时标的正确性,避免给后续数据分析带来严重错误;
3、本发明可以广泛地用于中小型嵌入式系统中需要进行数据存储与数据检索的场合,相当有针对性的解决了系统时间混乱引发的数据存储混乱问题,非常适合中小型嵌入式系统的工业应用。
附图说明
图1为写入数据记录的工作流程图;
图2为检索数据的工作流程图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
本发明的一种包含时标容错与纠错机制的嵌入式数据存储方法,包括以下几个步骤:
(1)在存储用户数据时,当嵌入式系统遭遇强干扰或掉电时,写入的数据会丢失并导致索引信息被破坏,为提高数据存储的可靠性,设计数据结构;
(2)分配每种数据的存储空间,为每种数据配置一条索引表,并写入数据记录,写入数据记录时判断时钟是否发生异常,如果时钟异常,则写入虚拟时标,时钟正常时写入实际时标;
(3)当需要对设定数据记录进行更新时,由于NandFlash的扇区必须擦除后才能再次写入,而擦除操作必须是对NandFlash的一个快,由于设计了备份存储区,可以使用备份存储区的一个块来进行中转;
当系统存在外部对时或者手动对时,此时需要对之前设置为虚拟时间的数据记录进行系统时间更新。数据记录的更新方法如下:
(1-1)检测设置时间的有效性,有效性的判断方法为:第一次出现的虚拟时间使用设置时间换算成的实际时间不要超过前面一条数据记录的实际时间;
(1-2)记录当前系统时间T0与即将要更新的时间T1,并更新系统时间为T1;
(1-3)将所有数据记录中只有虚拟时间的记录的实际时间字段进行写入,写入值=虚拟时间+(T1-T0),由于实际时间字段全为0xFF,此时写入无须重新对Flash进行擦除。
(1-4)将索引表中上一条记录的时间与上一条记录的时间类型进行更新。
步骤(1)中,数据结构如下所示:
其中ValidFlag为数据有效标志,值为0xFFFF时为有效,否则为无效,UserData为用户数据,CRC为用户数据的的CRC16校验,RealTime为当前数据记录的实际时间,VirtualTime为当前数据记录的虚拟时间。
步骤(2)中,所述索引表的数据结构如下:
索引表的每个字段含义如表1所示;
表1
其中,InitFlag为0x55AA表示索引表已经初始化,起始块号与结束块号为数据存储区映射表中的序号,而非flash物理块的序号,不通的Flash芯片对应不同的块大小。
步骤(2)中,参见图1,数据记录的写入流程如下:
(2-1)读取数据索引表,然后判断索引表的有效性,如果索引表无效,则进行索引表初始化,然后判断数据写指针是否为块首地址,如果为块首地址则先进行擦除。
(2-2)判断当前待写入数据记录时间是否大于上一条记录的时间,如果小于上一条记录的时间,则当前时间设置为上调记录时间推后1小时,并更新系统时间,实际时间设置为全FF值,虚拟时间设置为更新后的系统时间。这样就保证了每一条数据的数据记录时间大于前一条记录的时间,然后执行数据写入;
(2-3)当Flash进行数据写入失败,则标记当前块为坏块,然后更新坏区映射表,从备份数据区分配一个缓冲区到数据区,再更新备份映射表与存储区映射表,然后重新写入。在每个数据存储区写入成功后更新数据索引表的写指针。
参见图2,数据检索方法如下:
(3-1)读取索引表,然后判断索引表的有效性,索引表无效的需要重新初始化索引表。
(3-2)判断数据是否发生了循环写入,如果发生了循环写入,则将数据存储区域分为两个区来进行查找,一个是写指针前的区域,还有一个是写指针之后的区域。
(3-3)对数据区使用二分法查询第一个符合检索条件的数据记录,使用二分法判断时间前后时,数据记录的时间使用实际时间与虚拟时间中有效的的那个,实际时间数值为全FF时无效,使用虚拟时间,两者都有效时使用实际时间,使用二分法可以迅速定位到需要查询的数据,然后从第一条记录往后依次寻找,直至不再符合查询条件或者查询缓冲区满。
其中,数据记录的删除方法如下:
(4-1)使用数据检索流程定位需要删除的数据。
(4-2)判断数据是否发生了循环写入,如果发生了循环写入,则将数据存储区域分为两个区来进行查找,一个是写指针前的区域,还有一个是写指针之后的区域。
(4-3)对数据区使用二分法查询第一个符合检索条件的数据记录,写入该数据记录的无效标记,既可达到从数据库删除的目的。
步骤(3)中,数据记录的更新方法如下:
(5-1)定位需要更新的数据所在的数据块A以及在数据块内的偏移地址Offset;
(5-2)从备份数据区中选取一个数据块B并进行擦除;
(5-3)将数据块A中从地址0到偏移地址Offset的数据写入数据块B
(5-4)将数据更新后写入数据块B中偏移地址Offset之后RecordLen长度数据;
(5-5)将数据块A中剩余的数据写入数据块B中同样位置。
(5-6)将数据块A分配到备份数据区,更新数据存储区映射表与备份数据区映射表。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.一种包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,包括以下几个步骤:
(1)确定数据结构,用于提高数据存储的可靠性;
(2)分配每种数据的存储空间,为每种数据配置一条索引表,并写入数据记录,写入数据记录时判断时钟是否发生异常,如果时钟异常,则写入虚拟时标,时钟正常时写入实际时标;
(3)当需要对设定数据记录进行更新时,使用备份存储区的一个块对需要更新的数据进行中转。
2.根据权利要求1所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,当系统存在外部对时或者手动对时,对之前设置为虚拟时间的数据记录进行系统时间更新。
3.根据权利要求2所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,所述系统时间的更新方法如下:
(1-1)检测设置时间的有效性;
(1-2)记录当前系统时间T0与即将要更新的时间T1,并更新系统时间为T1;
(1-3)将所有数据记录中只有虚拟时间的记录的实际时间字段进行写入,写入值=虚拟时间+(T1-T0),由于实际时间字段全为0xFF,此时写入无须重新对Flash进行擦除;
(1-4)将所述索引表中上一条记录的时间与上一条记录的时间类型进行更新。
4.根据权利要求3所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,步骤(1-1)中,时间有效性的判断方法为:第一次出现的虚拟时间使用设置时间换算成的实际时间不要超过前面一条数据记录的实际时间。
5.根据权利要求1所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,步骤(1)中,所述数据结构如下所示:
其中ValidFlag为数据有效标志,值为0xFFFF时为有效,否则为无效;UserData为用户数据,CRC为用户数据的CRC16校验;RealTime为当前数据记录的实际时间;VirtualTime为当前数据记录的虚拟时间。
6.根据权利要求1所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,步骤(2)中,所述索引表的数据结构如下:
所述索引表的每个字段含义如表1所示;
表1
其中,InitFlag为0x55AA表示索引表已经初始化,起始块号与结束块号为数据存储区映射表中的序号,而非flash物理块的序号,不通的Flash芯片对应不同的块大小。
7.根据权利要求1所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,步骤(2)中,所述数据记录的写入方法如下:
(2-1)读取所述索引表,然后判断索引表的有效性,如果索引表无效,则进行索引表初始化,然后判断数据写指针是否为块首地址,如果为块首地址则先进行擦除;
(2-2)判断当前待写入数据记录时间是否大于上一条记录的时间,如果小于上一条记录的时间,则当前时间设置为上调记录时间推后1小时,并更新系统时间,实际时间设置为全FF值,虚拟时间设置为更新后的系统时间,用于保证每一条数据的数据记录时间大于前一条记录的时间;然后执行数据写入;
(2-3)当Flash进行数据写入失败,则标记当前块为坏块,然后更新坏区映射表,从备份数据区分配一个缓冲区到数据区,再更新备份映射表与存储区映射表,然后重新写入;在每个数据存储区写入成功后更新数据索引表的写指针。
8.根据权利要求1所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,其中,数据检索方法如下:
(3-1)读取所述索引表,然后判断索引表的有效性,如果索引表无效则重新初始化索引表;
(3-2)判断数据是否发生了循环写入,如果发生了循环写入,则将数据存储区域分为两个区来进行查找,一个是写指针前的区域,还有一个是写指针之后的区域;
(3-3)对数据区使用二分法查询第一个符合检索条件的数据记录,使用二分法判断时间前后时,数据记录的时间使用实际时间与虚拟时间中有效的的那个,实际时间数值为全FF时无效,使用虚拟时间;两者都有效时使用实际时间,使用二分法可以迅速定位到需要查询的数据,然后从第一条记录往后依次寻找,直至不再符合查询条件或者查询缓冲区满。
9.根据权利要求8所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,其中,数据记录的删除方法如下:
(4-1)使用步骤(3)中的数据检索方法定位需要删除的数据;
(4-2)判断数据是否发生了循环写入,如果发生了循环写入,则将数据存储区域分为两个区来进行查找,一个是写指针前的区域,还有一个是写指针之后的区域;
(4-3)对数据区使用二分法查询第一个符合检索条件的数据记录,写入该数据记录的无效标记,既可达到从数据库删除的目的。
10.根据权利要求1所述的包含时标容错与纠错机制的嵌入式数据存储方法,其特征在于,步骤(3)中,所述数据记录的更新方法如下:
(5-1)定位需要更新的数据所在的数据块A以及在数据块内的偏移地址Offset;
(5-2)从备份数据区中选取一个数据块B并进行擦除;
(5-3)将数据块A中从地址0到偏移地址Offset的数据写入数据块B;
(5-4)将数据更新后写入数据块B中偏移地址Offset之后RecordLen长度数据;
(5-5)将数据块A中剩余的数据写入数据块B中同样位置;
(5-6)将数据块A分配到备份数据区,更新数据存储区映射表与备份数据区映射表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710904928.6A CN107748703A (zh) | 2017-09-29 | 2017-09-29 | 一种包含时标容错与纠错机制的嵌入式数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710904928.6A CN107748703A (zh) | 2017-09-29 | 2017-09-29 | 一种包含时标容错与纠错机制的嵌入式数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107748703A true CN107748703A (zh) | 2018-03-02 |
Family
ID=61255125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710904928.6A Pending CN107748703A (zh) | 2017-09-29 | 2017-09-29 | 一种包含时标容错与纠错机制的嵌入式数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107748703A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431438A (zh) * | 2008-11-25 | 2009-05-13 | 上海华为技术有限公司 | 一种解决日志时间混乱的方法以及电子装置 |
CN102739468A (zh) * | 2011-03-31 | 2012-10-17 | 微软公司 | 当实时时钟不可用时的相对时间戳 |
EP2905982A1 (en) * | 2012-10-31 | 2015-08-12 | Huawei Technologies Co., Ltd. | Network data rollback method and device |
CN106776106A (zh) * | 2016-11-11 | 2017-05-31 | 南京南瑞集团公司 | 一种基于NandFlash的数据存储方法 |
-
2017
- 2017-09-29 CN CN201710904928.6A patent/CN107748703A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101431438A (zh) * | 2008-11-25 | 2009-05-13 | 上海华为技术有限公司 | 一种解决日志时间混乱的方法以及电子装置 |
CN102739468A (zh) * | 2011-03-31 | 2012-10-17 | 微软公司 | 当实时时钟不可用时的相对时间戳 |
EP2905982A1 (en) * | 2012-10-31 | 2015-08-12 | Huawei Technologies Co., Ltd. | Network data rollback method and device |
CN106776106A (zh) * | 2016-11-11 | 2017-05-31 | 南京南瑞集团公司 | 一种基于NandFlash的数据存储方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100517321C (zh) | 映象数据存储装置写时间映射 | |
US4819156A (en) | Database index journaling for enhanced recovery | |
CN100498796C (zh) | 逻辑日志生成方法、数据库备份/恢复方法与系统 | |
CN106776106A (zh) | 一种基于NandFlash的数据存储方法 | |
CN101073064A (zh) | 使用检查点从存储事务故障中恢复 | |
CN103744936A (zh) | 一种数据库中的多版本并发控制方法及数据库系统 | |
CN103838787B (zh) | 一种对分布式数据仓库进行更新的方法和设备 | |
CN110955661B (zh) | 数据融合方法、装置、可读存储介质及电子设备 | |
CN102460401A (zh) | 利用变化跟踪进行系统恢复的技术 | |
CN110555770A (zh) | 一种基于增量哈希的区块链世界状态校验和恢复方法 | |
CN106682193A (zh) | 基于缓存的数据持久化存储方法及装置 | |
CN104408041B (zh) | 一种gps数据的保存方法 | |
CN106095612A (zh) | 使用wal的数据库回滚 | |
CN110018795A (zh) | 一种block状态的检测方法、装置、设备及存储介质 | |
CN110175206A (zh) | 用于多数据库分离的智能分析业务方法、系统及介质 | |
CN105159925B (zh) | 一种数据库集群数据分配方法及系统 | |
CN106155838A (zh) | 一种数据库备份数据恢复方法及装置 | |
CN103439758A (zh) | 用于雨传感器的数据处理方法 | |
CN106547472B (zh) | 存储阵列管理方法及装置 | |
CN110516124A (zh) | 一种文件解析方法、装置和计算机可读存储介质 | |
CN107748703A (zh) | 一种包含时标容错与纠错机制的嵌入式数据存储方法 | |
CN104123104B (zh) | 日志控制系统及方法 | |
CN111552673B (zh) | 文件处理方法、装置、电子设备及存储介质 | |
CN116360695A (zh) | 一种基于混合储能电源的数据存储方法及装置 | |
CN106599006A (zh) | 一种数据恢复方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180302 |
|
RJ01 | Rejection of invention patent application after publication |