WO2016135537A1 - System for and method of executing the request queue related to digital objects - Google Patents

System for and method of executing the request queue related to digital objects Download PDF

Info

Publication number
WO2016135537A1
WO2016135537A1 PCT/IB2015/054607 IB2015054607W WO2016135537A1 WO 2016135537 A1 WO2016135537 A1 WO 2016135537A1 IB 2015054607 W IB2015054607 W IB 2015054607W WO 2016135537 A1 WO2016135537 A1 WO 2016135537A1
Authority
WO
WIPO (PCT)
Prior art keywords
request
sub
task
requests
server
Prior art date
Application number
PCT/IB2015/054607
Other languages
French (fr)
Inventor
Denis Sergeevich KUTUKOV
Petr Mikhailovich REZNIKOV
Original Assignee
Yandex Europe Ag
Yandex Llc
Yandex Inc.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yandex Europe Ag, Yandex Llc, Yandex Inc. filed Critical Yandex Europe Ag
Publication of WO2016135537A1 publication Critical patent/WO2016135537A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding

Definitions

  • FIELD [2] Present technology relates to system for and method of executing the request queue related to digital objects.
  • Implementations of the present technology provide a method of executing the requests queue related to digital objects, the method executable at a server.
  • the method comprises: receiving from the client device via communication network a first request to execute a first task, the first request to execute the first task includes the first task and an indication of digital objects from a first set of digital objects associated with the first task; dividing the first request into a set of sub-requests, each sub-request relating to a part of the digital objects from the first set of digital objects associated with the first request, and each sub-request including: information about the first task and an indication of digital objects from the corresponding portion of digital objects; calculating a unique identifier of a sub-request, the unique identifier of the sub-request being based, at least partially, on the content of corresponding sub-request; storing sub-requests in a sub-request storage along with the corresponding identifiers of sub-requests; receiving from a client device via communication network a second request to execute a second
  • the method further comprises executing the second request.
  • the executing the second request is effected in parallel with the executing at least one sub-request.
  • the executing of the second request is effected after the executing at least one sub-request.
  • the dividing the first request into the set of sub-requests comprises identifying, by the server, the number of digital objects in the first set of digital objects, and wherein the dividing the first request into the set of sub-requests is effected when the number of the digital objects in the first set of digital objects exceeds the threshold value.
  • calculating the unique identifier of sub-request is effected by using a hash algorithm.
  • identifying at least one sub-request from a set of sub-requests including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task is effected by using the probabilistic data structure algorithm.
  • the probabilistic data structure algorithm is a Bloom filter algorithm.
  • the method responsive to receiving by the server from the client device a third request to execute the third task, the method further comprises blocking the execution of the third request to execute the third task.
  • the method responsive to receiving by the server from the client device a third request to execute the third task, the method further comprises blocking the execution of the third request to execute the third task.
  • the server after the executing the sub-requests related to digital objects from the first set of digital objects, effects unblocking the execution of the third request to execute the third task.
  • digital objects are email messages.
  • executing the sub-requests is started before receiving the second request to execute the second task.
  • the server includes a processor.
  • the processor is configured to render the server to execute: receiving from a client device via a communication network a first request to execute a first task, the first request to execute the first task including the first task and an indication of digital objects from a first set of digital objects associated with the first task; dividing the first request into a set of sub-requests, each sub- request relating to a portion of the digital objects from the first set of digital objects associated with the first request, and each sub-request including: information about the first task and an indication to digital objects from the corresponding portion of digital objects; calculating of unique identifiers of sub-requests, and the unique identifier of sub-request is based, at least partially, on the content of corresponding sub-request; storing sub-requests in a sub-request storage along with the corresponding identifiers of sub-requests; receiving from the client device via communication network a second request to execute a second task, the second request
  • processor is configured to render the server to execute the second request.
  • the executing the second request is effected in parallel with the executing at least one sub-request.
  • the executing the second request is effected after the executing at least one sub-request.
  • dividing the first request into the set of sub- requests comprises identifying, by the server, the number of digital objects in the first set of digital objects, and the dividing the first request into the set of sub-requests is effected when the number of the digital objects in the first set of digital objects exceeds the threshold value.
  • calculating the unique identifier of sub-request is effected by using a hash algorithm.
  • identifying at least one sub-request from a set of sub-requests, said at least one sub-request including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task is effected by using the probabilistic data structure algorithm.
  • the probabilistic data structure algorithm is a Bloom filter algorithm.
  • the processor is configured to render the server, responsive to receiving by the server from the client device a third request to execute the third task, to block the execution of the third request to execute the third task.
  • the processor is configured to render the server to execute, after the executing the sub-requests related to digital objects from the first set of digital objects, unblocking the execution of the third request to execute the third task.
  • the processor is configured to render the server, responsive to receiving by the server from the client device a third request to execute the third task, to block the execution of the third request to execute the third task.
  • digital objects are email messages.
  • the processor is configured such that the server can start consequential executing the sub-requests before receiving by the server from the client device via communication network the second request to execute the second task.
  • a "server” is a computer program that is running on appropriate hardware and is capable of receiving requests (e.g. from client devices) over a network, and carrying out those requests, or causing those requests to be carried out.
  • the hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology.
  • the use of the expression a "server” is not intended to mean that every task (e.g. received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e.
  • client device is any computer hardware that is capable of running software appropriate to the relevant task at hand.
  • client device is associated with a user of the client device.
  • client devices include personal computers (desktops, laptops, netbooks, etc.), smartphones, and tablets, as well as network equipment such as routers, switches, and gateways. It should be understood, that in the present context the fact that the device functions as the client device does not mean that it cannot function as a server for other client devices. Using of the expression "client device” does not mean that several client devices may not be involved in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or any steps of the method, disclosed in the present description.
  • Email message includes a file with a text generated by the sender and intended for transmitting to one or more recipients via email.
  • Email message also contains metadata, including metadata that allows to identify the corresponding email message.
  • information includes information of any nature or kind whatsoever capable of being stored in a database.
  • information includes, but is not limited to audiovisual works (images, movies, sound records, presentations etc.), data (location data, numerical data, etc.), text (opinions, comments, questions, messages, etc.), documents, spreadsheets, etc.
  • the expression “software component” is meant to include software (appropriate to a particular hardware context) that is both necessary and sufficient to achieve the specific function(s) being referenced.
  • the expression “computer information storage medium” is intended to include media of any nature and kind whatsoever, including without limitation RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc.
  • a plurality of components may be combined to form the computer information storage medium, including two or more media components of a same type and/or two or more media components of different types.
  • a “database” is any structured collection of data, irrespective its particular structure, database management software, or computer hardware on which the data is stored, implemented or otherwise rendered available for use.
  • a database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers.
  • first, second, third etc. have been used as adjectives only for the purpose of allowing for distinction between the nouns that they differ from one another, and not for the purpose of describing any particular relationship between those nouns.
  • first database and “third server” is not intended to imply any particular order, type, chronology, hierarchy or ranking (for example) of/between the server, nor is their use (by itself) intended imply that any “second server” must necessarily exist in any given situation.
  • first element and the “second” element does not mean that the two elements can not be implemented as one physical element in the real world.
  • first” server and second could be implemented as the same component of the software and/or hardware, and in some other cases they can be implemented on the different software and/or hardware.
  • Implementations of the present technology each have at least one of the above mentioned object and/or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present disclosure that have resulted from attempting to attain the above mentioned object may not satisfy this object and/or may satisfy other objects not specifically recited herein.
  • FIG. 1 is a schematic representation of an implementation of a network computer system 100, implemented in accordance with non-limiting embodiments of the present technology.
  • FIG. 2 is a schematic representation of a method of dividing a first user request to execute a task related to a set of digital objects into a set of sub-requests to execute the tasks related to a subset of digital objects, method is executed in accordance with non-limiting embodiments of the present technology.
  • Fig. 3 is a schematic representation of a structure of the first user request to execute a task related to a set of digital objects, and the structure of sub-requests created as a result of dividing the first request, all implemented in accordance with non-limiting embodiments of the present technology.
  • FIG. 4 is a schematic representation of a structure of storing the sub-requests in a sub- request storage by using Apache ZooKeeperTM, the structure implemented in accordance with non-limiting embodiments of the present technology.
  • Fig. 5 is the schematic flowchart of a method, implemented at the server, depicted in the Fig. 1, the method being implemented in accordance with non-limiting embodiments of the present technology.
  • FIG. 6 is a schematic representation of a structure of a second user request to execute a second task, and a structure of sub-requests created as a result of dividing the second request, the structure implemented in accordance with non-limiting embodiments of the present technology.
  • FIG. 1 there is depicted a schematic diagram of a network computer system 100 which are connected to each other via a communication network 112.
  • network computer system 100 is depicted as an illustrative implementation of the present technology.
  • the following description should be considered only as the description of illustrative implementations of the present technology. This description is not intended to define the scope or set forth the bounds of the present technology.
  • modifications to network computer system 100 may also be set forth below. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology. These modifications are not an exhaustive list, and, as a person skilled in the art would understand, other modifications are likely possible.
  • network computer system 100 may provide in certain instances simple implementations of the present technology, and that where such is the case they have been presented in this manner as an aid to understanding. As persons skilled in the art would understand, various implementations of the present technology may be of a greater complexity.
  • the network computer system 100 comprises a set of servers 102.
  • Servers 102 are conventional computer servers. The description of the single computer server 102 will be provided below. As those skilled in the art will appreciate, other computer servers 102 may have similar structure and, therefore, will not be described separately. In some embodiments of the technology, all computer servers 102 will have the functionality described below in respect to the server 102. In other embodiments of present technology, functionality of the server 102 described below can be separated between the several servers. Furthermore, in some embodiments, some servers may have all functionality of the server 102, as it described below, while the one or more other servers may have only the part of the functionality of the server 102.
  • the server 102 may be implemented as a conventional computer server.
  • the server 102 is implemented as a DellTM PowerEdgeTM Server running the MicrosoftTM Windows ServerTM operating system.
  • the server 102 may be implemented in any other suitable hardware and/or software and/or firmware or a combination thereof.
  • the server 102 is a single server.
  • the functionality of the server 102 may be distributed and may be implemented via multiple servers.
  • the implementations of the server 102 are well known in the art.
  • the server 102 comprises, inter alia, a network communication interface (not shown) for two-way communication over the communications network 112; and a processor (not shown) coupled to the network communication interface, the processor being configured to execute various routines, including those described herein below.
  • the processor may store or have access to computer readable instructions which instructions, when executed, cause the processor to execute the various operations described herein.
  • Server 102 tasks comprise receiving of the email messages destined to the user 121, storing them, sending them from the box to user 121, execute operations with the email messages including the operations based on user 121 requests.
  • operations that can be executed based on user request may include deleting one, some or all of the email messages from the certain folder (for example, from the "inbox” folder, "sent”, “drafts", “spam” or any other folder created by user or provided to user 121 by the service provider by default).
  • These operations can also include moving the email messages from one folder to another, marking all or some email messages as read, marking all or some email messages as unread, marking all or some email messages as spam, assigning to one, all or some email messages the certain category, creating new folders, deleting folders and many others.
  • network computer system 100 can include instead of the server 102 or additionally to the server 102, a cloud storage server or other digital server that can be implemented as separated files or the group of files, including ordered group of files.
  • operations that are executed at user request may include deleting of one, some or all of the files stored in certain cloud storage folder, moving the files from one folder to another, renaming the files, creating, deleting, renaming folders, moving folders, including putting one folder into another folder and many others.
  • the server 102 is connected to communication network 112 via communication link (not numbered).
  • the server 102 includes an information storage medium 104 that may be used by the server 102.
  • the computer usable information storage medium 104 may be implemented as a medium of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc. and also the combinations thereof.
  • Information storage 104 of the server 102 is designed to store an email service module 106.
  • the email service module 106 can be a program or a part of the program executed on the corresponding hardware and being able to execute storing and/or processing of email messages.
  • the hardware for the email service module 106 may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology.
  • email service module 106 is not intended to mean that every task (e.g. based on the received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same software and/or hardware; it is rather intended to mean that any number of software elements or hardware devices may be involved in carrying out any task or request, or in processing the results of any task or request.
  • the email service module 106 includes users' mailboxes including user 121 mailbox, user 121 email messages and email folders in user 121 mailbox, including the folders "inbox", “outgoing”, “sent", “draft”, “spam”, “deleted”.
  • Mailboxes are the part of drive space of the storage medium 104 for storage of user e- mail messages (including e-mail messages for the user 121), the mailbox is being stored as a conventional file system catalog in the part of the drive space.
  • E-mail messages are data files being stored in the given file system catalog.
  • the email service module 106 can include the databases (not depicted) providing the storing of email messages.
  • the email service module 106 can also provide the storing of email messages metadata including the identifiers of email messages.
  • the email service module 106 can include database management systems.
  • Apache ZooKeeperTM being the centralized service for providing configuration information, providing names assignment, providing the distributed synchronization, and for providing the group services.
  • Apache ZooKeeperTM is a software by Apache Software Foundation that provides open source software for distributed coordination between servers, and also for providing the name register for large distributed systems.
  • Apache ZooKeeperTM includes a toolkit that can be used to implement the blocking, barriers and other mechanisms of coordination between the servers.
  • Apache ZooKeeperTM The main feature of Apache ZooKeeperTM is the fact that its architecture provides the possibility of parallel execution of tasks. If one of the leading system elements (main server 102) fails, the role of the main server 102 passes to another server 102.
  • database management systems can be based on using any other suitable software.
  • database management systems can be based on using Redis (REmote Dictionary Server), network logged data storage of "key - value" type with the open source.
  • database management systems can be based on using of RabbitMQ.
  • RabbitMQ is a platform realizing the messaging system between program system components (Message Oriented Middleware) based on the AMQP (Advanced Message Queuing Protocol) standard.
  • Email service module 106 also includes working applications 108.
  • Apache ZooKeeperTM also provides synchronization and coordination of the working applications 108.
  • Working applications 108 can provide for receiving, storing and sending of email messages of mailbox of user 121.
  • Working applications 108 can also provide for receiving, via communication network 112, one or more requests from user 121 to execute the tasks sent to server 102 from client device 114.
  • User 121 requests include the task to be executed (for example, deleting the email messages permanently), and the indication to digital objects from the first set of digital objects associated with this task (for example, marking all email messages from spam@.spam . com and from the "deleted" folder as to be deleted permanently).
  • Working applications 108 can also provide execution of user 121 requests. In case of receiving several user 121 requests to execute the tasks, working applications 108 can effect their execution sequentially or in parallel.
  • Working applications 108 can also identify the number of digital objects, in respect of which the request to execute the certain task has been received.
  • Working applications 108 can also divide the user 121 request into a set of sub-requests.
  • Working applications 108 can also determine the unique identifiers of sub-requests.
  • Working applications 108 after dividing the request to the set of sub-requests and after calculation of the unique identifiers of sub-requests, can store the sub-requests of the set of sub- requests along with the unique identifiers corresponding to the sub-requests in a sub-request storage 110.
  • Information storage 104 of the server 102 is also designed to store the data stored in the sub-request storage 110.
  • Sub-request storage 110 stores sub-requests 2022, 2024 and 2026 of the set 2020 of sub-requests.
  • Apache ZooKeeperTM is used to provide the storing of sub-requests in sub-request storage 110.
  • libraries of RabbitMQ, ZeroMQ and any other suitable software can be used.
  • Fig. 4 is a schematic structure of storing the sub-requests in sub-request storage 110 by using Apache ZooKeeperTM that will be described in more detail along with the step 508 of method 500.
  • working application 108 While dividing by one of the working applications 108 the request 202 into the set 2020 of sub-requests, working application 108 forms the set 2020 of sub-requests and stores the sub- requests in above mentioned sub-request storage 110.
  • Sub-request storage 110 is available for the working applications 108 that can read the information from the sub-request storage 110.
  • server 102 depicted in Fig. 1 can be implemented as a single server 102 or as several interconnected servers 102.
  • Working applications 108 can be distributed between these servers 102.
  • the server 102 depicted in general it is to be expressly understood that the different implementations of the server 102 are provided for illustration purposes only. As such, persons skilled in the art would understand the details of other implementations of email servers that might be used to implement embodiments of the present technology. Thus, by no means, example provided herein is meant to limit the scope of the present technology.
  • the server 102 depicted in Fig. 1 is connected to communication network 112 via a communication link (not numbered).
  • the communication network 112 can be implemented as the Internet.
  • the communication network 112 can be implemented differently, such as any wide-area communication network, local-area communication network, a private communication network and so on.
  • connection of the server 102 to communication network 112 can be implemented via wired connection (such as an Ethernet based connection).
  • the server 102 is connected to the client device 114 via the communication network 112.
  • the client device 114 is typically associated with a user 121.
  • the user 121 is a person who has an e-mail account at the server 102.
  • client device 114 is associated with the user 121 does not need to suggest or imply any specific mode of operation.
  • client device 114 is implemented as a personal computer DellTM Precision T1700 MT CA033PT170011RUWS with Intel® XeonTM processor, CPU frequency: 3300 MHz, VTDIA Quadro K2000 videocard with running operation system Windows 7 Pro 64- bit.
  • the client device 114 may be implemented as a personal computer (desktops, laptops, netbooks, etc.), a wireless communication device (a cell phone, a smartphone, a tablet and the like), as well as other equipment.
  • the client device 114 includes an information storage medium (not depicted) implemented as a hard drive with 500 Gb memory.
  • the storage media can be implemented as storage media of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc and combination thereof.
  • Information storage medium can store user files and program instructions. More specifically, the storage medium can store software which execute functions of a browser (not depicted). Generally, the purpose of the browser is to enable the user 121 to connect to the server 102, to receive e-mail messages by the means of a web- interface, to show received and sent e- mail messages on a display (not depicted), to send the requests to execute the tasks to the server 102.
  • the browser can be implemented as YandexTM browser. However, as a person skilled in the art would understand, the implementation of browser is not particularly limited. As a non- limiting examples, such browsers can be Google ChromeTM, Internet ExplorerTM, etc.
  • the client device 114 includes also the display (not depicted) implemented as a 21,5" Dell 1 TM E2214H 2214-7803, 1920x1080 screen resolution, which can provide video information to the user 121.
  • user 121 can see on the display in the interface of the browser of the client device 114 various objects, email messages, folders of email messages, as well as interface graphical elements that allow user 121 to choose certain email messages and to send requests to execute the tasks with such email messages.
  • client device 114 can be configured to execute operations with other digital objects, including the creation of the requests to execute the tasks with such digital objects and to send them to the server 102.
  • Fig. 5 is the schematic flowchart of a method 500, implemented on a set of the servers 102, depicted of the Fig. 1, the method 500 is implemented in accordance with non- limiting embodiments of the present technology.
  • Method 500 is for execution of the requests queue in respect of digital objects.
  • digital objects are the email messages.
  • digital objects can be files of any other type.
  • the method 500 can be executed at the servers 102 depicted in Fig. 1.
  • the servers 102 include storage mediums 104 storing computer-readable instructions which when executed cause the servers 102 to execute the steps of the method 500.
  • method 500 can be executed at other servers, or at one server 102.
  • working applications 108 including working application 1082, to the data storage 110 mean that working applications 108 including working application 1082, data storage 110 can be implemented concurrently on one or more servers 102. Accordingly, access to them and the execution the steps can be executed on the corresponding server 102, or in parallel on the several corresponding servers 102.
  • Step 502 receiving from the client device 114 via the communication network 112 the first request 202 to execute the first task
  • the server 102 receives from the client device 114 via the communication network 112 the first user 121 request 202 to execute the first task.
  • User 121 requests include the task to be executed and the indication to digital objects from the first set of digital objects associated with the task.
  • the user 121 request 202 can include the task to delete the email messages permanently, and indicates the digital objects associated with this task: all messages from the email box received from the email address spam@spam. com and being in the folder "deleted". Accordingly, the user 121 request 202 to execute the task in respect to certain email messages contains identifier 300 (Fig. 3) of the task (deleting the email messages permanently), and the identifiers 301-310 of all the email messages, in respect of which the task should be executed.
  • Step 504 - identifying by the server 102 the number of digital objects in the first set of digital objects [104]
  • working application 1082 of the server 102 identifies of the number of digital objects in the first set of digital objects.
  • the user 121 sends from the client device 114 via communication network to the server 102 the request to delete permanently all the email messages received from the email address 3 ⁇ 4 ⁇ am@ am.com and being in the folder "deleted".
  • the user 121 may have highlighted in the folder “deleted” one of the messages received from the address spam@3 ⁇ 4pam . com , and has chosen the option "delete all the messages from this user in this folder".
  • one or more working applications 108 can identify all the email messages corresponding to the specified criteria (sender - spam@spam . com , folder - "deleted”) and identify their number. Let it be assumed that the number of email messages corresponding to specified criteria is ten, which means that in folder "deleted" at the moment of execution the corresponding operation by the user 121 there were ten email messages from the sender
  • Step 506 dividing the first request 202 into a set 2020 of sub-requests
  • working application 1082 of the server 102 divides of the first user 121 request 202 into a set 2020 of sub-requests, namely into the sub-requests 2022, 2024 and 2026.
  • Each of the sub-requests 2022, 2024 and 2026 relates to the part of digital objects from the first set of digital objects associated with the first request.
  • Such dividing of the request 220 into the set 2020 of sub-requests is executed in case when the number of digital objects, in respect of which the request 220 of user 121 to execute the task was received, exceeds a threshold value. In cases, where the number of digital objects, in respect of which the request 220 of user 121 to execute the task was received, does not exceed the threshold value, the method 500 terminates.
  • Threshold value can be pre- determined. Threshold value can be set for any type of task separately. For example, for the task of permanently deleting the email messages can be associated with a first specific threshold value. For the task of copying from one folder to another the email messages marked by the user 121 another threshold value can be set. [109] The process of dividing the request into the set of sub-requests is shown in a simplified form in the following example with reference to Fig. 2.
  • the server 102 receives via communication network 112 from the client device 114 the user 121 request 202 to delete permanently all the email messages received from the email address spam(3 ⁇ 4spam. com and being in the folder "deleted".
  • the working application 1082 which is one of the working applications 108, has determined that the number of email messages corresponding the given criteria is ten, and has identified the given email messages.
  • the threshold value of four email messages is set. Based on this data and assumptions, the request to execute the task of deleting permanently all the email messages received from the email address spam@spam. com and being in the folder "deleted” will be divided into the set 2020 of sub- requests including the subrequeses 2022, 2024 and 2026.
  • working application 1082 While dividing the request into the set of sub-requests, working application 1082 generates the set of sub-requests in such a manner that each of the sub-requests includes information about the task and the indication of digital objects from the corresponding set of digital objects, in respect of which the request to execute the task was originally generated.
  • the user 121 request 202 to execute the task in respect to certain email messages contains identifier 300 of the task (deleting the email messages permanently), and the identifiers 301-310 of ten email messages, in respect of which the task should be executed.
  • Working application 1082 after determining that the number of email messages, in respect of which the task should be executed, exceeds the threshold value "4", divides the request 202 into the set 2020 of sub-requests including the sub-requests 2022, 2024 and 2026. And each of sub-requests 2022, 2024 and 2026 includes task identifier 300 (deleting permanently), and identifiers of the email messages, in respect of which the corresponding sub- request should be executed.
  • the sub-request 2022 includes not only the task identifier 300 but also the identifiers 301, 302, 303 and 304 of four email messages, in respect of which the sub- request 2022 should be executed.
  • the sub-request 2024 includes not only the task identifier 300 but also the identifiers 305, 306, 307 and 308 of four email messages, in respect of which the sub-request 2024 should be executed.
  • the sub-request 2026 includes not only the task identifier 300 but also the identifiers 309 and 310 of two email messages, in respect of which the sub- request 2026 should be executed.
  • any of the identifiers 301-310 of ten email messages contained in the request 202 is presented in one of the sub-requests 2022, 2024 or 2026 generated as a result of dividing the request 202.
  • the working application 1082 after calculating the unique sub-request identifiers, can store the sub-requests 2022, 2024 and 2026in the sub-request storage 110.
  • Step 508 calculation of unique identifiers of sub-requests 2022, 2024 and 2026
  • working application 1082 of the server 102 executes the calculation of unique identifiers of sub-requests, and the unique identifier of sub-request is based at least partially on the content of corresponding sub-request.
  • calculation of the unique identifier of sub- request is executed by using a hash algorithm, and task identifier 300 and email messages identifiers, in respect of which the corresponding sub-request is executed, are used as an input.
  • To calculate the unique identifiers of sub-request a m-bit array is generated. Originally, when the data structure stores the empty set and all m bits are reset to 0. User has to define k of independent hash-functions hi, hk, displaying each element in one of the m positions of the bit array in a fairly uniform way. To add the e element it is needed to write the unites for each of the positions hl(e), hk(e) of bit array. So-generated unique identifier of the sub-request can have the following form:
  • Step 510 storing the sub-requests 2022, 2024 and 2026 in the sub-request storage 110 along with the corresponding identifiers of sub-requests 2022, 2024 and 2026.
  • working application 1082 of the server 102 after dividing the request 202 into a set 2020 of sub-requests and calculation the unique identifiers of sub-requests 2022, 2024 and 2026, stores the set 2020 of sub-requests which, in this implementation of present technology, consists of the sub-requests 2022, 2024 and 2026 along with the corresponding identifiers of sub-requests 2022, 2024 and 2026, in the sub-request storage 110.
  • Fig. 4 is schematic representation of the structure of storing of sub-requests in a sub- request storage 110 by using the Apache ZooKeeperTM. To store the data the z-nodes are used. In Fig. 4 the following z-nodes are depicted: 402, 404, 406, 408, 410, 4062, 4064, 4066.
  • Feature of the z-nodes in Apache ZooKeeperTM is that with one z-node in a certain moment of time it is possible to execute only one process while multithreaded data processing. Because of this, if one of the working applications 108 executes the operation with one certain z-node, another working application 108 cannot execute the operation with the same z-node.
  • Z-node 402 is a root node.
  • TThhee zz--nnooddee 440022 iiss ffoolllloowweedd bbyy zz--nnooddeess 440044,, 440066,, 440088 whil441100,, aanndd eeaacchh ooff tthhee zz--nnooddeess 440044,, 440066,, 440088 whil441100 iiss ffoorr tthhee ddiiffffeerreenntt uusseerr tthhaatt hhaass mmaaddeee aa rreeqquueesstt ttoo eexxeeeccuuttee aatt lleeaasstt oonnee ttaasskk
  • IInn FFiigg.. 44 ffoouurr zz--nnooddeess aarree ddeeppiicctteedd ttoo uusseerrss.. HHoowweevveerr,, aass ppeerrssoonnss sskkiilllleedd iinn tthhee aarrtt wwoouulldd uunnddeerrssttaanndd,, iinn rreeaalliittyy tthhee nnuummbbeerr ooff ssuucchh nnooddeess wwiillll bbee mmuucchh llaarrggeerr..
  • each user each of whom has made at least one request to execute one or more tasks related to the set of email messages, there are z-nodes, and each of them stores a sub-request to be processed.
  • Fig. 4 not all such z-nodes are depicted, only the z-nodes each of which stores the sub-request generated while dividing the user 121 request. In this case, these are the z-nodes 4062, 4064 and 4066.
  • Z-node 4062 stores the sub-request 2022.
  • Z-node 4064 stores the sub-request 2024.
  • Z-node 4066 stores the sub-request 2026.
  • z-node 4062 storing the sub-request 2022 contains the entry 422 in JSON format including the task 300 identifier and the message 301, 302, 303 and 304 identifiers.
  • the entry 422 can conventionally have the following form:
  • Z-node 4064 storing the sub-request 2024 contains the entry 424 in JSON format including the task 300 identifier and the message 305, 306, 307 and 308 identifiers.
  • the entry 424 can conventionally have the following form:
  • Z-node 4066 storing the sub-request 2026 contains the entry 426 in JSON format including the task 300 identifier and the message 309 and 310 identifiers.
  • the entry 426 can conventionally have the following form:
  • Sub-requests storage 110 is available for working applications 108 that can read the information from the sub-requests storage 110.
  • servers 102 depicted in Fig. 1 can be implemented as a single server 102 or as several interconnected servers 102.
  • Working applications 108 can be, accordingly, distributed between these servers, and data storage can be implemented as the set of data storages. Accordingly, sub-requests 2022, 2024 and 2026 can be stored in different data storages at different servers.
  • Method 500 then proceeds to step 512.
  • server 102 receives from the client device 114 via the communication network 112 the second user 121 request 604 to execute the second task. Structure of the second request 604 is schematically depicted in Fig. 6.
  • second user 121 request 604 includes the second task to move the email messages from the folder "deleted” into the folder "inbox", and indicates the email messages associated with the given second task: three email messages selected by the user 121 with the mouse in the web-interface of email service in browser of the client device 114. Accordingly, the second user 121 request 604 to execute the second task in respect to certain email messages contains identifier 600 of the task (moving the email messages from the folder "deleted” to the folder "inbox"), and the identifiers 307, 601 and 309 of three selected by the user 121 email messages, in respect of which the task should be executed.
  • Step 514 identifying at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one of digital objects, the indication to which is also contained in the second request 604 to execute the second task
  • working applications 108 of the server 102 defines of at least one sub- request from the set 2020 of sub-requests containing the indication to the at least one of digital objects, the indication to which is also contained in the second request 604 to execute the second task.
  • Identifying of at least one sub-request from the set 2020 of sub-requests including an indication of at least one of digital objects, indication of which is also contained in the second request 604 to execute the second task can be effected in various ways. Generally speaking, working applications 108 of the server 102 can identify whether in the sub-requests from the set 2020 of sub-requests are such sub-requests that contain the same identifiers as the second request 604. [150] One of the methods of the definition can be implemented as checking all the sub-requests 2022, 2024, 2026 for the identifiers 307, 601 and 309 of email messages contained in the second request 604 to execute the second task.
  • the set 2020 of sub-requests usually include significantly larger number of sub-requests than it is shown for ease of understanding in Fig. 3.
  • the sub-requests that are included into the set 2020 of sub-requests can contain hundreds, thousands and tens of thousands of messages.
  • identifying of at least one sub-request from a set 2020 of sub- requests including an indication to that at least one of digital objects, indication of which is also contained in the second request 604 to execute the second task is effected by using the probabilistic data structure algorithm. More specifically, in this embodiment of present technology, such probabilistic data structure algorithm is the Bloom filter.
  • the Bloom filter is the probabilistic data structure allowing to compactly store a set of elements and to check if the element belongs to the set. There is also a probability to receive a false positive trigger (element is absent in the set but the data structure says the opposite) but not the false negative one.
  • the Bloom filter is a m-bit array. Originally, when the data structure stores the empty set and all m bits are reset. User has to define k of independent hash-functions hi, hk, displaying each element in one of the m positions of the bit array in a fairly uniform way.
  • the bits hl(e), hk (e) condition can be checked. If at least one of them is equal to zero, the element cannot belong to the set (otherwise while adding the element all these bits would already be set). If all of them are equal to one, the data structure says that e belongs to the set. This can result in two situations: either the element actually belongs to the set or all these bits have been set by accident and this is the source of false triggering in this data structure.
  • unique identifier of the sub-request that has been calculated at step 508 by using the hash algorithm that was using task identifier 300 and email messages identifiers, in respect of which the corresponding sub-request is executed, as an input provides the possibility to effect by using the Bloom filter the dropout of such sub-requests from the set 2020 of sub-requests where the identifiers 307, 601 and 309 of email messages are absent.
  • the Bloom filter allows to dropout the sub-requests in which the identifiers 307, 601 and 309 of email messages are absent; however, taking into account the possibility of false positive triggering, among the sub-requests that were not dropped out could be the sub-requests, in which the identifiers 307, 601 and 309 of email messages are absent. Accordingly, working applications 108 of the server 102, after the applying of the Bloom filter, should effect the defining of at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one of digital objects, the indication to which also is contained in the second request 604 to execute the second task, among the sub-requests that were not dropped out by the Bloom filter.
  • the volume of such checking will be significantly smaller than if the working applications 108 of the server 102 were checking all the sub-requests in the set 2020 of sub-requests for the presence of the identifiers 307, 601 and 309 of email messages.
  • working applications 108 of the server 102 have determined that two sub-requests - sub-request 2024 and sub-request 2026 - from the set 2020 of sub-requests contain the indications to two of the email messages 307 and 309, indications to which also are contained in the second request 604 to execute the second task.
  • step 508 when before the receiving by the server 102 from the client device 114 via communication network 112 the second user 121 request 604 to execute the second task, one or more of the working applications 108 of the server 102 have started to execute one or more of the sub-requests from the set 2020 of sub-requests, step 508 will be executed with several variations, namely: (1) while determining the at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one digital object, indication to which is also contained in the second request 604 to execute the second task, those sub-requests that were already completed will not be taken into account, and (2) while determining at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one digital object, indication to which is also contained in the second request 604 to execute the second task, will not be taken into account the sub-requests, the execution of which has already been started by working applications 108, because the execution of the
  • Step 516 accessing the indicated at least one sub-request from the set 2020 of sub- requests, and deleting from sub-request the indication to that at least one digital object, the indication to which is also contained in the second request 604 to execute the second task
  • working applications 108 of the server 102 effect the accessing to all sub- requests from the set 2020 where are the identifiers of digital objects whose identifiers are also in the second request.
  • working applications 108 of the server 102 have defined that identifiers 307 and 309 are present in the second request 604 as well as in the sub-requests 2024 and 2026. Accordingly, working applications 108 access the sub-requests 2024 and 2026, and delete the identifiers 307 and 309 from them.
  • Step 518 executing the sub-requests 2022, 2024 and 2026 related to digital objects, indications of which are contained in sub-requests 2022, 2024 and 2026 after deleting from at least one sub-request the indicated at least one digital object, and the executing the second request 604
  • working applications 108 of the server 102 effect the execution of the sub- requests 2022, 2024 and 2026 related to digital objects 301, 302, 303, 304, 305, 306, 308, 310, indications to which are contained in sub-requests 2022, 2024 and 2026 after the deleting from two sub-requests 2024 and 2026 the identifiers 307 and 309 of two digital objects, and the execution of the second request 604 related to all objects marked with identifiers 307, 601 and 309.
  • working applications 108 of the server 102 effect the execution of the sub-requests 2022, 2024, 2026 and the second request 604 in a random order. That means that working applications 108 of the server 102 can effect (a) first the execution of sub-requests 2022, 2024, 2026 and then the second request 604, or (b) vice versa, first the execution of the second request 604 and then the execution of sub-requests 2022, 2024, 2026, or (c) first the execution of some of sub-requests from the set 2020 of sub-requests and then the execution of the second request 604, and then the remaining sub-requests from the set 2020 of sub-requests, (d) execution of the second request 604 in parallel with the execution of at least one sub-request from the set 2020 of sub-requests; in the last case, then can be executed the requests that were not executed in parallel with the execution of the second request 604.
  • the receiving data from any client device and/or from any server and/or from any other server can be used, and the displaying on the device screen can be implemented as the transmission the signal to the display comprising certain information which further can be interpreted in a certain way and at least partially displayed on the screen of the client device. Transmitting and receiving of the signal are not mentioned everywhere within present description to simplify the description and for a better understanding of present solution.
  • Signals can be transmitted by optical methods (for example, via fiber-optic connection), by electronic methods (via wired or wireless connection), by mechanical methods (transmitting of the pressure, temperature and/or other physical parameters by means of which the transmission of the signal is possible).

Abstract

System for and method of execution of the request queue related to digital objects, the method executable at a server, method comprises: receiving from a client device a first request to execute a first task; dividing the first request into a set of sub-requests; calculating a unique identifier of sub-requests; storing the sub-requests in a sub-request storage along with the corresponding identifiers of sub-requests; receiving from the client device a second request to execute a second task; identifying the sub-request containing the indication to a digital object, indication to which is also contained in the second request; accessing the indicated sub-request and deleting from it the indication to the digital object, the indication to which is also contained in the second request to execute the second task; executing the sub-requests and the second request.

Description

SYSTEM FOR AND METHOD OF EXECUTING THE REQUEST QUEUE RELATED
TO DIGITAL OBJECTS
CROSS-REFERENCE [1] The present application claims priority to Russian Patent Application No. 2015106007, filed February 24, 2015, entitled "CHCTEMA H CIIOCOE BBinOJIHEHH^ OHEPE^H 3AQPOCOB B ΟΤΗΟΙΠΕΗΗΗ IJHOPOBMX ΟΕΊ>ΕΚΤΟΒ" the entirety of which is incorporated herein.
FIELD [2] Present technology relates to system for and method of executing the request queue related to digital objects.
BACKGROUND
[3] In modern computer technology users of on-line services often send from their client devices to the servers, providing the corresponding service, requests to execute a mass operation. In some cases, users send two or more sequential requests to execute various operations. In some cases, two or more sequential requests to execute various operations are sent in respect of two or more sets of digital objects. In some cases, these two or more sets of digital objects may intersect, at least partially, and this can cause conflicts while executing the sequential requests related to the intersecting sets of digital objects. As a non-limiting example of the situation that can potentially lead to a conflict while executing the requests, there can be sending, by the user, to the server the request to delete all the files from a certain folder in a cloud data storage, followed by sending by the same user to the server the second request to move the file from the above mentioned folder to another folder before finishing the execution of the first request.
[4] US patent application 2007/0073720 Al «Email Server for Processing a Threshold Number of Email Jobs for a Given User and Related Methods» provides the possibility of sending by user a series of the tasks to execute several similar commands (duplicates). This situation is possible, according to this patent application, when one interacting application is in the blocking mode and other interacting application continues to send the task repeatedly. This patent application claims the method of the email messages processing, the method includes: saving, by the program managing the tasks related to email messages, a set of tasks related to a plurality of users; and in case when the number of tasks from one user processed by one program managing the tasks in the queue exceeds the threshold quantity, executing the processing of the threshold quantity of email messages for this user.
[5] Thus, improvement of the existing computer systems for the processing of tasks queue is possible. SUMMARY
[6] It is an object of the present technology to ameliorate at least some of the inconveniences present in the prior art.
[7] Implementations of the present technology provide a method of executing the requests queue related to digital objects, the method executable at a server. The method comprises: receiving from the client device via communication network a first request to execute a first task, the first request to execute the first task includes the first task and an indication of digital objects from a first set of digital objects associated with the first task; dividing the first request into a set of sub-requests, each sub-request relating to a part of the digital objects from the first set of digital objects associated with the first request, and each sub-request including: information about the first task and an indication of digital objects from the corresponding portion of digital objects; calculating a unique identifier of a sub-request, the unique identifier of the sub-request being based, at least partially, on the content of corresponding sub-request; storing sub-requests in a sub-request storage along with the corresponding identifiers of sub-requests; receiving from a client device via communication network a second request to execute a second task, the second request to execute the second task including a second task and an indication to at least one digital object associated with the second request; based on unique identifiers of sub-requests stored in sub-request storage, identifying at least one sub-request from the set of sub-requests including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task; accessing the at least one sub-request from the set of sub- requests, and deleting from sub-request the indication to the at least one digital object, the indication to which also is contained in the second request to execute the second task; executing the sub-requests related to the digital objects, an indication of which is contained in sub-requests after the deleting from at least one sub-request the at least one digital object.
[8] In some embodiments, the method further comprises executing the second request.
[9] In some embodiments, the executing the second request is effected in parallel with the executing at least one sub-request.
[10] In some implementations, the executing of the second request is effected after the executing at least one sub-request.
[11] In some implementations, the dividing the first request into the set of sub-requests comprises identifying, by the server, the number of digital objects in the first set of digital objects, and wherein the dividing the first request into the set of sub-requests is effected when the number of the digital objects in the first set of digital objects exceeds the threshold value. [12] In some implementations, calculating the unique identifier of sub-request is effected by using a hash algorithm.
[13] In some implementations, identifying at least one sub-request from a set of sub-requests including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task, is effected by using the probabilistic data structure algorithm.
[14] In some implementations, the probabilistic data structure algorithm is a Bloom filter algorithm.
[15] In some implementations, responsive to receiving by the server from the client device a third request to execute the third task, the method further comprises blocking the execution of the third request to execute the third task.
[16] In some implementations, responsive to receiving by the server from the client device a third request to execute the third task, the method further comprises blocking the execution of the third request to execute the third task.
[17] In some implementations, the server, after the executing the sub-requests related to digital objects from the first set of digital objects, effects unblocking the execution of the third request to execute the third task.
[18] In some implementations, digital objects are email messages.
[19] In some implementations, executing the sub-requests is started before receiving the second request to execute the second task.
[20] Another object of the present technology is a server. The server includes a processor. The processor is configured to render the server to execute: receiving from a client device via a communication network a first request to execute a first task, the first request to execute the first task including the first task and an indication of digital objects from a first set of digital objects associated with the first task; dividing the first request into a set of sub-requests, each sub- request relating to a portion of the digital objects from the first set of digital objects associated with the first request, and each sub-request including: information about the first task and an indication to digital objects from the corresponding portion of digital objects; calculating of unique identifiers of sub-requests, and the unique identifier of sub-request is based, at least partially, on the content of corresponding sub-request; storing sub-requests in a sub-request storage along with the corresponding identifiers of sub-requests; receiving from the client device via communication network a second request to execute a second task, the second request to execute the second task including the second task and an indication of at least one digital object associated with the second request; based on unique identifiers of sub-requests stored in sub- request storage, identifying of at least one sub-request from a set of sub-requests including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task; accessing the indicated at least one sub-request from the set of sub-requests, and deleting from the sub-request the indication to the at least one digital object, the indication to which also is contained in the second request to execute the second task; executing the sub-requests related to the digital objects, an indication of which is contained in sub-requests after the deleting from at least one sub-request the at least one digital object.
[21] In some implementations of the server, processor is configured to render the server to execute the second request.
[22] In some implementations of the server, the executing the second request is effected in parallel with the executing at least one sub-request.
[23] In some implementations of the server, the executing the second request is effected after the executing at least one sub-request.
[24] In some implementations of the server, dividing the first request into the set of sub- requests comprises identifying, by the server, the number of digital objects in the first set of digital objects, and the dividing the first request into the set of sub-requests is effected when the number of the digital objects in the first set of digital objects exceeds the threshold value.
[25] In some implementations of the server, calculating the unique identifier of sub-request is effected by using a hash algorithm.
[26] In some implementations of the server, identifying at least one sub-request from a set of sub-requests, said at least one sub-request including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task, is effected by using the probabilistic data structure algorithm.
[27] In some implementations of the server, the probabilistic data structure algorithm is a Bloom filter algorithm.
[28] In some implementations of the server, the processor is configured to render the server, responsive to receiving by the server from the client device a third request to execute the third task, to block the execution of the third request to execute the third task.
[29] In some implementations of the server, the processor is configured to render the server to execute, after the executing the sub-requests related to digital objects from the first set of digital objects, unblocking the execution of the third request to execute the third task. [30] In some implementations of the server, the processor is configured to render the server, responsive to receiving by the server from the client device a third request to execute the third task, to block the execution of the third request to execute the third task.
[31] In some implementations of the server, digital objects are email messages. [32] In some implementations of the server, wherein the processor is configured such that the server can start consequential executing the sub-requests before receiving by the server from the client device via communication network the second request to execute the second task.
[33] In the context of the present specification, a "server" is a computer program that is running on appropriate hardware and is capable of receiving requests (e.g. from client devices) over a network, and carrying out those requests, or causing those requests to be carried out. The hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology. In the present context, the use of the expression a "server" is not intended to mean that every task (e.g. received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e. the same software and/or hardware); it is intended to mean that any number of software elements or hardware devices may be involved in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request; and all of this software and hardware may be one server or multiple servers, both of which are included within the expression "at least one server". [34] In the context of the present specification, "client device" is any computer hardware that is capable of running software appropriate to the relevant task at hand. In the context of the present specification, in general the term "client device" is associated with a user of the client device. Thus, some (non- limiting) examples of client devices include personal computers (desktops, laptops, netbooks, etc.), smartphones, and tablets, as well as network equipment such as routers, switches, and gateways. It should be understood, that in the present context the fact that the device functions as the client device does not mean that it cannot function as a server for other client devices. Using of the expression "client device" does not mean that several client devices may not be involved in receiving/sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or any steps of the method, disclosed in the present description.
[35] In the context of the present specification, the term "email message" includes a file with a text generated by the sender and intended for transmitting to one or more recipients via email. Email message also contains metadata, including metadata that allows to identify the corresponding email message.
[36] In the context of the present specification, the expression "information" includes information of any nature or kind whatsoever capable of being stored in a database. Thus information includes, but is not limited to audiovisual works (images, movies, sound records, presentations etc.), data (location data, numerical data, etc.), text (opinions, comments, questions, messages, etc.), documents, spreadsheets, etc.
[37] In the context of the present specification, the expression "software component" is meant to include software (appropriate to a particular hardware context) that is both necessary and sufficient to achieve the specific function(s) being referenced. [38] In the context of the present specification, the expression "computer information storage medium" is intended to include media of any nature and kind whatsoever, including without limitation RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc. A plurality of components may be combined to form the computer information storage medium, including two or more media components of a same type and/or two or more media components of different types.
[39] In the context of the present specification, a "database" is any structured collection of data, irrespective its particular structure, database management software, or computer hardware on which the data is stored, implemented or otherwise rendered available for use. A database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers.
[40] In the context of the present specification the words "first", "second", "third" etc. have been used as adjectives only for the purpose of allowing for distinction between the nouns that they differ from one another, and not for the purpose of describing any particular relationship between those nouns. Thus, for example, it should be understood that, the use of the terms "first database" and "third server" is not intended to imply any particular order, type, chronology, hierarchy or ranking (for example) of/between the server, nor is their use (by itself) intended imply that any "second server" must necessarily exist in any given situation. Moreover, as it has been noted in present description relating to other embodiments of technology, the link to the "first" element and the "second" element does not mean that the two elements can not be implemented as one physical element in the real world. Thus, for example, in some cases "first" server and "second" server could be implemented as the same component of the software and/or hardware, and in some other cases they can be implemented on the different software and/or hardware.
[41] Implementations of the present technology each have at least one of the above mentioned object and/or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present disclosure that have resulted from attempting to attain the above mentioned object may not satisfy this object and/or may satisfy other objects not specifically recited herein.
[42] Additional and/or alternative features, aspects, and advantages of embodiments of the present disclosure will become apparent from the following description, the accompanying drawings, and the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS
[43] For a better understanding of the present technology, as well as other aspects and further features thereof, reference is made to the following description which is to be used in conjunction with the accompanying drawings, where:
[44] Fig. 1 is a schematic representation of an implementation of a network computer system 100, implemented in accordance with non-limiting embodiments of the present technology.
[45] Fig. 2 is a schematic representation of a method of dividing a first user request to execute a task related to a set of digital objects into a set of sub-requests to execute the tasks related to a subset of digital objects, method is executed in accordance with non-limiting embodiments of the present technology.
[46] Fig. 3 is a schematic representation of a structure of the first user request to execute a task related to a set of digital objects, and the structure of sub-requests created as a result of dividing the first request, all implemented in accordance with non-limiting embodiments of the present technology.
[47] Fig. 4 is a schematic representation of a structure of storing the sub-requests in a sub- request storage by using Apache ZooKeeper™, the structure implemented in accordance with non-limiting embodiments of the present technology. [48] Fig. 5 is the schematic flowchart of a method, implemented at the server, depicted in the Fig. 1, the method being implemented in accordance with non-limiting embodiments of the present technology.
[49] Fig. 6 is a schematic representation of a structure of a second user request to execute a second task, and a structure of sub-requests created as a result of dividing the second request, the structure implemented in accordance with non-limiting embodiments of the present technology.
DETAILED DESCRIPTION
[50] In Fig. 1 there is depicted a schematic diagram of a network computer system 100 which are connected to each other via a communication network 112.
[51] It is to be expressly understood that the network computer system 100 is depicted as an illustrative implementation of the present technology. Thus, the following description should be considered only as the description of illustrative implementations of the present technology. This description is not intended to define the scope or set forth the bounds of the present technology. In some cases, what are believed to be helpful examples of modifications to network computer system 100 may also be set forth below. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology. These modifications are not an exhaustive list, and, as a person skilled in the art would understand, other modifications are likely possible. Further, where no examples of modifications have been set forth, it should not be interpreted that no modifications are possible and/or that what is described is the sole manner of implementing that element of the present technology. As a person skilled in the art would understand, this is likely not the case. In addition it is to be understood that the network computer system 100 may provide in certain instances simple implementations of the present technology, and that where such is the case they have been presented in this manner as an aid to understanding. As persons skilled in the art would understand, various implementations of the present technology may be of a greater complexity.
[52] The network computer system 100 comprises a set of servers 102. Servers 102 are conventional computer servers. The description of the single computer server 102 will be provided below. As those skilled in the art will appreciate, other computer servers 102 may have similar structure and, therefore, will not be described separately. In some embodiments of the technology, all computer servers 102 will have the functionality described below in respect to the server 102. In other embodiments of present technology, functionality of the server 102 described below can be separated between the several servers. Furthermore, in some embodiments, some servers may have all functionality of the server 102, as it described below, while the one or more other servers may have only the part of the functionality of the server 102.
[53] The server 102 may be implemented as a conventional computer server. In an example of an embodiment of the present technology, the server 102 is implemented as a Dell™ PowerEdge™ Server running the Microsoft™ Windows Server™ operating system. [54] Needless to say, the server 102 may be implemented in any other suitable hardware and/or software and/or firmware or a combination thereof. In the depicted non-limiting embodiment of present technology, the server 102 is a single server. In alternative non-limiting embodiments of the present technology, the functionality of the server 102 may be distributed and may be implemented via multiple servers. [55] In general the implementations of the server 102 are well known in the art. So, suffice it to state, that the server 102 comprises, inter alia, a network communication interface (not shown) for two-way communication over the communications network 112; and a processor (not shown) coupled to the network communication interface, the processor being configured to execute various routines, including those described herein below. To that end the processor may store or have access to computer readable instructions which instructions, when executed, cause the processor to execute the various operations described herein.
[56] Server 102 tasks comprise receiving of the email messages destined to the user 121, storing them, sending them from the box to user 121, execute operations with the email messages including the operations based on user 121 requests. As a non-limiting example, operations that can be executed based on user request, may include deleting one, some or all of the email messages from the certain folder (for example, from the "inbox" folder, "sent", "drafts", "spam" or any other folder created by user or provided to user 121 by the service provider by default). These operations can also include moving the email messages from one folder to another, marking all or some email messages as read, marking all or some email messages as unread, marking all or some email messages as spam, assigning to one, all or some email messages the certain category, creating new folders, deleting folders and many others.
[57] In alternative embodiments of present technology, as a non-limiting example, network computer system 100 can include instead of the server 102 or additionally to the server 102, a cloud storage server or other digital server that can be implemented as separated files or the group of files, including ordered group of files. As a non-limiting example, operations that are executed at user request, may include deleting of one, some or all of the files stored in certain cloud storage folder, moving the files from one folder to another, renaming the files, creating, deleting, renaming folders, moving folders, including putting one folder into another folder and many others.
[58] The server 102 is connected to communication network 112 via communication link (not numbered).
[59] The server 102 includes an information storage medium 104 that may be used by the server 102. Generally, the computer usable information storage medium 104 may be implemented as a medium of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc. and also the combinations thereof. [60] Information storage 104 of the server 102 is designed to store an email service module 106.
[61] The email service module 106 can be a program or a part of the program executed on the corresponding hardware and being able to execute storing and/or processing of email messages. The hardware for the email service module 106 may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology.
[62] In the context, the term "email service module 106" is not intended to mean that every task (e.g. based on the received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same software and/or hardware; it is rather intended to mean that any number of software elements or hardware devices may be involved in carrying out any task or request, or in processing the results of any task or request.
[63] In this embodiment of present technology, the email service module 106 includes users' mailboxes including user 121 mailbox, user 121 email messages and email folders in user 121 mailbox, including the folders "inbox", "outgoing", "sent", "draft", "spam", "deleted". [64] Mailboxes are the part of drive space of the storage medium 104 for storage of user e- mail messages (including e-mail messages for the user 121), the mailbox is being stored as a conventional file system catalog in the part of the drive space. E-mail messages are data files being stored in the given file system catalog.
[65] The email service module 106 can include the databases (not depicted) providing the storing of email messages.
[66] The email service module 106 can also provide the storing of email messages metadata including the identifiers of email messages.
[67] The email service module 106 can include database management systems.
[68] In this embodiment of present technology, database management systems are implemented by using the Apache ZooKeeper™ being the centralized service for providing configuration information, providing names assignment, providing the distributed synchronization, and for providing the group services. Apache ZooKeeper™ is a software by Apache Software Foundation that provides open source software for distributed coordination between servers, and also for providing the name register for large distributed systems. Apache ZooKeeper™ includes a toolkit that can be used to implement the blocking, barriers and other mechanisms of coordination between the servers.
[69] The main feature of Apache ZooKeeper™ is the fact that its architecture provides the possibility of parallel execution of tasks. If one of the leading system elements (main server 102) fails, the role of the main server 102 passes to another server 102.
[70] In alternative embodiments of present technology, database management systems can be based on using any other suitable software. For example, database management systems can be based on using Redis (REmote Dictionary Server), network logged data storage of "key - value" type with the open source. In alternative embodiments of present technology, database management systems can be based on using of RabbitMQ. RabbitMQ is a platform realizing the messaging system between program system components (Message Oriented Middleware) based on the AMQP (Advanced Message Queuing Protocol) standard.
[71] Email service module 106 also includes working applications 108. In this embodiment of present technology, Apache ZooKeeper™ also provides synchronization and coordination of the working applications 108.
[72] Working applications 108 can provide for receiving, storing and sending of email messages of mailbox of user 121.
[73] Working applications 108 can also provide for receiving, via communication network 112, one or more requests from user 121 to execute the tasks sent to server 102 from client device 114.
[74] User 121 requests include the task to be executed (for example, deleting the email messages permanently), and the indication to digital objects from the first set of digital objects associated with this task (for example, marking all email messages from spam@.spam . com and from the "deleted" folder as to be deleted permanently). [75] Working applications 108 can also provide execution of user 121 requests. In case of receiving several user 121 requests to execute the tasks, working applications 108 can effect their execution sequentially or in parallel.
[76] Working applications 108 can also identify the number of digital objects, in respect of which the request to execute the certain task has been received.
[77] Working applications 108 can also divide the user 121 request into a set of sub-requests.
[78] Dividing the request 202 into the set 2020 of sub-requests will be illustrated below with reference to Fig. 2 while describing the method 500. Structure of requests 202 and sub-requests 2022, 2024 and 2026 from the set 2020 of sub-requests will be illustrated below with reference to Fig. 3 while describing the method 500.
[79] Working applications 108 can also determine the unique identifiers of sub-requests.
[80] Working applications 108, after dividing the request to the set of sub-requests and after calculation of the unique identifiers of sub-requests, can store the sub-requests of the set of sub- requests along with the unique identifiers corresponding to the sub-requests in a sub-request storage 110.
[81] Information storage 104 of the server 102 is also designed to store the data stored in the sub-request storage 110. Sub-request storage 110, in particular, stores sub-requests 2022, 2024 and 2026 of the set 2020 of sub-requests.
[82] In one embodiment of present technology, Apache ZooKeeper™ is used to provide the storing of sub-requests in sub-request storage 110. In others embodiments of present technology, libraries of RabbitMQ, ZeroMQ and any other suitable software can be used.
[83] Fig. 4 is a schematic structure of storing the sub-requests in sub-request storage 110 by using Apache ZooKeeper™ that will be described in more detail along with the step 508 of method 500. [84] While dividing by one of the working applications 108 the request 202 into the set 2020 of sub-requests, working application 108 forms the set 2020 of sub-requests and stores the sub- requests in above mentioned sub-request storage 110. Sub-request storage 110 is available for the working applications 108 that can read the information from the sub-request storage 110.
[85] As was mentioned above, server 102 depicted in Fig. 1 can be implemented as a single server 102 or as several interconnected servers 102. Working applications 108 can be distributed between these servers 102. Speaking of the server 102 in general it is to be expressly understood that the different implementations of the server 102 are provided for illustration purposes only. As such, persons skilled in the art would understand the details of other implementations of email servers that might be used to implement embodiments of the present technology. Thus, by no means, example provided herein is meant to limit the scope of the present technology. [86] The server 102 depicted in Fig. 1 is connected to communication network 112 via a communication link (not numbered). In some non-limiting embodiments of the present technology, the communication network 112 can be implemented as the Internet. In other embodiments of the present technology, the communication network 112 can be implemented differently, such as any wide-area communication network, local-area communication network, a private communication network and so on.
[87] How the communication link is implemented is not particularly limited and will depend on which devices are connected to the communication network 112. As a non-limiting example, the connection of the server 102 to communication network 112 can be implemented via wired connection (such as an Ethernet based connection). [88] The server 102 is connected to the client device 114 via the communication network 112.
[89] The client device 114 is typically associated with a user 121. The user 121 is a person who has an e-mail account at the server 102.
[90] It should be noted that the fact that the client device 114 is associated with the user 121 does not need to suggest or imply any specific mode of operation. [91] Depicted in Fig. 1 client device 114 is implemented as a personal computer Dell™ Precision T1700 MT CA033PT170011RUWS with Intel® Xeon™ processor, CPU frequency: 3300 MHz, VTDIA Quadro K2000 videocard with running operation system Windows 7 Pro 64- bit. However, as those skilled in the art will understand, the implementation of the client device 114 is not particularly limited. The client device 114 may be implemented as a personal computer (desktops, laptops, netbooks, etc.), a wireless communication device (a cell phone, a smartphone, a tablet and the like), as well as other equipment. [92] The client device 114 includes an information storage medium (not depicted) implemented as a hard drive with 500 Gb memory. However, as those skilled in the art will understand, the storage media can be implemented as storage media of any nature and kind whatsoever, including RAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid state-drives, tape drives, etc and combination thereof.
[93] Information storage medium can store user files and program instructions. More specifically, the storage medium can store software which execute functions of a browser (not depicted). Generally, the purpose of the browser is to enable the user 121 to connect to the server 102, to receive e-mail messages by the means of a web- interface, to show received and sent e- mail messages on a display (not depicted), to send the requests to execute the tasks to the server 102. The browser can be implemented as Yandex™ browser. However, as a person skilled in the art would understand, the implementation of browser is not particularly limited. As a non- limiting examples, such browsers can be Google Chrome™, Internet Explorer™, etc. It should be expressly understood that any other commercially available or proprietary application can be used for implementing non-limiting embodiments of the present technology. [94] The client device 114 includes also the display (not depicted) implemented as a 21,5" Dell1™ E2214H 2214-7803, 1920x1080 screen resolution, which can provide video information to the user 121. As such, user 121 can see on the display in the interface of the browser of the client device 114 various objects, email messages, folders of email messages, as well as interface graphical elements that allow user 121 to choose certain email messages and to send requests to execute the tasks with such email messages.
[95] In alternative embodiments of present technology, client device 114 can be configured to execute operations with other digital objects, including the creation of the requests to execute the tasks with such digital objects and to send them to the server 102. [96] Fig. 5 is the schematic flowchart of a method 500, implemented on a set of the servers 102, depicted of the Fig. 1, the method 500 is implemented in accordance with non- limiting embodiments of the present technology. Method 500 is for execution of the requests queue in respect of digital objects. In this implementation of the present technology, digital objects are the email messages. In other implementation of present technology, digital objects can be files of any other type.
[97] In some embodiments of the present technology the method 500 can be executed at the servers 102 depicted in Fig. 1. For that purpose the servers 102 include storage mediums 104 storing computer-readable instructions which when executed cause the servers 102 to execute the steps of the method 500. However, as known to those skilled in the art, method 500 can be executed at other servers, or at one server 102. In the description below the references to the server 102, working applications 108 including working application 1082, to the data storage 110 mean that working applications 108 including working application 1082, data storage 110 can be implemented concurrently on one or more servers 102. Accordingly, access to them and the execution the steps can be executed on the corresponding server 102, or in parallel on the several corresponding servers 102.
[98] Step 502 - receiving from the client device 114 via the communication network 112 the first request 202 to execute the first task
[99] At step 502, the server 102 receives from the client device 114 via the communication network 112 the first user 121 request 202 to execute the first task.
[100] User 121 requests include the task to be executed and the indication to digital objects from the first set of digital objects associated with the task.
[101] As an example, in this implementation of present technology, the user 121 request 202 can include the task to delete the email messages permanently, and indicates the digital objects associated with this task: all messages from the email box received from the email address spam@spam. com and being in the folder "deleted". Accordingly, the user 121 request 202 to execute the task in respect to certain email messages contains identifier 300 (Fig. 3) of the task (deleting the email messages permanently), and the identifiers 301-310 of all the email messages, in respect of which the task should be executed.
[102] Method 500 then proceeds to step 504.
[103] Step 504 - identifying by the server 102 the number of digital objects in the first set of digital objects [104] At step 504, working application 1082 of the server 102 identifies of the number of digital objects in the first set of digital objects.
[105] In this implementations of present technology, the user 121 sends from the client device 114 via communication network to the server 102 the request to delete permanently all the email messages received from the email address ¾^am@ am.com and being in the folder "deleted". For example, the user 121 may have highlighted in the folder "deleted" one of the messages received from the address spam@¾pam . com , and has chosen the option "delete all the messages from this user in this folder". In this case, one or more working applications 108 can identify all the email messages corresponding to the specified criteria (sender - spam@spam . com , folder - "deleted") and identify their number. Let it be assumed that the number of email messages corresponding to specified criteria is ten, which means that in folder "deleted" at the moment of execution the corresponding operation by the user 121 there were ten email messages from the sender
Figure imgf000020_0001
[106] Step 506 - dividing the first request 202 into a set 2020 of sub-requests
[107] At step 506, working application 1082 of the server 102 divides of the first user 121 request 202 into a set 2020 of sub-requests, namely into the sub-requests 2022, 2024 and 2026. Each of the sub-requests 2022, 2024 and 2026 relates to the part of digital objects from the first set of digital objects associated with the first request. Such dividing of the request 220 into the set 2020 of sub-requests is executed in case when the number of digital objects, in respect of which the request 220 of user 121 to execute the task was received, exceeds a threshold value. In cases, where the number of digital objects, in respect of which the request 220 of user 121 to execute the task was received, does not exceed the threshold value, the method 500 terminates. [108] Threshold value can be pre- determined. Threshold value can be set for any type of task separately. For example, for the task of permanently deleting the email messages can be associated with a first specific threshold value. For the task of copying from one folder to another the email messages marked by the user 121 another threshold value can be set. [109] The process of dividing the request into the set of sub-requests is shown in a simplified form in the following example with reference to Fig. 2.
[110] The server 102 receives via communication network 112 from the client device 114 the user 121 request 202 to delete permanently all the email messages received from the email address spam(¾spam. com and being in the folder "deleted". Let it be assumed, that the working application 1082, which is one of the working applications 108, has determined that the number of email messages corresponding the given criteria is ten, and has identified the given email messages. Let it be assumed, that for the task of deleting the email messages permanently the threshold value of four email messages is set. Based on this data and assumptions, the request to execute the task of deleting permanently all the email messages received from the email address spam@spam. com and being in the folder "deleted" will be divided into the set 2020 of sub- requests including the subrequeses 2022, 2024 and 2026.
[I l l] While dividing the request into the set of sub-requests, working application 1082 generates the set of sub-requests in such a manner that each of the sub-requests includes information about the task and the indication of digital objects from the corresponding set of digital objects, in respect of which the request to execute the task was originally generated.
[112] For example, as it is shown in Fig. 3, the user 121 request 202 to execute the task in respect to certain email messages contains identifier 300 of the task (deleting the email messages permanently), and the identifiers 301-310 of ten email messages, in respect of which the task should be executed. Working application 1082, after determining that the number of email messages, in respect of which the task should be executed, exceeds the threshold value "4", divides the request 202 into the set 2020 of sub-requests including the sub-requests 2022, 2024 and 2026. And each of sub-requests 2022, 2024 and 2026 includes task identifier 300 (deleting permanently), and identifiers of the email messages, in respect of which the corresponding sub- request should be executed. So, the sub-request 2022 includes not only the task identifier 300 but also the identifiers 301, 302, 303 and 304 of four email messages, in respect of which the sub- request 2022 should be executed. The sub-request 2024 includes not only the task identifier 300 but also the identifiers 305, 306, 307 and 308 of four email messages, in respect of which the sub-request 2024 should be executed. The sub-request 2026 includes not only the task identifier 300 but also the identifiers 309 and 310 of two email messages, in respect of which the sub- request 2026 should be executed. As such, any of the identifiers 301-310 of ten email messages contained in the request 202 is presented in one of the sub-requests 2022, 2024 or 2026 generated as a result of dividing the request 202. [113] In this implementations of the present technology, the working application 1082 , after calculating the unique sub-request identifiers, can store the sub-requests 2022, 2024 and 2026in the sub-request storage 110.
[114] Method 500 then proceeds to step 508.
[115] Step 508 - calculation of unique identifiers of sub-requests 2022, 2024 and 2026 [116] At step 508, working application 1082 of the server 102 executes the calculation of unique identifiers of sub-requests, and the unique identifier of sub-request is based at least partially on the content of corresponding sub-request.
[117] In this implementation of present technology, calculation of the unique identifier of sub- request is executed by using a hash algorithm, and task identifier 300 and email messages identifiers, in respect of which the corresponding sub-request is executed, are used as an input. To calculate the unique identifiers of sub-request a m-bit array is generated. Originally, when the data structure stores the empty set and all m bits are reset to 0. User has to define k of independent hash-functions hi, hk, displaying each element in one of the m positions of the bit array in a fairly uniform way. To add the e element it is needed to write the unites for each of the positions hl(e), hk(e) of bit array. So-generated unique identifier of the sub-request can have the following form:
4f594a90 6370b0b7b951 where the part «4f594a90» of unique identifier of the sub-request is the number of the sub- request and the part «6370b0b7b951» separated from the number of the sub-request by underscore is an element used by the Bloom filter.
[118] Calculation of the unique identifier of sub-requests further allows working applications 108 to apply the Bloom filter while checking whether at least two different sub-requests include the identifiers of the same email message. Such situation (the presence of two or more sub- requests to execute different tasks in respect of the same email message) is possible when such sub-requests were generated as a result of dividing different requests from the same user, and both requests, at least partially, were made in respect of the same email message. [119] Method 500 then proceeds to step 510.
[120] Step 510 - storing the sub-requests 2022, 2024 and 2026 in the sub-request storage 110 along with the corresponding identifiers of sub-requests 2022, 2024 and 2026.
[121] At step 510, working application 1082 of the server 102, after dividing the request 202 into a set 2020 of sub-requests and calculation the unique identifiers of sub-requests 2022, 2024 and 2026, stores the set 2020 of sub-requests which, in this implementation of present technology, consists of the sub-requests 2022, 2024 and 2026 along with the corresponding identifiers of sub-requests 2022, 2024 and 2026, in the sub-request storage 110.
[122] In this embodiment of present technology, Apache ZooKeeper™ is used to provide the storing of sub-requests in sub-request storage 110. [123] In Fig. 4 is schematic representation of the structure of storing of sub-requests in a sub- request storage 110 by using the Apache ZooKeeper™. To store the data the z-nodes are used. In Fig. 4 the following z-nodes are depicted: 402, 404, 406, 408, 410, 4062, 4064, 4066. Feature of the z-nodes in Apache ZooKeeper™ is that with one z-node in a certain moment of time it is possible to execute only one process while multithreaded data processing. Because of this, if one of the working applications 108 executes the operation with one certain z-node, another working application 108 cannot execute the operation with the same z-node.
[124] Z-node 402 is a root node. [[112255]] TThhee zz--nnooddee 440022 iiss ffoolllloowweedd bbyy zz--nnooddeess 440044,, 440066,, 440088......441100,, aanndd eeaacchh ooff tthhee zz--nnooddeess 440044,, 440066,, 440088......441100 iiss ffoorr tthhee ddiiffffeerreenntt uusseerr tthhaatt hhaass mmaaddee aa rreeqquueesstt ttoo eexxeeccuuttee aatt lleeaasstt oonnee ttaasskk iinn rreessppeecctt ttoo tthhee sseett ooff eemmaaiill mmeessssaaggeess bbyy ddiiffffeerreenntt uusseerrss.. IInn FFiigg.. 44 ffoouurr zz--nnooddeess aarree ddeeppiicctteedd ttoo uusseerrss.. HHoowweevveerr,, aass ppeerrssoonnss sskkiilllleedd iinn tthhee aarrtt wwoouulldd uunnddeerrssttaanndd,, iinn rreeaalliittyy tthhee nnuummbbeerr ooff ssuucchh nnooddeess wwiillll bbee mmuucchh llaarrggeerr..
[[112266]] TThhee zz--nnooddee 440066 ddeeppiicctteedd iinn FFiigg.. 44 iiss tthhee zz--nnooddee ggeenneerraatteedd iinn rreessppeecctt ttoo tthhee uusseerr 112211,, aass tthhee uusseerr 112211 sseennddss ffrroomm tthhee cclliieenntt ddeevviiccee 111144 vviiaa ccoommmmuunniiccaattiioonn nneettwwoorrkk ttoo tthhee sseerrvveerr 110022 tthhee rreeqquueesstt ttoo ddeelleettee ppeerrmmaanneennttllyy tthhee sseett ooff tthhee eemmaaiill mmeessssaaggeess rreecceeiivveedd ffrroomm tthhee eemmaaiill aaddddrreessss
Figure imgf000024_0001
aanndd bbeeiinngg iinn tthhee ffoollddeerr ""ddeelleetteedd"".. [127] Further, in respect to each user each of whom has made at least one request to execute one or more tasks related to the set of email messages, there are z-nodes, and each of them stores a sub-request to be processed. In Fig. 4 not all such z-nodes are depicted, only the z-nodes each of which stores the sub-request generated while dividing the user 121 request. In this case, these are the z-nodes 4062, 4064 and 4066. [128] Z-node 4062 stores the sub-request 2022.
[129] Z-node 4064 stores the sub-request 2024.
[130] Z-node 4066 stores the sub-request 2026.
[131] In each such z-node storing the sub-request to be processed, there is an entry in JSON (JavaScript Object Notation) format that contains task identifier and message identifiers. [132] Accordingly, z-node 4062 storing the sub-request 2022 contains the entry 422 in JSON format including the task 300 identifier and the message 301, 302, 303 and 304 identifiers.
[133] The entry 422 can conventionally have the following form:
{"task": {"id":"taskl23"}, "msgs": [l,2,3,4]}.
[134] Z-node 4064 storing the sub-request 2024 contains the entry 424 in JSON format including the task 300 identifier and the message 305, 306, 307 and 308 identifiers. [135] The entry 424 can conventionally have the following form:
{"task": {"id":"taskl23"}, "msgs": [5,6,7,8]}.
[136] Z-node 4066 storing the sub-request 2026 contains the entry 426 in JSON format including the task 300 identifier and the message 309 and 310 identifiers. [137] The entry 426 can conventionally have the following form:
{"task": {"id":"taskl23"}, "msgs": [9,10]} .
[138] Additionally, in each z-node storing the sub-request to be processed (i.e. in z-nodes 4062, 4064, 4066) the unique sub-request identifiers 2022, 2024 and 2026, calculated at step 506, can be written. [139] Sub-requests storage 110 is available for working applications 108 that can read the information from the sub-requests storage 110.
[140] As was mentioned above, servers 102 depicted in Fig. 1 can be implemented as a single server 102 or as several interconnected servers 102. Working applications 108 can be, accordingly, distributed between these servers, and data storage can be implemented as the set of data storages. Accordingly, sub-requests 2022, 2024 and 2026 can be stored in different data storages at different servers.
[141] Method 500 then proceeds to step 512.
[142] Step 512 - receiving from the client device 114 via the communication network 112 the second request 604 to execute the second task [143] At step 512 server 102 receives from the client device 114 via the communication network 112 the second user 121 request 604 to execute the second task. Structure of the second request 604 is schematically depicted in Fig. 6.
[144] In this embodiments of present technology, second user 121 request 604 includes the second task to move the email messages from the folder "deleted" into the folder "inbox", and indicates the email messages associated with the given second task: three email messages selected by the user 121 with the mouse in the web-interface of email service in browser of the client device 114. Accordingly, the second user 121 request 604 to execute the second task in respect to certain email messages contains identifier 600 of the task (moving the email messages from the folder "deleted" to the folder "inbox"), and the identifiers 307, 601 and 309 of three selected by the user 121 email messages, in respect of which the task should be executed.
[145] In this implementation of present technology, before receiving by the server 102 from the client device 114 via communication network 112 the second user 121 request 604 to execute the second task, none of the working applications 108 of the server 102 has yet started to execute the sub-requests from the set 2020 of sub-requests. However, in other implementations of present technology, before receiving by the server 102 from the client device 114 via communication network 112 the second user 121 request 604 to execute the second task, one or more of the working applications 108 of the server 102 will start to execute one or more of the sub-requests from the set 2020 of sub-requests. [146] Method 500 then proceeds to step 514.
[147] Step 514 - identifying at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one of digital objects, the indication to which is also contained in the second request 604 to execute the second task
[148] At step 514, working applications 108 of the server 102 defines of at least one sub- request from the set 2020 of sub-requests containing the indication to the at least one of digital objects, the indication to which is also contained in the second request 604 to execute the second task.
[149] Identifying of at least one sub-request from the set 2020 of sub-requests including an indication of at least one of digital objects, indication of which is also contained in the second request 604 to execute the second task, can be effected in various ways. Generally speaking, working applications 108 of the server 102 can identify whether in the sub-requests from the set 2020 of sub-requests are such sub-requests that contain the same identifiers as the second request 604. [150] One of the methods of the definition can be implemented as checking all the sub-requests 2022, 2024, 2026 for the identifiers 307, 601 and 309 of email messages contained in the second request 604 to execute the second task. As those skilled in the art will appreciate, the set 2020 of sub-requests usually include significantly larger number of sub-requests than it is shown for ease of understanding in Fig. 3. The sub-requests that are included into the set 2020 of sub-requests can contain hundreds, thousands and tens of thousands of messages.
[151] In this embodiments, identifying of at least one sub-request from a set 2020 of sub- requests including an indication to that at least one of digital objects, indication of which is also contained in the second request 604 to execute the second task, is effected by using the probabilistic data structure algorithm. More specifically, in this embodiment of present technology, such probabilistic data structure algorithm is the Bloom filter.
[152] The Bloom filter is the probabilistic data structure allowing to compactly store a set of elements and to check if the element belongs to the set. There is also a probability to receive a false positive trigger (element is absent in the set but the data structure says the opposite) but not the false negative one.
[153] The Bloom filter is a m-bit array. Originally, when the data structure stores the empty set and all m bits are reset. User has to define k of independent hash-functions hi, hk, displaying each element in one of the m positions of the bit array in a fairly uniform way.
[154] To add the e element it is needed to write the ones for each of the positions hl(e), hk(e) of bit array.
[155] To check whether the e element belongs to the k set of the stored elements the bits hl(e), hk (e) condition can be checked. If at least one of them is equal to zero, the element cannot belong to the set (otherwise while adding the element all these bits would already be set). If all of them are equal to one, the data structure says that e belongs to the set. This can result in two situations: either the element actually belongs to the set or all these bits have been set by accident and this is the source of false triggering in this data structure.
[156] In this embodiment of present technology, unique identifier of the sub-request that has been calculated at step 508 by using the hash algorithm that was using task identifier 300 and email messages identifiers, in respect of which the corresponding sub-request is executed, as an input, provides the possibility to effect by using the Bloom filter the dropout of such sub-requests from the set 2020 of sub-requests where the identifiers 307, 601 and 309 of email messages are absent. It should be noted, that the Bloom filter allows to dropout the sub-requests in which the identifiers 307, 601 and 309 of email messages are absent; however, taking into account the possibility of false positive triggering, among the sub-requests that were not dropped out could be the sub-requests, in which the identifiers 307, 601 and 309 of email messages are absent. Accordingly, working applications 108 of the server 102, after the applying of the Bloom filter, should effect the defining of at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one of digital objects, the indication to which also is contained in the second request 604 to execute the second task, among the sub-requests that were not dropped out by the Bloom filter. However, as persons skilled in the art would understand, the volume of such checking will be significantly smaller than if the working applications 108 of the server 102 were checking all the sub-requests in the set 2020 of sub-requests for the presence of the identifiers 307, 601 and 309 of email messages.
[157] In this embodiment of present technology, working applications 108 of the server 102 have determined that two sub-requests - sub-request 2024 and sub-request 2026 - from the set 2020 of sub-requests contain the indications to two of the email messages 307 and 309, indications to which also are contained in the second request 604 to execute the second task.
[158] It should be noted that in other implementations of present technology, when before the receiving by the server 102 from the client device 114 via communication network 112 the second user 121 request 604 to execute the second task, one or more of the working applications 108 of the server 102 have started to execute one or more of the sub-requests from the set 2020 of sub-requests, step 508 will be executed with several variations, namely: (1) while determining the at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one digital object, indication to which is also contained in the second request 604 to execute the second task, those sub-requests that were already completed will not be taken into account, and (2) while determining at least one sub-request from the set 2020 of sub-requests containing the indication to the at least one digital object, indication to which is also contained in the second request 604 to execute the second task, will not be taken into account the sub-requests, the execution of which has already been started by working applications 108, because the execution of the operation by one of the applications 108 in respect to the corresponding z-node blocks the access to this z-node for any other process, as it was explained above in description of Fig. 4.
[159] Method 500 then proceeds to step 516.
[160] Step 516 - accessing the indicated at least one sub-request from the set 2020 of sub- requests, and deleting from sub-request the indication to that at least one digital object, the indication to which is also contained in the second request 604 to execute the second task
[161] At step 516, working applications 108 of the server 102 effect the accessing to all sub- requests from the set 2020 where are the identifiers of digital objects whose identifiers are also in the second request. [162] As it was mentioned above, working applications 108 of the server 102 have defined that identifiers 307 and 309 are present in the second request 604 as well as in the sub-requests 2024 and 2026. Accordingly, working applications 108 access the sub-requests 2024 and 2026, and delete the identifiers 307 and 309 from them.
[163] Method 500 then proceeds to step 518. [164] Step 518 - executing the sub-requests 2022, 2024 and 2026 related to digital objects, indications of which are contained in sub-requests 2022, 2024 and 2026 after deleting from at least one sub-request the indicated at least one digital object, and the executing the second request 604
[165] At step 518, working applications 108 of the server 102 effect the execution of the sub- requests 2022, 2024 and 2026 related to digital objects 301, 302, 303, 304, 305, 306, 308, 310, indications to which are contained in sub-requests 2022, 2024 and 2026 after the deleting from two sub-requests 2024 and 2026 the identifiers 307 and 309 of two digital objects, and the execution of the second request 604 related to all objects marked with identifiers 307, 601 and 309. [166] Practically this means that in this embodiment of present technology, while execution by working applications 108 of the server 102 subcommands from the first set 2020 of subcommands after the deleting from there the identifiers 307 and 309, none of the files marked by the user for the purpose of moving from the "deleted" folder into the "inbox" folder will be deleted but will be moved from the "deleted" folder into the "inbox" folder.
[167] In this embodiment of present technology, working applications 108 of the server 102 effect the execution of the sub-requests 2022, 2024, 2026 and the second request 604 in a random order. That means that working applications 108 of the server 102 can effect (a) first the execution of sub-requests 2022, 2024, 2026 and then the second request 604, or (b) vice versa, first the execution of the second request 604 and then the execution of sub-requests 2022, 2024, 2026, or (c) first the execution of some of sub-requests from the set 2020 of sub-requests and then the execution of the second request 604, and then the remaining sub-requests from the set 2020 of sub-requests, (d) execution of the second request 604 in parallel with the execution of at least one sub-request from the set 2020 of sub-requests; in the last case, then can be executed the requests that were not executed in parallel with the execution of the second request 604.
[168] The method 500 then terminates.
[169] Within the present description it should be understood that in all places where indicated the receiving data from any client device and/or from any server and/or from any other server, the receiving of electronic or any other signal from suitable client device (server, server) can be used, and the displaying on the device screen can be implemented as the transmission the signal to the display comprising certain information which further can be interpreted in a certain way and at least partially displayed on the screen of the client device. Transmitting and receiving of the signal are not mentioned everywhere within present description to simplify the description and for a better understanding of present solution. Signals can be transmitted by optical methods (for example, via fiber-optic connection), by electronic methods (via wired or wireless connection), by mechanical methods (transmitting of the pressure, temperature and/or other physical parameters by means of which the transmission of the signal is possible).

Claims

CLAIMS:
1. A method of execution of a request queue related to digital objects, the method executable at a server, method comprises: receiving from a client device via communication network a first request to execute a first task, the first request to execute the first task including: the first task and an indication of digital objects from a first set of digital objects associated with the first task; dividing the first request into a set of sub-requests, each sub-request relating to a portion of the digital objects from the first set of digital objects associated with the first request, and each sub-request including: information about the first task and an indication of digital objects from the corresponding portion of digital objects; calculating a unique identifier of a sub-request, the unique identifier of the sub- request being based, at least partially, on the content of corresponding sub- request; storing sub-requests in a sub-request storage along with the corresponding identifiers of sub-requests; receiving from the client device via communication network a second request to execute a second task, the second request to execute the second task including: the second task and an indication to at least one digital object connected to the second request; based on unique identifiers of sub-requests stored in the sub-request storage, identifying at least one sub-request from the set of sub-requests including an indication to the at least one of digital object, indication of which is also contained in the second request to execute the second task; accessing the at least one sub-request from the set of sub-requests, and deleting from sub-request the indication to the at least one digital object, the indication to which also is contained in the second request to execute the second task; executing the sub-requests related to the digital objects, an indication of which is contained in sub-requests after the deleting from at least one sub-request the at least one digital object.
The method of claim 1, further comprising executing the second request.
The method of claim 2, wherein the executing the second request is effected in parallel with the executing at least one sub-request.
The method of claim 2, wherein the executing of the second request is effected after the executing at least one sub-request.
The method of claim 1, wherein the dividing the first request into the set of sub-requests comprises identifying, by the server, the number of digital objects in the first set of digital objects, and wherein the dividing the first request into the set of sub-requests is effected when the number of the digital objects in the first set of digital objects exceeds the threshold value.
The method of claim 1, wherein calculating the unique identifier of sub-request is effected by using a hash algorithm.
The method of claim 6, wherein identifying at least one sub-request from a set of sub- requests, said at least one sub-request including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task, is effected by using the probabilistic data structure algorithm.
8. The method of claim 7, wherein the probabilistic data structure algorithm is a Bloom filter algorithm.
9. The method of claim 1, wherein, responsive to receiving by the server from the client device a third request to execute the third task, the method further comprises blocking the execution of the third request to execute the third task.
10. The method of claim 9, wherein the server, after the executing the sub-requests related to digital objects from the first set of digital objects, effects unblocking the execution of the third request to execute the third task.
11. The method of claim 9, wherein, responsive to receiving by the server from the client device the third request to execute the third task, the method further comprises (i) blocking the execution of the third request to execute the third task, and (ii) after the executing the second request related to digital objects, unblocking the execution of the third request to execute the third task.
12. The method of claim 1, wherein digital objects are email messages.
13. The method of claim 1, wherein executing the sub-requests is started before receiving the second request to execute the second task.
14. The method of any one of claims 1-13, wherein the server is the set of servers.
15. A server comprising a processor, the processor being configured to render the server to execute: receiving from a client device via a communication network a first request to execute a first task, the first request to execute the first task including: the first task and an indication of digital objects from a first set of digital objects associated with the first task; dividing the first request into a set of sub-requests, each sub-request relating to a portion of the digital objects from the first set of digital objects associated with the first request, and each sub-request including: information about the first task and an indication of digital objects from the corresponding portion of digital objects; calculating of unique identifiers of sub-requests, and the unique identifier of sub- request is based, at least partially, on the content of corresponding sub-request; storing sub-requests in a sub-request storage along with the corresponding identifiers of sub-requests; receiving from the client device via communication network a second request to execute a second task, the second request to execute the second task including: the second task and an indication of at least one digital object associated with the second request; based on unique identifiers of sub-requests stored in sub-request storage, identifying at least one sub-request from a set of sub-requests including an indication to the at least one of digital objects, indication of which is also contained in the second request to execute the second task; accessing the indicated at least one sub-request from the set of sub-requests, and deleting from the sub-request the indication to the at least one digital object, the indication to which also is contained in the second request to execute the second task; executing the sub-requests related to the digital objects, an indication of which is contained in sub-requests after the deleting from at least one sub-request the at least one digital object.
16. The server of claim 15, wherein processor is configured to render the server to execute the second request.
17. The server of claim 16, wherein the executing the second request is effected in parallel with the executing at least one sub-request.
18. The server of claim 16, wherein the executing the second request is effected after the executing at least one sub-request.
19. The server of claim 15, wherein dividing the first request into the set of sub-requests comprises identifying, by the server, the number of digital objects in the first set of digital objects, and wherein the dividing the first request into the set of sub-requests is effected when the number of the digital objects in the first set of digital objects exceeds the threshold value.
20. The server of claim 15, wherein calculating the unique identifier of sub-request is effected by using a hash algorithm.
21. The server of claim 20, wherein identifying of at least one sub-request from a set of sub- requests, said at least one sub-request including an indication to that the at least one of digital objects, indication of which is also contained in the second request to execute the second task, is effected by using the probabilistic data structure algorithm.
22. The server of claim 21, wherein the probabilistic data structure algorithm is a Bloom filter algorithm.
23. The server of claim 15, wherein the processor is configured to render the server, responsive to receiving by the server from the client device a third request to execute the third task, to block the execution of the third request to execute the third task.
24. The server of claim 23, wherein the processor is configured to render the server to execute, after the executing the sub-requests related to digital objects from the first set of digital objects, unblocking the execution of the third request to execute the third task.
25. The server of claim 16, wherein, the processor is configured such that, responsive to receiving by the server from the client device the third request to execute the third task, the processor can further block the execution of the third request to execute the third task, and, after the executing the second request related to digital objects from the first set of digital objects, unblock the execution of the third request to execute the third task.
26. The server of claim 15, wherein digital objects are email messages.
27. The server of claim 15, wherein the processor is configured such that the server can start consequential executing the sub-requests before receiving by the server from the client device via communication network the second request to execute the second task.
28. The server of any one of claims 15-27, implemented as the set of servers.
PCT/IB2015/054607 2015-02-24 2015-06-18 System for and method of executing the request queue related to digital objects WO2016135537A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
RU2015106007 2015-02-24
RU2015106007A RU2609089C2 (en) 2015-02-24 2015-02-24 System and method of performing queue of requests for digital objects

Publications (1)

Publication Number Publication Date
WO2016135537A1 true WO2016135537A1 (en) 2016-09-01

Family

ID=56787959

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IB2015/054607 WO2016135537A1 (en) 2015-02-24 2015-06-18 System for and method of executing the request queue related to digital objects

Country Status (2)

Country Link
RU (1) RU2609089C2 (en)
WO (1) WO2016135537A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230117461A1 (en) * 2021-10-15 2023-04-20 Oracle International Corporation Method and system to implement error handling with fine-grained sql hints

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0491367B1 (en) * 1990-12-19 1996-11-27 Bull HN Information Systems Inc. A queue managing method for an electronic mail system
US20010039575A1 (en) * 1998-02-04 2001-11-08 Thomas Freund Apparatus and method for scheduling and dispatching queued client requests within a server in a client/server computer system
US20050090283A1 (en) * 2003-10-28 2005-04-28 Rodriquez Pablo R. Wireless network access
US20070073720A1 (en) * 2005-09-29 2007-03-29 Teamon Systems, Inc. Email Server for Processing a Threshold Number of Email Jobs for a Given User and Related Methods
US20090049153A1 (en) * 2007-08-14 2009-02-19 International Business Machines Corporation Methods, computer program products, and apparatuses for providing remote client access to exported file systems
US20110087731A1 (en) * 2009-10-08 2011-04-14 Laura Wong Systems and methods to process a request received at an application program interface
US20110219185A1 (en) * 2008-01-30 2011-09-08 International Business Machines Corporation Optimizing execution of i/o requests for a disk drive in a computing system
US8762362B1 (en) * 2011-10-21 2014-06-24 Applied Micro Circuits Corporation System and method for updating a data structure
US20140181203A1 (en) * 2011-06-15 2014-06-26 Telefonaktiebolaget L M Ericsson (Publ) Methods and arrangement for dispatching requests

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7353227B2 (en) * 2004-07-23 2008-04-01 Sap Aktiengesellschaft Conflict resolution engine
EP2096564B1 (en) * 2008-02-29 2018-08-08 Euroclear SA/NV Improvements relating to handling and processing of massive numbers of processing instructions in real time
RU2469388C1 (en) * 2011-09-19 2012-12-10 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" Method of handling data stored in parallel file system with hierarchical memory organisation
EP2757491A1 (en) * 2013-01-17 2014-07-23 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
EP2962209A4 (en) * 2013-02-28 2016-11-09 Safend Ltd System and method for conflict-free cloud storage encryption

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0491367B1 (en) * 1990-12-19 1996-11-27 Bull HN Information Systems Inc. A queue managing method for an electronic mail system
US20010039575A1 (en) * 1998-02-04 2001-11-08 Thomas Freund Apparatus and method for scheduling and dispatching queued client requests within a server in a client/server computer system
US20050090283A1 (en) * 2003-10-28 2005-04-28 Rodriquez Pablo R. Wireless network access
US20070073720A1 (en) * 2005-09-29 2007-03-29 Teamon Systems, Inc. Email Server for Processing a Threshold Number of Email Jobs for a Given User and Related Methods
US20090049153A1 (en) * 2007-08-14 2009-02-19 International Business Machines Corporation Methods, computer program products, and apparatuses for providing remote client access to exported file systems
US20110219185A1 (en) * 2008-01-30 2011-09-08 International Business Machines Corporation Optimizing execution of i/o requests for a disk drive in a computing system
US20110087731A1 (en) * 2009-10-08 2011-04-14 Laura Wong Systems and methods to process a request received at an application program interface
US20140181203A1 (en) * 2011-06-15 2014-06-26 Telefonaktiebolaget L M Ericsson (Publ) Methods and arrangement for dispatching requests
US8762362B1 (en) * 2011-10-21 2014-06-24 Applied Micro Circuits Corporation System and method for updating a data structure

Also Published As

Publication number Publication date
RU2609089C2 (en) 2017-01-30
RU2015106007A (en) 2016-09-20

Similar Documents

Publication Publication Date Title
US11876845B2 (en) Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10708323B2 (en) Managing flow-based interactions with cloud-based shared content
US10599671B2 (en) Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US9230244B2 (en) Recipient changes in email threads
EP3114622B1 (en) Communicating status regarding application of compliance policy updates
US9535909B2 (en) Configurable event-based automation architecture for cloud-based collaboration platforms
EP3610390B1 (en) Predictive local pre-cache for reduced latency digital content access rights determination
RU2595533C2 (en) System for displaying mail attachments on web mail page
KR20220013027A (en) Apparatus and method for maintaining a message thread with opt-in permanence for entries
US9813417B2 (en) Systems and methods for creating and displaying an electronic communication digest
JP2018524740A (en) Instant communication message file storage method and apparatus
US10498681B1 (en) Storage management for ephemeral messages
US10951570B2 (en) Preventing a user from missing unread documents
US20230353628A1 (en) Linked file engagement
US9921971B2 (en) Context based cache eviction
US20180152404A1 (en) Email interaction analysis and propagation
WO2016135537A1 (en) System for and method of executing the request queue related to digital objects
US9460179B1 (en) Systems and methods for providing adaptive visualization of synchronization of multiple files
WO2013173648A2 (en) Method of and system for providing an image associated with a sender of an e-mail message or with contact information
US20210034426A1 (en) System and method for exporting logical object metadata
CN115695344A (en) Information processing method, device, terminal and storage medium
US20170329796A1 (en) Systems and methods for context-based file sharing

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15883059

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15883059

Country of ref document: EP

Kind code of ref document: A1