Systems, methods, and computer program products for efficient storage of multi-threaded log data

By managing multi-threaded logs through thread reference cache and map data structure, the problem of consuming resources when storing large amounts of logs is solved, achieving efficient storage and cost optimization.

CN116662046BActive Publication Date: 2025-11-25VISA INTERNATIONAL SERVICE ASSOCIATION
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202310190103.8
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2022-02-25
Filing Date
2023-02-24
Publication Date
2025-11-25
Estimated Expiration
2043-02-24

AI Technical Summary

Technical Problem

Storing large amounts of logs consumes significant computing resources, cloud storage is wasteful and expensive, and existing technologies fail to effectively manage multi-threaded log data.

Method used

Multi-threaded logs are managed using thread reference cache and map data structures. The most recently used items are set by thread identifiers, and the storage location is determined based on tags and time limits. Storage paths are optimized using cloud and internal storage libraries.

Benefits of technology

It improves storage efficiency, reduces resource waste, optimizes the cost of using cloud storage, and enables efficient storage of multi-threaded log data.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116662046B_ABST
    Figure CN116662046B_ABST
Patent Text Reader

Abstract

Systems, methods, and computer program products for efficiently storing multi-threaded log data are provided. A method includes receiving multi-threaded log data including logs, tags, and thread identifiers. For each respective log, setting the respective thread identifier as a most recently used item in a thread reference cache. Determining a respective log cache in a map data structure based on the respective thread identifier. Adding the respective log to the respective log cache. Determining whether to transfer the respective log and / or the respective log cache to a first repository based on the respective tag. Transferring the respective log to a second repository. Determining whether to remove an oldest log from the log cache based on a log cache size limit and / or a time limit. Determining whether to remove a least recently used log cache based on at least one map data structure size limit.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present disclosure relates generally to efficiently storing data, and in some non-limiting embodiments or aspects, to systems, methods, and computer program products for efficiently storing multi-threaded log data. BACKGROUND

[0002] Certain devices and / or systems generate logs (e.g., data records associated with respective occurrences of events). Logs from various devices and / or systems can be transmitted to and / or stored in a repository. For example, such logs can be stored in and / or accessed from a cloud repository (e.g., one or more servers that store logs and are accessible over the internet). At least some logs can be useful, e.g., for machine learning tasks, for auditing, for dispute resolution, for investigating past events that preceded (and / or can have contributed to) an event of interest, etc.

[0003] However, storing large amounts of logs (e.g., from many devices and / or systems) can consume large amounts of computing resources (e.g., large amounts of memory; large amounts of processing resources for receiving, classifying, searching, etc.), which can result in wasted resources, where not all logs are particularly relevant or useful. Additionally, while cloud repositories have certain advantages (e.g., convenience, data security, processing speed, etc.) compared to certain other types of repositories, cloud repositories can be relatively expensive and / or consume relatively large amounts of resources (e.g., electricity, computing resources, etc.) compared to other types of repositories, and thus, resource waste in cloud repositories can be particularly problematic. SUMMARY

[0004] Accordingly, improved systems, methods, and computer program products are provided for efficiently storing multi-threaded log data.

[0005] According to non-limiting embodiments or aspects, a computer-implemented method for efficient storage of multi-threaded log data is provided. An exemplary computer-implemented method for efficient storage of multi-threaded log data can include receiving multi-threaded log data including a plurality of logs, a plurality of tags, and a plurality of thread identifiers. Each respective log of the plurality of logs can be associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers. Each respective tag can indicate the respective log is in a respective category of a plurality of categories. Each respective thread identifier can indicate the respective log is associated with a respective thread of a plurality of threads. For each respective log of the plurality of logs, the respective thread identifier of the respective log can be set to a most recently used item in a thread reference cache. For each respective log, a respective log cache of a plurality of log caches in a map data structure can be determined based on the respective thread identifier of the respective log. A respective key for the map data structure can be based on the respective thread identifier, and the respective log cache can be a respective value associated with the respective key. For each respective log, the respective log can be added to the respective log cache in the map data structure. For each respective log, a determination can be made whether to transmit at least one of the respective log or the respective log cache to a first repository based on the respective tag of the respective log. For each respective log, the respective log can be transmitted to a second repository. For each respective log, a determination can be made whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit. For each respective log, a determination can be made whether to remove a least recently used log cache from the map data structure based on at least one map data structure size limit, wherein the least recently used log cache is associated with a least recently used item in the thread reference cache.

[0006] In some non-limiting embodiments or aspects, the first repository can include a cloud repository. Additionally or alternatively, the second repository can include an internal repository.

[0007] In some non-limiting embodiments or aspects, the first repository can include a cache. Additionally or alternatively, the second repository can include a persistent storage database.

[0008] In some non-limiting embodiments or aspects, the first repository can include a high performance repository. Additionally or alternatively, the second repository can include a low performance repository.

[0009] In some non-limiting embodiments or aspects, the second repository can include a remote cache.

[0010] In some non-limiting embodiments or aspects, receiving the multi-threaded log data can include receiving the multi-threaded log data from a plurality of data generators. Each respective thread identifier can be associated with a respective thread from a respective data generator of the plurality of data generators.

[0011] In some non-limiting embodiments or aspects, for each respective log of the plurality of logs, a respective data generator of the plurality of data generators can set a respective flag based on a respective category of the respective log.

[0012] In some non-limiting embodiments or aspects, the plurality of categories can include a first category, a second category, and a third category. Determining whether to transmit at least one of the respective log or the respective log cache to the first repository can include determining to transmit the respective log cache to the first repository if the respective flag indicates that the respective log is in the first category, determining to transmit the respective log to the first repository if the respective flag indicates that the respective log is in the second category, or determining not to transmit the respective log or the respective log cache to the first repository if the respective log is in the third category.

[0013] In some non-limiting embodiments or aspects, determining whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit can include determining that the oldest log from the respective log cache is older than the time limit, determining that a number of logs of the respective log cache is greater than the log cache size limit, and determining to remove the oldest log based on the oldest log being older than the time limit and the number of logs being greater than the log cache size limit.

[0014] In some non-limiting embodiments or aspects, the at least one map data structure size limit can include a map data structure size lower limit and a map data structure size upper limit. Determining whether to remove a least recently used log cache from the map data structure based on the at least one map data structure size limit can include determining that a number of log caches of the map data structure is greater than the map data structure size upper limit, and determining to remove the least recently used log cache and each next least recently used log cache until the number of log caches of the map data structure is less than or equal to the map data structure size lower limit.

[0015] In some non-limiting embodiments or aspects, the first array is initially named a buffer array and the second array is initially named a transfer array. Receiving the multi-threaded log data can include receiving a first portion of the multi-threaded log data in a first array named a buffer array for a first buffer time period; renaming the first array to a transfer array and renaming a second array to the buffer array after the first buffer time period; and receiving a second portion of the multi-threaded log data in the second array renamed the buffer array for a second buffer time period after the first buffer time period.

[0016] According to non-limiting embodiments or aspects, a system for efficient storage of multi-threaded log data is provided. An exemplary system for efficient storage of multi-threaded log data can include a first repository, a second repository, and a multi-threaded log system including a thread reference cache and a map data structure including a plurality of log caches. The multi-threaded log system can be configured to receive multi-threaded log data including a plurality of logs, a plurality of tags, and a plurality of thread identifiers. Each respective log of the plurality of logs can be associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers. Each respective tag can indicate the respective log is in a respective category of a plurality of categories. Each respective thread identifier can indicate the respective log is associated with a respective thread of a plurality of threads. For each respective log of the plurality of logs, the multi-threaded log system can be configured to: set the respective thread identifier of the respective log as a least recently most used item in the thread reference cache; determine a respective log cache of the plurality of log caches in the map data structure based on the respective thread identifier of the respective log, wherein a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; add the respective log to the respective log cache in the map data structure; determine whether to transfer at least one of the respective log or the respective log cache to the first repository based on the respective tag of the respective log; transfer the respective log to the second repository; determine whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit; and determine whether to remove a least recently least used log cache from the map data structure based on at least one map data structure size limit, wherein the least recently least used log cache is associated with a least recently least used item in the thread reference cache.

[0017] In some non-limiting embodiments or aspects, the first repository can include a cloud repository. Additionally or alternatively, the second repository can include an on-premise repository.

[0018] In some non-limiting embodiments or aspects, the first repository can comprise a high performance repository, and the second repository can comprise a low performance repository.

[0019] In some non-limiting embodiments or aspects, the second repository can comprise a remote cache.

[0020] In some non-limiting embodiments or aspects, the system can further comprise a plurality of data generators. Receiving the multi-threaded log data can comprise receiving the multi-threaded log data from the plurality of data generators. Each respective thread identifier can be associated with a respective thread from a respective data generator of the plurality of data generators. For each respective log of the plurality of logs, a respective data generator of the plurality of data generators can be configured to set the respective flag based on a respective category of the respective log.

[0021] In some non-limiting embodiments or aspects, the plurality of categories can comprise a first category, a second category, and a third category. Determining whether to transmit at least one of the respective log or the respective log cache to the first repository can comprise: determining to transmit the respective log cache to the first repository if the respective flag indicates that the respective log is in the first category; determining to transmit the respective log to the first repository if the respective flag indicates that the respective log is in the second category; or determining not to transmit the respective log or the respective log cache to the first repository if the respective log is in the third category.

[0022] In some non-limiting embodiments or aspects, determining whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit can comprise: determining that the oldest log from the respective log cache is older than the time limit, determining that a number of logs of the respective log cache is greater than the log cache size limit, and determining to remove the oldest log based on the oldest log being older than the time limit and the number of logs being greater than the log cache size limit.

[0023] In some non-limiting embodiments or aspects, the at least one map data structure size limit can comprise a map data structure size lower limit and a map data structure size upper limit. Determining whether to remove a least recently used log cache from the map data structure based on the at least one map data structure size limit can comprise: determining that a number of log caches of the map data structure is greater than the map data structure size upper limit, and determining to remove the least recently used log cache and each next least recently used log cache until the number of log caches of the map data structure is less than or equal to the map data structure size lower limit.

[0024] In some non-limiting embodiments or aspects, the system can further include a first array initially named a buffer array, and a second array initially named a transfer array. Receiving the multi-threaded log data can include receiving a first portion of the multi-threaded log data in the first array named the buffer array for a first buffer time period; renaming the first array to the transfer array and renaming the second array to the buffer array after the first buffer time period; and receiving a second portion of the multi-threaded log data in the second array renamed the buffer array for a second buffer time period after the first buffer time period.

[0025] According to non-limiting embodiments or aspects, a computer program product for efficient storage of multi-threaded log data is provided. An exemplary computer program product for efficient storage of multi-threaded log data can include one or more instructions that, when executed by at least one processor, cause the at least one processor to: receive multi-threaded log data including a plurality of logs, a plurality of tags, and a plurality of thread identifiers, each respective log of the plurality of logs being associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers, each respective tag indicating the respective log is in a respective category of a plurality of categories, each respective thread identifier indicating the respective log is associated with a respective thread of a plurality of threads; for each respective log of the plurality of logs: set the respective thread identifier of the respective log as a most recently used item in a thread reference cache; determine, based on the respective thread identifier of the respective log, a respective log cache of a plurality of log caches in a map data structure, wherein a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; add the respective log to the respective log cache in the map data structure; determine, based on the respective tag of the respective log, whether to transfer at least one of the respective log or the respective log cache to a first repository; transfer the respective log to a second repository; determine, based on at least one of a log cache size limit or a time limit, whether to remove an oldest log from the respective log cache; and determine, based on at least one map data structure size limit, whether to remove a least recently used log cache from the map data structure, wherein the least recently used log cache is associated with a least recently used item in the thread reference cache.

[0026] Other non-limiting embodiments or aspects will be set forth in the following numbered clauses:

[0027] Clause 1 : A computer-implemented method, the method comprising: receiving, with at least one processor, multi-threaded log data, the multi-threaded log data comprising a plurality of logs, a plurality of tags, and a plurality of thread identifiers, each respective log of the plurality of logs being associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers, each respective tag indicating the respective log is in a respective category of a plurality of categories, each respective thread identifier indicating the respective log is associated with a respective thread of a plurality of threads; for each respective log of the plurality of logs: setting, with at least one processor, the respective thread identifier of the respective log as a most recently used item in a thread reference cache; determining, with at least one processor, a respective log cache of a plurality of log caches in a map data structure based on the respective thread identifier of the respective log, wherein a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; adding, with at least one processor, the respective log to the respective log cache in the map data structure; determining, with at least one processor, whether to transfer at least one of the respective log or the respective log cache to a first repository based on the respective tag of the respective log; transferring, with at least one processor, the respective log to a second repository; determining, with at least one processor, whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit; and determining, with at least one processor, whether to remove a least recently used log cache from the map data structure based on at least one map data structure size limit, wherein the least recently used log cache is associated with a least recently used item in the thread reference cache.

[0028] Clause 2: The computer-implemented method of clause 1, wherein the first repository comprises a cloud repository, and wherein the second repository comprises an internal repository.

[0029] Clause 3: The computer-implemented method of clause 1 or 2, wherein the first repository comprises a cache, and wherein the second repository comprises a persistent storage database.

[0030] Clause 4: The computer-implemented method of any of clauses 1-3, wherein the first repository comprises a high performance repository, and the second repository comprises a low performance repository.

[0031] Clause 5: The computer-implemented method of any of clauses 1-4, wherein the second repository comprises a remote cache.

[0032] Clause 6: The computer-implemented method of any of clauses 1-5, wherein receiving the multi-threaded log data comprises receiving the multi-threaded log data from a plurality of data generators, each respective thread identifier being associated with a respective thread from a respective data generator of the plurality of data generators.

[0033] Clause 7: The computer-implemented method of any of clauses 1-6, wherein, for each respective log of the plurality of logs, a respective data generator of the plurality of data generators sets the respective flag based on a respective category of the respective log.

[0034] Clause 8: The computer-implemented method of any of clauses 1-7, wherein the plurality of categories comprises a first category, a second category, and a third category, and wherein determining whether to transfer at least one of the respective log or the respective log cache to the first repository comprises: if the respective flag indicates that the respective log is in the first category, determining to transfer the respective log cache to the first repository; if the respective flag indicates that the respective log is in the second category, determining to transfer the respective log to the first repository; or if the respective log is in the third category, determining not to transfer the respective log or the respective log cache to the first repository.

[0035] Clause 9: The computer-implemented method of any of clauses 1-8, wherein determining whether to remove the oldest log from the respective log cache based on at least one of the log cache size limit or the time limit comprises: determining that an oldest log from the respective log cache is older than the time limit; determining that a number of logs of the respective log cache is greater than the log cache size limit; and determining to remove the oldest log based on the oldest log being older than the time limit and the number of logs being greater than the log cache size limit.

[0036] Clause 10: The computer-implemented method of any of clauses 1-9, wherein the at least one map data structure size limit comprises a map data structure size lower limit and a map data structure size upper limit, and wherein determining whether to remove the least recently used log cache from the map data structure based on the at least one map data structure size limit comprises: determining that a number of log caches of the map data structure is greater than the map data structure size upper limit; and determining to remove the least recently used log cache and each next least recently used log cache until the number of log caches of the map data structure is less than or equal to the map data structure size lower limit.

[0037] Clause 11: The computer-implemented method of any of clauses 1-10, wherein the first array is initially named a buffer array, and wherein the second array is initially named a transfer array, and wherein receiving the multi-threaded log data comprises: receiving, for a first buffer time period, a first portion of the multi-threaded log data in the first array named the buffer array; renaming, after the first buffer time period, the first array to the transfer array and the second array to the buffer array; and receiving, for a second buffer time period after the first buffer time period, a second portion of the multi-threaded log data in the second array renamed the buffer array.

[0038] Clause 12: A system comprising: a first repository; a second repository; and a multi-threaded log system comprising a thread reference cache and a map data structure comprising a plurality of log caches, the multi-threaded log system configured to: receive multi-threaded log data comprising a plurality of logs, a plurality of tags, and a plurality of thread identifiers, each respective log of the plurality of logs associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers, each respective tag indicating the respective log is in a respective category of a plurality of categories, each respective thread identifier indicating the respective log is associated with a respective thread of a plurality of threads; for each respective log of the plurality of logs: set the respective thread identifier of the respective log as a least recently most used item in the thread reference cache; determine, based on the respective thread identifier of the respective log, a respective log cache of the plurality of log caches in the map data structure, wherein a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; add the respective log to the respective log cache in the map data structure; determine, based on a respective tag of the respective log, whether to transfer at least one of the respective log or the respective log cache to the first repository; transfer the respective log to the second repository; determine whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit; and determine whether to remove a least recently least used log cache from the map data structure based on at least one map data structure size limit, wherein the least recently least used log cache is associated with a least recently least used item in the thread reference cache.

[0039] Clause 13: The system of clause 12, wherein the first repository comprises a cloud repository, and wherein the second repository comprises an internal repository.

[0040] Clause 14: The system of clause 12 or 13, wherein the first repository comprises a high performance repository and the second repository comprises a low performance repository.

[0041] Clause 15: The system of any of clauses 12-14, wherein the second repository comprises a remote cache.

[0042] Clause 16: The system of any of clauses 12-15, further comprising a plurality of data generators, wherein receiving the multi-threaded log data comprises receiving the multi-threaded log data from the plurality of data generators, each respective thread identifier is associated with a respective thread from a respective data generator of the plurality of data generators, and wherein for each respective log of the plurality of logs, a respective data generator of the plurality of data generators is configured to set the respective flag based on a respective category of the respective log.

[0043] Clause 17: The system of any of clauses 12-16, wherein the plurality of categories comprises a first category, a second category, and a third category, and wherein determining whether to transfer at least one of the respective log or the respective log cache to the first repository comprises: if the respective flag indicates that the respective log is in the first category, determining to transfer the respective log cache to the first repository; if the respective flag indicates that the respective log is in the second category, determining to transfer the respective log to the first repository; or if the respective log is in the third category, determining not to transfer the respective log or the respective log cache to the first repository.

[0044] Clause 18: The system of any of clauses 12-17, wherein determining whether to remove the oldest log from the respective log cache based on at least one of the log cache size limit or the time limit comprises: determining that the oldest log from the respective log cache is older than the time limit; determining that the number of logs of the respective log cache is greater than the log cache size limit; and determining to remove the oldest log based on the oldest log being older than the time limit and the number of logs being greater than the log cache size limit, wherein the at least one map data structure size limit comprises a map data structure size lower limit and a map data structure size upper limit, and wherein determining whether to remove the least recently used log cache from the map data structure based on the at least one map data structure size limit comprises: determining that the number of log caches of the map data structure is greater than the map data structure size upper limit; and determining to remove the least recently used log cache and each next least recently used log cache until the number of log caches of the map data structure is less than or equal to the map data structure size lower limit.

[0045] Clause 19: The system of any of clauses 12-18, further comprising: a first array initially named a buffer array; and a second array initially named a transfer array, wherein receiving the multi-threaded log data comprises: receiving a first portion of the multi-threaded log data in the first array named the buffer array for a first buffer time period; after the first buffer time period, renaming the first array to the transfer array and renaming the second array to the buffer array; and receiving a second portion of the multi-threaded log data in the second array renamed the buffer array for a second buffer time period after the first buffer time period.

[0046] Clause 20: A computer program product, the computer program product comprising at least one non-transitory computer-readable medium comprising one or more instructions for, when executed by at least one processor, causing the at least one processor to: receive multi-threaded log data, the multi-threaded log data comprising a plurality of logs, a plurality of tags, and a plurality of thread identifiers, each respective log of the plurality of logs being associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers, each respective tag indicating the respective log is in a respective category of a plurality of categories, each respective thread identifier indicating the respective log is associated with a respective thread of a plurality of threads; for each respective log of the plurality of logs: set the respective thread identifier of the respective log as a most recently used item in a thread reference cache; determine, based on the respective thread identifier of the respective log, a respective log cache of a plurality of log caches in a map data structure, wherein a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; add the respective log to the respective log cache in the map data structure; determine, based on the respective tag of the respective log, whether to transmit at least one of the respective log or the respective log cache to a first repository; transmit the respective log to a second repository; determine, based on at least one of a log cache size limit or a time limit, whether to remove an oldest log from the respective log cache; and determine, based on at least one map data structure size limit, whether to remove a least recently used log cache from the map data structure, wherein the least recently used log cache is associated with a least recently used item in the thread reference cache.

[0047] These and other features and characteristics of the present disclosure, as well as the methods of operation and functions of the related elements of structures and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and appended claims with reference to the accompanying drawings, all of which form a part of this specification, wherein like reference numerals designate corresponding parts in the various figures. It is to be expressly understood, however, that the drawings are for purposes of illustration and description only and are not intended as a definition of the limits of the disclosure. BRIEF DESCRIPTION OF DRAWINGS

[0048] Additional advantages and details of implementation will now be explained with reference to the non-limiting, exemplary embodiments illustrated in the drawings, in which:

[0049] Figures 1A-1C is a schematic illustration of a system for efficient storage of multi-threaded log data in accordance with some non-limiting embodiments or aspects;

[0050] Figure 2 is a flowchart of a method of efficiently storing multithreaded log data according to some non-limiting embodiments or aspects;

[0051] Figure 3 is a flowchart of an exemplary implementation of a method of efficiently storing multithreaded log data according to some non-limiting embodiments or aspects;

[0052] Figures 4A-4C is a chart of an exemplary implementation of a method of efficiently storing multithreaded log data according to some non-limiting embodiments or aspects;

[0053] Figures 5A-5C is a schematic of an exemplary implementation of a method of efficiently storing multithreaded log data according to some non-limiting embodiments or aspects;

[0054] Figure 6 is a diagram of non-limiting embodiments or aspects of an environment in which the methods, systems and / or computer program products described herein can be implemented according to some non-limiting embodiments or aspects; and

[0055] Figure 7 Exemplary components of a device used in connection with non-limiting embodiments or aspects are shown. DETAILED DESCRIPTION

[0056] For the purposes of the following description, the terms "end", "upper", "lower", "right", "left", "vertical", "horizontal", "top", "bottom", "lateral", "longitudinal" and derivatives thereof shall relate to the orientation of the embodiments as shown in the drawings. However, it is to be understood that the embodiments can assume various alternative orientations and step sequences, except where expressly specified to the contrary. It is also to be understood that the specific devices and processes illustrated in the attached drawings, and described in the following specification are simply exemplary embodiments or aspects of the present disclosure. Hence, specific dimensions and other physical characteristics related to the embodiments or aspects disclosed herein are not to be considered as limiting.

[0057] No aspect, component, element, structure, act, step, function, instruction, etc. used in the specification should be construed as critical or essential unless explicitly stated as such. Also, as used herein, the article “a” is intended to include one or more items, and can be used interchangeably with “one or more” and “at least one.” Furthermore, as used herein, the term “set” is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, etc.), and can be used interchangeably with “one or more” or “at least one.” Where only one item is intended, the term “one” or similar language is used. Also, as used herein, the term “has” and its variants are intended to identify an existence, rather than an explicit description of an item. Additionally, unless otherwise clear from the context, the phrase “based on” is intended to not limit the aspect, unless otherwise indicated, to “based, only on” that item.

[0058] As used herein, the term “acquirer institution” can refer to an entity licensed and / or approved by a transaction service provider to initiate transactions (e.g., payment transactions) using payment devices associated with the transaction service provider. Transactions that an acquirer institution can initiate can include payment transactions (e.g., purchases, original credit transactions (OCTs), account funding transactions (AFTs), etc.). In some non-limiting embodiments or aspects, an acquirer institution can be a financial institution, such as a bank. As used herein, the term “acquirer system” can refer to one or more computing devices operated by or on behalf of an acquirer institution, such as a server computer executing one or more software applications.

[0059] As used herein, the term “account identifier” can include one or more primary account numbers (PANs), tokens, or other identifiers associated with a customer account. The term “token” can refer to an identifier that is used as a substitute or replacement identifier for an original account identifier, such as a PAN. An account identifier can be any combination of alphanumeric or character and / or symbol. A token can be associated with a PAN or other original account identifier in one or more data structures (e.g., one or more databases, etc.) such that the token can be used to conduct transactions without the need to directly use the original account identifier. In some instances, an original account identifier, such as a PAN, can be associated with multiple tokens for different individuals or purposes.

[0060] As used herein, the term “communication” can refer to receipt, receipt of, transmission, transfer, provision, and / or the like of data (e.g., information, signals, messages, instructions, commands, and / or the like). That one unit (e.g., a device, a system, a component of a device or system, a combination thereof, and / or the like) is in communication with another unit means that the one unit is capable of directly or indirectly receiving a signal and / or transmitting a signal to the other unit. This can refer to a direct or indirect connection (e.g., a direct communication connection, an indirect communication connection, and / or the like) that is wired and / or wireless in nature. Further, two units can be in communication with each other even though the information sent can be modified, processed, relayed, and / or routed by one or more intermediary units. For example, a first unit can be in communication with a second unit even though the first unit passively receives information and does not actively transmit information to the second unit. As another example, a first unit can be in communication with a second unit if at least one intermediary unit processes information received from the first unit and communicates the processed information to the second unit.

[0061] As used herein, the term “computing device” can refer to one or more electronic devices configured to process data. In some examples, a computing device can include the necessary components for receiving, processing, and outputting data, such as a processor, a display, a memory, an input device, a network interface, and / or the like. A computing device can be a mobile device. As an example, a mobile device can include a cellular phone (e.g., a smartphone or a standard cellular phone), a portable computer, a wearable device (e.g., a watch, glasses, lenses, clothing, and / or the like), a personal digital assistant (PDA), and / or other similar devices. A computing device can also be a desktop computer or other form of non-mobile computer.

[0062] As used herein, the terms “electronic wallet” and “electronic wallet application” refer to one or more electronic devices and / or software applications configured to initiate and / or conduct payment transactions. For example, an electronic wallet can include a mobile device executing an electronic wallet application, and can also include server-side software and / or databases for maintaining and providing transaction data to the mobile device. An “electronic wallet provider” can include an entity that provides and / or maintains an electronic wallet for a customer, such as Google Android Apple Samsung and / or other similar electronic payment systems. In some non-limiting examples, an issuer bank can be an electronic wallet provider.

[0063] As used herein, the term "issuer institution" can refer to one or more entities, such as a bank, that provide accounts to customers for conducting transactions (e.g., payment transactions), such as initiating credit and / or debit payments. For example, an issuer institution can provide a customer with an account identifier, such as a PAN, that uniquely identifies one or more accounts associated with the customer. The account identifier can be implemented on a portable financial device, such as a physical financial instrument (e.g., a payment card), and / or can be electronic and used for electronic payments. The term "issuer system" refers to one or more computer devices operated by or on behalf of an issuer institution, such as a server computer executing one or more software applications. For example, an issuer system can include one or more authorization servers for authorizing transactions.

[0064] As used herein, the term "merchant" can refer to a person or entity that provides goods and / or services or access to goods and / or services to a customer based on a transaction, such as a payment transaction. The term "merchant" or "merchant system" can also refer to one or more computer systems operated by or on behalf of a merchant, such as a server computer executing one or more software applications. As used herein, a "point-of-sale (POS) system" can refer to one or more computer and / or peripheral devices used by a merchant to conduct payment transactions with a customer, including one or more card readers, near field communication (NFC) receivers, radio frequency identification (RFID) receivers, and / or other contactless transceivers or receivers, contact-based receivers, payment terminals, computers, servers, input devices, and / or other similar devices that can be used to initiate payment transactions.

[0065] As used herein, the term "payment device" can refer to an electronic payment device, a portable financial device, a payment card (e.g., a credit or debit card), a gift card, a smart card, a smart media, a payroll card, a healthcare card, a wristband, a machine-readable medium containing account information, a keychain device or fob, an RFID transponder, a retailer discount or membership card, a cellular telephone, an electronic wallet mobile application, a PDA, a pager, a security card, a computing device, an access card, a wireless terminal, a transponder, and / or the like. In some non-limiting embodiments or aspects, a payment device can include volatile or non-volatile memory to store information (e.g., an account identifier, an account holder name, and / or the like).

[0066] As used herein, the term "payment gateway" can refer to an entity and / or a payment processing system operated by or on behalf of such an entity (e.g., a merchant service provider, payment service provider, payment servicer, payment servicer contracted with an acquirer, payment aggregator, etc.) that provides payment services (e.g., transaction service provider payment services, payment processing services, etc.) to one or more merchants. Payment services may be associated with the use of portable financial devices managed by a transaction service provider. As used herein, the term "payment gateway system" can refer to one or more computer systems, computer devices, servers, server clusters, etc., operated by or on behalf of a payment gateway.

[0067] As used herein, the term "server" may refer to or include one or more computing devices operated by or facilitating communication and processing among multiple parties in a network environment such as the Internet, but it should be understood that communication may be facilitated through one or more public or private network environments, and various other arrangements may be possible. Furthermore, multiple computing devices (e.g., servers, point-of-sale (POS) devices, mobile devices, etc.) communicating directly or indirectly in a network environment may constitute a "system." As used herein, references to "server" or "processor" may refer to a previously stated server and / or processor, different servers and / or processors, and / or combinations of servers and / or processors that perform a preceding step or function. For example, as used in the specification and claims, a first server and / or first processor stated to perform a first step or function may refer to the same or different servers and / or processors stated to perform a second step or function.

[0068] As used herein, the term "transaction service provider" can refer to an entity that receives transaction authorization requests from merchants or other entities and, in some cases, provides payment guarantees through an agreement between the transaction service provider and the issuing entity. For example, a transaction service provider may include, for instance... Payment networks, or any other entity that processes transactions. The term "transaction processing system" can refer to one or more computer systems operated by or on behalf of a transaction service provider, such as a transaction processing server executing one or more software applications. A transaction processing server may include one or more processors and, in some non-limiting embodiments or aspects, may be operated by or on behalf of a transaction service provider.

[0069] Non-limiting embodiments of the disclosed subject matter relate to systems, methods, and computer program products for efficient storage of multi-threaded log data. For example, non-limiting embodiments or aspects of the disclosed subject matter provide for receiving multi-threaded log data including a plurality of logs, a plurality of tags, and a plurality of thread identifiers, and each respective log can be associated with a respective tag and a respective thread identifier. Each respective tag can indicate the respective log is in a respective category of a plurality of categories, and each respective thread identifier can indicate the respective log is associated with a respective thread of a plurality of threads. For each respective log, the respective thread identifier can be set to a most recently used item in a thread reference cache, a respective log cache of a plurality of log caches in a map data structure can be determined based on the respective thread identifier (e.g., a respective key for the map data structure can be based on the respective thread identifier, and the respective log cache can be a respective value associated with the respective key), the respective log can be added to the respective log cache, it can be determined whether to transfer the respective log and / or the respective log cache to a first repository (e.g., a cloud repository) based on the respective tag, the respective log can be transferred to a second repository (e.g., a backup repository), it can be determined whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit, and it can be determined whether to remove a least recently used log cache (e.g., associated with a least recently used item in the thread reference cache) from the map data structure based on at least one map data structure size limit. Such embodiments provide techniques and systems that provide improved efficiency in storing and organizing log data in a multi-threaded environment, as only relevant data (e.g., entire log caches of a first category or only logs of a second category) is transferred / stored in the first repository, while less relevant data (e.g., a third category) is temporarily stored in the map data structure / log caches and backed up in the second repository. As such, for the first repository, which can be a cloud repository (e.g., which is relatively expensive and / or consumes a relatively large amount of resources), wasted resources are reduced, while the benefits (e.g., convenience, data security, processing speed, etc.) of the first (e.g., cloud) repository are applied to the most relevant logs. Additionally, due to the map data structure, thread reference cache, log cache size limit, time limit, and / or map data structure size limit, recent logs from recent threads can be efficiently stored in cache memory, while older logs and / or older threads are backed up in the second repository.Additionally, non-limiting embodiments or aspects of the disclosed subject matter provide for a first array, initially named a buffer array, and a second array, initially named a transfer array, such that multi-threaded log data can be received at the buffer array for a certain time period, then the names of the arrays can be switched, such that the second array (renamed the buffer array) can receive incoming multi-threaded log data, while the first array (renamed the transfer array) can transfer previously received multi-threaded log data (e.g., received during the time period) to corresponding log caches in a map data structure. As such, the number of lockings and unlockings for writing multi-threaded log data to corresponding log caches can be reduced. Thus, accuracy can be balanced with latency and usage of computing resources, e.g., as locking and unlocking operations can be relatively time consuming and require computing resources, and by temporarily storing incoming multi-threaded log data in an array for a short time period (and, thus, slightly reducing the accuracy of the log caches as incoming data is not written to the log caches for a short time period), latency and usage of computing resources can be significantly reduced, which can be a desirable trade-off, especially when the time period is short.

[0070] Figures 1A-1C A system 100 for efficiently storing multi-threaded log data is depicted in accordance with some non-limiting embodiments or aspects. The system 100 can include data generators 102-1 through 102-n (collectively, “data generators 102,” and individually, “data generator 102”), a multi-threaded log system 104 (e.g., which can include a thread reference cache 106, a map data structure 108, log caches 110-1 through 110-n (collectively, “log caches 110,” and individually, “log cache 110”), a first array 116-1, and / or a second array 116-2), a first repository 112, and / or a second repository 114.

[0071] The data generators 102 can include one or more devices capable of receiving information from and / or transmitting information to the multi-threaded logging system 104 (e.g., via a communication network, an ad hoc network, a local network, a private network, a virtual private network, and / or any other suitable communication techniques). Additionally or alternatively, each data generator 102 can include a device capable of receiving information from and / or transmitting information to other data generators 102 (e.g., via a communication network, an ad hoc network, a local network, a private network, a virtual private network, and / or any other suitable communication techniques). In some non-limiting embodiments or aspects, the data generators 102 can include computing devices, such as computers, mobile devices, wearable devices, servers, groups of servers, and / or other similar devices. For example, the data generators 102 can include client devices, etc. In some non-limiting embodiments or aspects, the data generators 102 can or can not be capable of receiving information (e.g., from the multi-threaded logging system 104 or from another data generator 102) via a short-range wireless communication connection (e.g., an NFC communication connection, an RFID communication connection, a communication connection, a communication connection, etc.) and / or transmitting information (e.g., to the multi-threaded logging system 104 and / or from another data generator 102) via a short-range wireless communication connection. In some non-limiting embodiments or aspects, each respective data generator 102 can generate respective log data including at least one log (e.g., a data record associated with a respective event occurrence). Each respective data generator 102 can have at least one respective thread identifier associated therewith, and the log generated by the respective data generator 102 can be associated with the respective thread identifier (e.g., the respective thread identifier can indicate that the respective log is associated with a respective thread associated with the respective data generator 102). Additionally, each data generator 102 can generate a tag associated with each log. For example, each respective tag can indicate that the respective log is in a respective category of a plurality of categories. In some non-limiting embodiments or aspects, the multi-threaded log data can include a plurality of logs (e.g., from a plurality of data generators 102) and respective tags and respective thread identifiers associated with the logs.

[0072] The multi-threaded logging system 104 can include one or more devices capable of receiving and / or transmitting information from and / or to the data generators 102, the first repository 112, the second repository 114, and / or the like (e.g., via a communication network, an ad hoc network, a local network, a private network, a virtual private network, and / or any other suitable communication techniques). For example, the multi-threaded logging system 104 can include a computing device, such as a server, a group of servers, and / or other similar devices. In some non-limiting embodiments or aspects, the multi-threaded logging system 104 can be associated with a transaction service provider as described herein. In some non-limiting embodiments or aspects, the multi-threaded logging system 104 can include the thread reference cache 106, the map data structure 108, the log caches 110, the first array 116-1, the second array 116-2, and / or the like. In some non-limiting embodiments or aspects, the thread reference cache 106 can include at least one cache memory (or a portion of a cache memory), such as a least recently used (LRU) cache memory, and / or the like. In some non-limiting embodiments or aspects, the map data structure 108 can include a plurality of log caches 110. For example, each respective key for the map data structure can be based on a respective thread identifier, and / or each respective log cache 110 (and / or its memory location in the cache memory) can be a respective value associated with the respective key. In some non-limiting embodiments or aspects, each log cache 110 can include at least one cache memory (or a portion of a cache memory), such as an LRU cache memory, and / or the like. In some non-limiting embodiments or aspects, each of the first array 116-1 and the second array 116-2 can include a cache memory (or a portion of a cache memory), a buffer, and / or other suitable memory (or a portion thereof).

[0073] The first repository 112 can include one or more devices capable of receiving information from and / or transmitting information to the multi-threaded logging system 104 (e.g., via a communication network, an ad hoc network, a local network, a private network, a virtual private network, and / or any other suitable communication techniques). For example, the first repository 112 can include a computing device such as a server, a group of servers, and / or other similar devices. In some non-limiting embodiments or aspects, the first repository 112 can be associated with a transaction service provider as described herein. In some non-limiting embodiments or aspects, the first repository 112 can be in communication with a data storage device, which can be local or remote with respect to the first repository 112. In some non-limiting embodiments or aspects, the first repository 112 can be capable of receiving information from the data storage device, storing information in the data storage device, transmitting information to the data storage device, or searching for information stored in the data storage device. In some non-limiting embodiments or aspects, the first repository 112 can include at least one of a cloud repository, a cache, a high performance repository (e.g., cache memory, etc.), and / or the like.

[0074] The second repository 114 can include one or more devices capable of receiving information from and / or transmitting information to the multi-threaded logging system 104 (e.g., via a communication network, an ad hoc network, a local network, a private network, a virtual private network, and / or any other suitable communication techniques). For example, the second repository 114 can include a computing device such as a server, a group of servers, and / or other similar devices. In some non-limiting embodiments or aspects, the second repository 114 can be associated with a transaction service provider as described herein. In some non-limiting embodiments or aspects, the second repository 114 can be in communication with a data storage device, which can be local or remote with respect to the second repository 114. In some non-limiting embodiments or aspects, the second repository 114 can be capable of receiving information from the data storage device, storing information in the data storage device, transmitting information to the data storage device, or searching for information stored in the data storage device. In some non-limiting embodiments or aspects, the second repository 114 can include at least one of an internal repository, a persistent storage database, a low performance repository (e.g., a low speed memory, a data storage device, etc.), a remote cache, and / or the like.

[0075] Figures 1A-1C The number and arrangement of systems and devices shown in FIG. 1 are provided as an example. There can be additional systems and / or devices, fewer systems and / or devices, different systems and / or devices, and / or a different arrangement of the systems and devices than shown in FIG. 1. The number and arrangement of systems and / or devices shown in FIG. 1 is not meant to be limiting. Figures 1A-1C The number and arrangement of systems and devices shown in FIG. 1 are provided as an example. There can be additional systems and / or devices, fewer systems and / or devices, different systems and / or devices, and / or a different arrangement of the systems and devices than shown in FIG. 1. The number and arrangement of systems and devices shown in FIG. 1 is not meant to be limiting. Figures 1A-1Ctwo or more systems or devices shown in the Figures 1A-1C A single system or device shown in can be implemented as multiple, distributed systems or devices. Additionally or alternatively, a group of systems (e.g., one or more systems) or a group of devices (e.g., one or more devices) of system 100 can perform one or more functions described as being performed by another group of systems or another group of devices of system 100.

[0076] Referring now to Figure 2 , a process 200 of efficiently storing multithreaded log data is shown, in accordance with some non-limiting embodiments or aspects. Figure 2 The steps shown are for exemplary purposes only. It should be appreciated that additional, fewer, different, and / or different order steps can be used in non-limiting embodiments or aspects.

[0077] As Figure 2 shown, at step 202, process 200 can include receiving multithreaded log data. For example, multithreaded log system 104 can receive multithreaded log data from multiple data generators 102. In some non-limiting embodiments or aspects, the multithreaded log data can include a plurality of logs, a plurality of tags, and a plurality of thread identifiers. Each respective log of the plurality of logs can be associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers. Each respective tag can indicate that the respective log is in a respective category of a plurality of categories. Each respective thread identifier can indicate that the respective log is associated with a respective thread of a plurality of threads.

[0078] In some non-limiting embodiments or aspects, each respective thread identifier can be associated with a respective thread from a respective data generator 102.

[0079] In some non-limiting embodiments or aspects, for each respective log, the respective data generator 102 can set the respective tag based on the respective category of the respective log. For illustrative purposes, more details regarding exemplary categories are discussed below with respect to Figure 3

[0080] ​In some non-limiting embodiments or aspects, the multi-threaded logging system 104 may include a first array 116-1 and a second array 116-2. For example, the first array 116-1 may initially be named a buffer array, and the second array 116-2 may initially be named a transfer array. Receiving multi-threaded log data may include receiving a first portion of the multi-threaded log data in the buffer array (e.g., the first array 116-1) during a first buffer period. After the first buffer period, the first array 116-1 may be renamed a transfer array, and the second array 116-2 may be renamed a buffer array. Thereafter, a second portion of the multi-threaded log data may be received in the buffer array (e.g., the second array 116-2, which has now been renamed a buffer array) during a second buffer period following the first buffer period. Simultaneously, the first portion of the multi-threaded log data may be transferred from the transfer array (e.g., the first array 116-2, which has now been renamed a transfer array) to the corresponding log cache 110 (e.g., added to the corresponding log cache 110), as described herein. After the second buffering period, these arrays can be renamed again (e.g., the first array 116-1 can be renamed the buffer array, and the second array 116-2 can be renamed the transfer array), and the process of receiving incoming multithreaded log data from the buffer array while transferring previously received multithreaded log data from the transfer array, and then renaming these arrays, can be repeated (e.g., continuously repeated until the multithreaded log data is interrupted, etc.). For illustrative purposes, further details regarding the reception of multithreaded log data according to some non-limiting embodiments or aspects are provided in... Figures 5A-5C As shown in the image.

[0081] like Figure 2 As shown, at step 204, process 200 may include setting a thread identifier in the thread reference cache. For example, for each corresponding log of multithreaded log data, the multithreaded logging system 104 may set the corresponding thread identifier of the corresponding log to the most recently used (MRU) entry in the thread reference cache 106.

[0082] For example, such as Figure 1AAs shown, multi-threaded log data may include a first log from a fourth thread (e.g., thread identifier T4), and the multi-threaded logging system 104 may initially set T4 as the most recently used item in the thread reference cache 106. Additionally, multi-threaded log data may include a second log from a fifth thread (T5), and the multi-threaded logging system 104 may set T5 as the most recently used item in the thread reference cache 106, and T4 may be shifted by one position (e.g., in the direction of the least recently used item in the thread reference cache 106). Multi-threaded log data may include a third log from the nth thread (Tn), a fourth log from the third thread (T3), a fifth log from the second thread (T2), and a sixth log from the first thread (T1), and the multi-threaded logging system 104 may sequentially set each of these threads as the most recently used item in the thread reference cache 106, while previously received logs may be shifted (e.g., the final order from most recently used to least recently used could be T1, T2, T3, Tn, T5, T4).

[0083] For illustrative purposes, further details regarding the setting of thread identifiers in the thread reference cache, based on some non-limiting embodiments or aspects, are provided below. Figures 5A-5C As shown in the image.

[0084] like Figure 2 As shown, at step 206, process 200 may include determining a log cache in the map data structure. For example, for each corresponding log of multi-threaded log data, the multi-threaded logging system 104 may determine the corresponding log cache 110 in the map data structure 108 based on the corresponding thread identifier of the corresponding log. In some non-limiting embodiments or aspects, the corresponding key for the map data structure 108 may be based on the corresponding thread identifier, and each corresponding log cache 110 (and / or its memory location in the cache memory) may be a corresponding value associated with the corresponding key.

[0085] In some non-limiting embodiments or aspects, if a corresponding log cache 110 associated with a corresponding thread identifier does not yet exist in the map data structure 108 (e.g., if the corresponding log is the first log received from the corresponding thread, etc.), the multi-threaded logging system 108 may generate a new log cache 110 associated with the corresponding thread identifier in the map data structure 108.

[0086] like Figure 2As shown, at step 208, process 200 can include adding the log to a log cache. For example, for each respective log of the multi-threaded log data, multi-threaded logging system 104 can add the respective log to a respective log cache 110 in map data structure 108.

[0087] As Figure 2 shown, at step 210, process 200 can include determining whether to transmit the log and / or the log cache to a first repository. For example, for each respective log of the multi-threaded log data, multi-threaded logging system 104 can determine, based on the respective tag of the respective log, whether to transmit at least one of the respective log or the respective log cache 110 (e.g., including the respective log and any logs previously received from the respective thread stored in the respective log cache 110) to first repository 112.

[0088] In some non-limiting embodiments or aspects, first repository 112 can include a cloud repository, and second repository 114 can include an on-premise repository. In some non-limiting embodiments or aspects, first repository 112 can include a cache, and second repository 114 can include a persistent storage database. In some non-limiting embodiments or aspects, first repository 112 can include a high-performance repository, and second repository 114 can include a low-performance repository. In some non-limiting embodiments or aspects, first repository 112 can include a local and / or highly accessible cache, and second repository 114 can include a remote cache.

[0089] In some non-limiting embodiments or aspects, the plurality of categories can include a first category, a second category, and a third category. Additionally, determining whether to transmit at least one of the respective log or the respective log cache to first repository 112 can include determining (e.g., by multi-threaded logging system 104) to transmit the respective log cache 110 (e.g., the respective log and any logs previously received from the respective thread stored in the respective log cache) to first repository 112 if the respective tag indicates that the respective log is in the first category, determining (e.g., by multi-threaded logging system 104) to transmit the respective log to first repository 112 if the respective tag indicates that the respective log is in the second category, or determining (e.g., by multi-threaded logging system 104) not to transmit the respective log or the respective log cache to the first repository if the respective log is in the third category.

[0090] For illustrative purposes, further details regarding determining whether to transmit the log and / or the log cache to first repository 112 in accordance with some non-limiting embodiments or aspects are shown in Figure 3 .

[0091] AsFigure 2 As shown, at step 212, process 200 may include transferring the log to a second storage. For example, for each corresponding log of multi-threaded log data, multi-threaded logging system 104 may transfer the corresponding log to second storage 114.

[0092] In some non-limiting embodiments or aspects, each log may be transferred to a second storage 114 (e.g., regardless of the tags and / or categories associated with the log). In this way, the second storage 114 can act as a backup (e.g., as described herein, because only some logs will be transferred to the first storage 112, and because some logs and / or log cache 110 may eventually be removed from the respective log cache 110 and / or map data structure 108, respectively).

[0093] like Figure 2 As shown, at step 214, process 200 may include determining whether (e.g., from the log cache) to remove the oldest log. For example, for each corresponding log of multithreaded log data, multithreaded logging system 104 may determine whether to remove the oldest log from the corresponding log cache 110 based on at least one of a log cache size limit or a time limit.

[0094] In some non-limiting embodiments or aspects, determining whether to remove the oldest log from the corresponding log cache 110 may include (e.g., by the multi-threaded logging system 104) determining that the oldest log from the corresponding log cache 110 is earlier than a time limit and / or (e.g., by the multi-threaded logging system 104) determining that the number of logs in the corresponding log cache 110 is greater than a log cache size limit. For example, the multi-threaded logging system 104 may determine to remove the oldest log only if the oldest log is earlier than a time limit and the number of logs is greater than the log cache size limit. Alternatively, the multi-threaded logging system 104 may determine to remove the oldest log if the oldest log is earlier than a time limit or the number of logs is greater than the log cache size limit.

[0095] like Figure 2As shown, at step 216, process 200 may include determining whether (e.g., from the map data structure) to remove the least recently used log cache. For example, for each corresponding log of multi-threaded log data, multi-threaded logging system 104 may determine whether to remove the least recently used log cache 110 from map data structure 108 based on at least one map data structure size limit. The least recently used log cache 110 may be associated with the least recently used item (e.g., a thread identifier) ​​in thread reference cache 106. For example, multi-threaded logging system 104 may determine which log cache 110 is the least recently used log cache 110 based on the least recently used item in thread reference cache 106 (e.g., a thread identifier, which may be associated with a corresponding key for the least recently used log cache 110 in map data structure 108).

[0096] In some non-limiting embodiments or aspects, at least one map data structure size limit may include a lower limit and an upper limit for the map data structure size. For example, determining whether to remove the least recently used log cache 110 from map data structure 108 may include (e.g., by multi-threaded logging system 104) determining that the number of log caches 110 of map data structure 108 is greater than the upper limit for the map data structure size. Additionally, multi-threaded logging system 104 may determine to remove the least recently used log cache 110 and each next least recently used log cache 110 until the number of log caches 110 of map data structure 108 is less than or equal to the lower limit for the map data structure size.

[0097] For illustrative purposes, further details regarding the determination of whether to remove the oldest and / or least recently used log cache, based on some non-limiting embodiments or aspects, are provided below. Figures 4A-4C As shown in the image.

[0098] Now for reference Figure 3 The present invention illustrates an implementation 300 of a process 200 for efficiently storing multi-threaded log data, according to some non-limiting embodiments or aspects. Figure 3 The steps shown are for illustrative purposes only. It should be understood that additional, fewer, different, and / or different orders of steps may be used in non-limiting embodiments or aspects.

[0099] like Figure 3 As shown, at step 302, implementation 300 may include receiving multi-threaded log data. For example, multi-threaded logging system 104 may receive multi-threaded log data, as described herein.

[0100] like Figure 3As shown in step 304, the implementation 300 can include determining whether the multi-threaded logging system 104 is enabled. If not, in step 306, the multi-threaded logging system 104 can simply transmit each log of the multi-threaded log data to the first repository 112 and / or the second repository 114. If the multi-threaded logging system 104 is enabled, the implementation 300 can proceed to step 308.

[0101] As shown in step 308, the implementation 300 can include determining whether the respective log from the multi-threaded log data is an end of its respective thread. For example, the respective tag associated with the respective log can indicate that the respective log is an end of the respective thread. If so, the multi-threaded logging system 104 can determine that the respective log from the multi-threaded log data is an end of its respective thread, and in step 310, the multi-threaded logging system 104 can remove the respective log cache 110 from the map data structure 108. If the respective log is not an end of the respective thread, the implementation 300 can proceed to step 312. Figure 3 As shown in step 312, the implementation 300 can include determining whether the respective log is associated with the first category. For example, the respective tag can indicate that the respective log is in the first category (or a subcategory of the first category). If so, the multi-threaded logging system 104 can determine that the respective log is in the first category, and in step 314, the multi-threaded logging system 104 can transmit the respective log cache 110 (e.g., the respective log and any logs previously received from the respective log cache by the respective thread) to the first repository 112. In some non-limiting embodiments or aspects, the respective data generator 102 that generated / transmitted the respective log can determine whether the respective log is in the first category (or a subcategory thereof) based on any criteria and / or combination of criteria of the respective data generator 102, and the respective data generator 102 can set the respective tag of the respective log accordingly. Examples of tags that indicate that the respective log is in the first category can include a critical error tag, a full log tag, a log up to now tag, etc. (each of which can be a subcategory of the first category). If the respective log is not in the first category, the implementation 300 can proceed to step 316.

[0102] Figure 3 As shown in step 316, the implementation 300 can include determining whether the respective log is associated with the second category. For example, the respective tag can indicate that the respective log is in the second category (or a subcategory of the second category). If so, the multi-threaded logging system 104 can determine that the respective log is in the second category, and in step 318, the multi-threaded logging system 104 can transmit the respective log cache 110 (e.g., the respective log and any logs previously received from the respective log cache by the respective thread) to the second repository 114. In some non-limiting embodiments or aspects, the respective data generator 102 that generated / transmitted the respective log can determine whether the respective log is in the second category (or a subcategory thereof) based on any criteria and / or combination of criteria of the respective data generator 102, and the respective data generator 102 can set the respective tag of the respective log accordingly. Examples of tags that indicate that the respective log is in the second category can include a warning error tag, a partial log tag, a log up to now tag, etc. (each of which can be a subcategory of the second category). If the respective log is not in the second category, the implementation 300 can proceed to step 320.

[0103] As shown in step 320, the implementation 300 can include determining whether the respective log is associated with the third category. For example, the respective tag can indicate that the respective log is in the third category (or a subcategory of the third category). If so, the multi-threaded logging system 104 can determine that the respective log is in the third category, and in step 322, the multi-threaded logging system 104 can transmit the respective log cache 110 (e.g., the respective log and any logs previously received from the respective log cache by the respective thread) to the third repository 116. In some non-limiting embodiments or aspects, the respective data generator 102 that generated / transmitted the respective log can determine whether the respective log is in the third category (or a subcategory thereof) based on any criteria and / or combination of criteria of the respective data generator 102, and the respective data generator 102 can set the respective tag of the respective log accordingly. Examples of tags that indicate that the respective log is in the third category can include a debug error tag, a partial log tag, a log up to now tag, etc. (each of which can be a subcategory of the third category). If the respective log is not in the third category, the implementation 300 can proceed to step 324. Figure 3 ​As shown, at step 316, implementation 300 may include determining whether a corresponding log is associated with a second category. For example, a corresponding tag may indicate that the corresponding log is in a second category (or a subcategory of a second category). If so, the multi-threaded logging system 104 may determine that the corresponding log is in the second category, and at step 318, the multi-threaded logging system 104 may transmit the corresponding log to the first storage 112. In some non-limiting embodiments or aspects, the corresponding data generator 102 that generates / transmits the corresponding log may determine whether the corresponding log is in the second category (or its subcategory) based on any criteria and / or combination of criteria of the corresponding data generator 102, and the corresponding data generator 102 may set the corresponding tag of the corresponding log accordingly. Examples of tags indicating that the corresponding log is in the second category may include a non-critical error tag, an always tag, a must tag, an alarm tag, a time-sensitive tag, etc. (each tag may be a subcategory of the second category). If the corresponding log is not in the second category, implementation 300 may proceed to step 320.

[0104] like Figure 3 As shown, at step 320, as described herein, implementation 300 may include (e.g., by a multi-threaded logging system 104) adding a corresponding log to a corresponding log cache 110 of the map data structure 108. For example, a corresponding tag may indicate that the corresponding log is in a third category (or a subcategory of a third category). If so, the multi-threaded logging system 104 may add the corresponding log to the corresponding log cache 110 of the map data structure 108. In some non-limiting embodiments or aspects, the corresponding data generator 102 that generates / transmits the corresponding log may determine whether the corresponding log is in a third category (or a subcategory thereof) based on any criteria and / or combinations of criteria of the corresponding data generator 102, and the corresponding data generator 102 may set a corresponding tag for the corresponding log accordingly. Examples of tags indicating that the corresponding log is in a third category may include optional tags, information-only tags, etc. (each tag may be a subcategory of a third category).

[0105] Now for reference Figures 4A-4C The present invention illustrates an implementation 400 of a process 200 for efficiently storing multi-threaded log data according to some non-limiting embodiments or aspects. Figures 4A-4C The graphs shown are for illustrative purposes only. Figures 4A-4C The graph shown in the figure illustrates the order of use on the horizontal axis and the number of logs in each log cache on the vertical axis.

[0106] like Figure 4AAs shown, the map data structure 108 may initially include four log caches 110 associated with a first thread (T1), a second thread (T2), a third thread (T3), and a fourth thread (T4). For example, the first log cache 110 associated with the first thread (T1) may include 8 logs, the second log cache 110 associated with the second thread (T2) may include 10 logs, the third log cache 110 associated with the third thread (T3) may include 17 logs, and the fourth log cache 110 associated with the fourth thread (T4) may include 10 logs.

[0107] like Figure 4B As shown, multi-threaded logging system 104 can receive multi-threaded log data, including additional logs associated with the second thread (T2). Multi-threaded logging system 104 can set the thread identifier associated with the second thread (T2) to the most recently used item in thread reference cache 106, as described herein. Additionally, as described herein, multi-threaded logging system 104 can add newly received logs to the corresponding log cache associated with the second thread (T2). In some non-limiting embodiments or aspects, multi-threaded logging system 104 can determine whether to remove the earliest log from the corresponding log cache 110 associated with the second thread (T2) based on the determination that the earliest log from the corresponding log cache 110 is earlier than a time limit and the number of logs in the corresponding log cache 110 is greater than a log cache size limit. For example, if the time limit is two minutes, the log cache size limit is 20 logs, and if the number of new logs received for the second thread (T2) is 11 (excluding the 10 previously stored logs, the oldest log is five minutes old), then the multi-threaded logging system 104 can remove the oldest log because it is earlier than the time limit and the number of logs is greater than the log cache size limit. Thus, the corresponding log cache 110 for the second thread (T2) now contains a total of 20 logs.

[0108] like Figure 4CAs shown, the multi-threaded logging data, including the new log associated with the fifth thread (T5), the sixth thread (T6), and the seventh thread (T7), can be received by the multi-threaded logging system 104. As described herein, the multi-threaded logging system 104 can sequentially set the thread identifiers associated with the fifth thread (T5), the sixth thread (T6), and the seventh thread (T7) as the most recently used item in the thread reference cache 106, such that the seventh thread (T7) is now the most recently used item in the thread reference cache 106. Additionally, as described herein, the multi-threaded logging system 104 can generate the new log cache 110 associated with the fifth thread (T5), the sixth thread (T6), and the seventh thread (T7). In some non-limiting embodiments or aspects, the at least one map data structure size limit can include a map data structure size lower limit (e.g., five log caches) and a map data structure size upper limit (e.g., six log caches). For example, the multi-threaded logging system 104 can determine that the number of log caches 110 of the map data structure 108 (e.g., a total of seven log caches) is greater than the map data structure size upper limit (e.g., six log caches). Additionally, the multi-threaded logging system 104 can determine to remove the least recently used log cache 110 (e.g., associated with the first thread Tl) and the next least recently used log cache 110 (e.g., associated with the third thread T3) until the number of log caches 110 of the map data structure 108 is less than or equal to the map data structure size lower limit (e.g., five log caches).

[0109] Referring now to Figures 5A-5C , an implementation 500 of the process 200 for efficiently storing multi-threaded logging data is shown, in accordance with some non-limiting embodiments or aspects. Figures 5A-5C The components shown are for example purposes only. In some non-limiting embodiments or aspects, the multi-threaded logging system 504, the thread reference cache 506, the first array 516-1, and the second array 516-2 can be the same as or similar to the multi-threaded logging system 104, the thread reference cache 106, the first array 116-1, and the second array 116-2, respectively.

[0110] As Figure 5AAs shown in FIG. 5, the multi-threaded logging system 504 can include a first array 516-1 and a second array 516-2. For example, the first array 516-1 can initially be named a buffer array and the second array 516-2 can initially be named a transfer array. The multi-threaded logging system 504 can receive a first portion of multi-threaded log data in the buffer array (e.g., the first array 516-1) for a first buffer time period. For example, the multi-threaded logging system 504 can receive multi-threaded log data at the buffer array (e.g., the first array 516-1), including new logs for a third thread (T3), a second thread (T2), and a first thread (Tl).

[0111] As shown in FIG. 5, the multi-threaded logging system 504 can include a first array 516-1 and a second array 516-2. For example, the first array 516-1 can initially be named a buffer array and the second array 516-2 can initially be named a transfer array. The multi-threaded logging system 504 can receive a first portion of multi-threaded log data in the buffer array (e.g., the first array 516-1) for a first buffer time period. For example, the multi-threaded logging system 504 can receive multi-threaded log data at the buffer array (e.g., the first array 516-1), including new logs for a third thread (T3), a second thread (T2), and a first thread (Tl). Figure 5B As shown in FIG. 5, the multi-threaded logging system 504 can include a first array 516-1 and a second array 516-2. For example, the first array 516-1 can initially be named a buffer array and the second array 516-2 can initially be named a transfer array. The multi-threaded logging system 504 can receive a first portion of multi-threaded log data in the buffer array (e.g., the first array 516-1) for a first buffer time period. For example, the multi-threaded logging system 504 can receive multi-threaded log data at the buffer array (e.g., the first array 516-1), including new logs for a third thread (T3), a second thread (T2), and a first thread (Tl).

[0112] As shown in FIG. 5, the multi-threaded logging system 504 can include a first array 516-1 and a second array 516-2. For example, the first array 516-1 can initially be named a buffer array and the second array 516-2 can initially be named a transfer array. The multi-threaded logging system 504 can receive a first portion of multi-threaded log data in the buffer array (e.g., the first array 516-1) for a first buffer time period. For example, the multi-threaded logging system 504 can receive multi-threaded log data at the buffer array (e.g., the first array 516-1), including new logs for a third thread (T3), a second thread (T2), and a first thread (Tl). Figure 5C As shown in FIG. 5, the multi-threaded logging system 504 can include a first array 516-1 and a second array 516-2. For example, the first array 516-1 can initially be named a buffer array and the second array 516-2 can initially be named a transfer array. The multi-threaded logging system 504 can receive a first portion of multi-threaded log data in the buffer array (e.g., the first array 516-1) for a first buffer time period. For example, the multi-threaded logging system 504 can receive multi-threaded log data at the buffer array (e.g., the first array 516-1), including new logs for a third thread (T3), a second thread (T2), and a first thread (Tl).

[0113] After the second buffer time period, the arrays can be renamed again (e.g., the first array 516-1 can be renamed to the buffer array, and the second array 516-2 can be renamed to the transfer array), and the process of receiving incoming multithreaded log data by the buffer array while transferring previously received multithreaded log data from the transfer array can be repeated (e.g., continuously, until the multithreaded log data is interrupted, etc.).

[0114] In some non-limiting embodiments or aspects, if the first array 516-1 and the second array 516-2 are not included, the multithreaded log system 504 can need to lock the thread reference cache 506 (and / or the respective log cache 110) each time a log is received, while a thread identifier is set in the thread reference cache 506 (and / or the log is added to the respective log cache 110), for example, so that multiple thread identifiers are not simultaneously set to the thread reference cache 506 from different threads, which can result in errors. Subsequently, the thread reference cache 506 (and / or the respective log cache 110) can be unlocked. However, the locking and unlocking operations can be relatively time consuming and require computational resources. By utilizing the first array 516-1 and the second array 516-2 to temporarily store incoming multithreaded log data in one array for a short time period while transferring previously received multithreaded log data from the other array, the latency and use of computational resources can be significantly reduced, as the locking and unlocking operations can be reduced (e.g., eliminated, or at least limited to one locking and unlocking cycle when the entirety of the contents of the transfer array are transferred).

[0115] Reference is now made to Figure 6 , Figure 6 is a diagram of a non-limiting embodiment or aspect of an environment 600 in which systems, products, and / or methods as described herein can be implemented. As Figure 6As shown, environment 600 includes transaction service provider system 602, issuer system 604, customer device 606, merchant system 608, acquirer system 610, and communication network 612. In some non-limiting embodiments or aspects, each of data generator 102, multi-threaded logging system 104, first repository 112, and / or second repository 114 can be implemented by transaction service provider system 602 (e.g., a portion thereof). In some non-limiting embodiments or aspects, at least one of data generator 102, multi-threaded logging system 104, first repository 112, and / or second repository 114 can be implemented by another system, another device, another group of systems, or another group of devices separate from or including transaction service provider system 602 (e.g., issuer system 604, customer device 606, merchant system 608, acquirer system 610, etc.) (e.g., a portion thereof). For example, multi-threaded logging system 104, first repository 112, second repository 114, and / or at least one data generator 102 can be implemented by transaction service provider system 602 (e.g., a portion thereof). Additionally or alternatively, at least one data generator 102 can be implemented by issuer system 604, customer device 606, merchant system 608, and / or acquirer system 610 (e.g., a portion thereof).

[0116] Transaction service provider system 602 can include one or more devices capable of receiving information from and / or transmitting information to issuer system 604, customer device 606, merchant system 608, and / or acquirer system 610 via communication network 612. For example, transaction service provider system 602 can include a computing device, such as a server (e.g., a transaction processing server), a group of servers, and / or other similar devices. In some non-limiting embodiments or aspects, transaction service provider system 602 can be associated with a transaction service provider described herein. In some non-limiting embodiments or aspects, transaction service provider system 602 can be in communication with a data storage device, which can be local or remote to transaction service provider system 602. In some non-limiting embodiments or aspects, transaction service provider system 602 can be capable of receiving information from the data storage device, storing information in the data storage device, transmitting information to the data storage device, or searching for information stored in the data storage device.

[0117] The issuer system 604 can include one or more devices capable of receiving information from and / or transmitting information to the transaction service provider system 602, the customer device 606, the merchant system 608, and / or the acquirer system 610 via the communication network 612. For example, the issuer system 604 can include a computing device, such as a server, a group of servers, and / or other similar devices. In some non-limiting embodiments or aspects, the issuer system 604 can be associated with an issuer institution as described herein. For example, the issuer system 604 can be associated with an issuer institution that issues a credit account, a debit account, a credit card, a debit card, and / or the like to a user associated with the customer device 606.

[0118] The customer device 606 can include one or more devices capable of receiving information from and / or transmitting information to the transaction service provider system 602, the issuer system 604, the merchant system 608, and / or the acquirer system 610 via the communication network 612. Additionally or alternatively, each customer device 606 can include devices capable of receiving information from and / or transmitting information to other customer devices 606 via the communication network 612, another network (e.g., an ad hoc network, a local network, a private network, a virtual private network, and / or the like), and / or any other suitable communication technique. For example, the customer device 606 can include a client device, and / or the like. In some non-limiting embodiments or aspects, the customer device 606 can or can not be capable of receiving information from the merchant system 608 or from another customer device 606 via a short-range wireless communication connection (e.g., an NFC communication connection, an RFID communication connection, a communication connection, a communication connection, and / or the like), and / or transmitting information via a short-range wireless communication connection (e.g., to the merchant system 608).

[0119] The merchant system 608 can include one or more devices capable of receiving information from and / or transmitting information to the transaction service provider system 602, the issuer system 604, the customer device 606, and / or the acquirer system 610 via the communication network 612. The merchant system 608 can also include devices capable of receiving information from and / or transmitting information to the customer device 606 via a communication connection (e.g., an NFC communication connection, an RFID communication connection, a communication connection, The merchant system 608 can include a device that receives information from the transaction service provider system 602, the issuer system 604, the customer device 606, and / or the merchant system 608, and / or transmits information to the transaction service provider system, the issuer system, the customer device, and / or the merchant system via the communication network 612, a communication connection, and / or the like. In some non-limiting embodiments or aspects, the merchant system 608 can include a computing device, e.g., a server, a group of servers, a client device, a group of client devices, and / or other similar devices. In some non-limiting embodiments or aspects, the merchant system 608 can be associated with a merchant as described herein. In some non-limiting embodiments or aspects, the merchant system 608 can include one or more client devices. For example, the merchant system 608 can include a client device that allows a merchant to transmit information to the transaction service provider system 602. In some non-limiting embodiments or aspects, the merchant system 608 can include one or more devices, e.g., a computer, a computer system, and / or a peripheral device, that can be used by a merchant to conduct payment transactions with a user. For example, the merchant system 608 can include a POS device and / or a POS system.

[0120] The acquirer system 610 can include one or more devices that receive information from and / or transmit information to the transaction service provider system 602, the issuer system 604, the customer device 606, and / or the merchant system 608 via the communication network 612. For example, the acquirer system 610 can include a computing device, a server, a group of servers, and / or the like. In some non-limiting embodiments or aspects, the acquirer system 610 can be associated with an acquirer as described herein.

[0121] The communication network 612 can include one or more wired and / or wireless networks. For example, the communication network 612 can include a cellular network (e.g., a long-term evolution (LTE) network, a third generation (3G) network, a fourth generation (4G) network, a fifth generation (5G) network, a code division multiple access (CDMA) network, etc.), a public land mobile network (PLMN), a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), a telephone network (e.g., a

[0122] In some non-limiting embodiments or aspects, processing a transaction can include generating and / or communicating at least one transaction message (e.g., an authorization request, an authorization response, any combination thereof, or the like). For example, a client device (e.g., the customer device 606, a POS device of the merchant system 608, or the like) can initiate a transaction, for example, by generating an authorization request. Additionally or alternatively, a client device (e.g., the customer device 606, at least one device of the merchant system 608, or the like) can communicate an authorization request. For example, the customer device 606 can communicate the authorization request to the merchant system 608 and / or a payment gateway (e.g., a payment gateway of the transaction service provider system 602, a third-party payment gateway separate from the transaction service provider system 602, or the like). Additionally or alternatively, the merchant system 608 (e.g., a POS device thereof) can communicate the authorization request to the acquirer system 610 and / or a payment gateway. In some non-limiting embodiments or aspects, the acquirer system 610 and / or a payment gateway can communicate the authorization request to the transaction service provider system 602 and / or the issuer system 604. Additionally or alternatively, the transaction service provider system 602 can communicate the authorization request to the issuer system 604. In some non-limiting embodiments or aspects, the issuer system 604 can determine an authorization decision (e.g., an authorization, a decline, or the like) based on the authorization request. For example, the authorization request can cause the issuer system 604 to determine an authorization decision based on the authorization request. In some non-limiting embodiments or aspects, the issuer system 604 can generate an authorization response based on the authorization decision. Additionally or alternatively, the issuer system 604 can communicate the authorization response. For example, the issuer system 604 can communicate the authorization response to the transaction service provider system 602 and / or a payment gateway. Additionally or alternatively, the transaction service provider system 602 and / or a payment gateway can communicate the authorization response to the acquirer system 610, the merchant system 608, and / or the customer device 606. Additionally or alternatively, the acquirer system 610 can communicate the authorization response to the merchant system 608 and / or a payment gateway. Additionally or alternatively, a payment gateway can communicate the authorization response to the merchant system 608 and / or the customer device 606. Additionally or alternatively, the merchant system 608 can communicate the authorization response to the customer device 606. In some non-limiting embodiments or aspects, the merchant system 608 can receive the authorization response (e.g., from the acquirer system 610 and / or a payment gateway). Additionally or alternatively, the merchant system 608 can complete the transaction (e.g., provide, ship, and / or deliver a good and / or service associated with the transaction; fulfill an order associated with the transaction; any combination thereof; or the like) based on the authorization response.

[0123] For illustrative purposes, processing a transaction can include generating a transaction message (e.g., an authorization request, etc.) based on an account identifier of a customer (e.g., associated with a customer device 606, etc.) and / or transaction data associated with the transaction. For example, a merchant system 608 (e.g., a client device of the merchant system 608, a POS device of the merchant system 608, etc.) can initiate a transaction, e.g., by generating an authorization request (e.g., in response to receiving an account identifier from a portable financial device of the customer, etc.). Additionally or alternatively, the merchant system 608 can communicate the authorization request to an acquirer system 610. Additionally or alternatively, the acquirer system 610 can communicate the authorization request to a transaction service provider system 602. Additionally or alternatively, the transaction service provider system 602 can communicate the authorization request to an issuer system 604. The issuer system 604 can determine an authorization decision (e.g., authorize, decline, etc.) based on the authorization request and / or the issuer system 604 can generate an authorization response based on the authorization decision and / or the authorization request. Additionally or alternatively, the issuer system 604 can communicate the authorization response to the transaction service provider system 602. Additionally or alternatively, the transaction service provider system 602 can communicate the authorization response to the acquirer system 610, which can communicate the authorization response to the merchant system 608.

[0124] For illustrative purposes, clearing and / or settlement of a transaction can include generating a message (e.g., a clearing message, a settlement message, etc.) based on an account identifier of a customer (e.g., associated with a customer device 606, etc.) and / or transaction data associated with the transaction. For example, a merchant system 608 can generate at least one clearing message (e.g., multiple clearing messages, a batch of clearing messages, etc.). Additionally or alternatively, the merchant system 608 can communicate the clearing message to an acquirer system 610. Additionally or alternatively, the acquirer system 610 can communicate the clearing message to a transaction service provider system 602. Additionally or alternatively, the transaction service provider system 602 can communicate the clearing message to an issuer system 604. Additionally or alternatively, the issuer system 604 can generate at least one settlement message based on the clearing message. Additionally or alternatively, the issuer system 604 can communicate the settlement message and / or funds to the transaction service provider system 602 (and / or a settlement bank system associated with the transaction service provider system 602). Additionally or alternatively, the transaction service provider system 602 (and / or the settlement bank system) can communicate the settlement message and / or funds to the acquirer system 610, which can communicate the settlement message and / or funds to the merchant system 608 (and / or an account associated with the merchant system 608).

[0125] In some non-limiting embodiments or aspects, each of the foregoing messages (e.g., an authorization request, an authorization response, a settlement message, a clearing message, etc.) can be a journal, as described herein.

[0126] Provided as an example Figure 6 The number and arrangement of systems, devices, and / or networks are shown. Additional systems, devices, and / or networks, fewer systems, devices, and / or networks, different systems, devices, and / or networks, and / or networks may exist, and / or may be combined with... Figure 6 The systems, devices, and / or networks shown are arranged in different ways. Furthermore, implementation can be carried out within a single system or device. Figure 6 The two or more systems or devices shown, or Figure 6 The single system or device shown may be implemented as multiple distributed systems or devices. Alternatively, a group of systems (e.g., one or more systems) or a group of devices (e.g., one or more devices) of environment 600 may perform one or more functions described as being performed by another group of systems or devices of environment 600.

[0127] Now for reference Figure 7 The diagram illustrates exemplary components of device 700 according to a non-limiting embodiment or aspect. As an example, device 700 may correspond to... Figures 1A-1C The data generator 102, multi-threaded log system 104, first storage 112 and / or second storage 114, and / or Figure 6 The system includes a transaction service provider system 602, an issuer system 604, a client device 606, a merchant system 608, and / or an acquirer system 610. In some non-limiting embodiments or aspects, such a system or device may include at least one device 700 and / or at least one component of device 700. The number and arrangement of the components shown are provided as examples. In some non-limiting embodiments or aspects, with Figure 7 Compared to those shown, device 700 may include additional components, fewer components, different components, or components arranged in a different manner. Alternatively, a set of components of device 700 (e.g., one or more components) may perform one or more functions described as being performed by another set of components of device 700.

[0128] like Figure 7As shown, the apparatus 700 can include a bus 702, a processor 704, a memory 706, a storage component 708, an input component 710, an output component 712, and a communication interface 714. The bus 702 can include a component that permits communication among the components of the apparatus 700. In some non-limiting embodiments or aspects, the processor 704 can be implemented as hardware, software, or a combination of hardware and software. For example, the processor 704 can include a processor (e.g., a central processing unit (CPU), a graphics processing unit (GPU), an accelerated processing unit (APU), etc.), a microprocessor, a digital signal processor (DSP), and / or any processing component that can be programmed to perform a function (e.g., a field programmable gate array (FPGA), an application- specific integrated circuit (ASIC), etc.). The memory 706 can include a random access memory (RAM), a read only memory (ROM), and / or another type of dynamic or static storage device (e.g., a flash memory, a magnetic storage device, an optical storage device, etc.) that stores information and / or instructions for use by the processor 704.

[0129] With continued reference to Figure 7 , the storage component 708 can store information and / or software related to the operation and use of the apparatus 700. For example, the storage component 708 can include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, a solid state disk, etc.) and / or another type of computer readable media. The input component 710 can include a component that permits the apparatus 700 to receive information, such as via a user input (e.g., a touch screen display, a keyboard, a keypad, a mouse, a button, a switch, a microphone, etc.). Additionally, or alternatively, the input component 710 can include a sensor (e.g., a global positioning system (GPS) component, an accelerometer, a gyroscope, an actuator, etc.) for sensing information. The output component 712 can include a component that provides output information from the apparatus 700 (e.g., a display, a speaker, one or more light-emitting diodes (LEDs), etc.). The communication interface 714 can include a transceiver-like component (e.g., a transceiver, a separate receiver and transmitter, etc.) that enables the apparatus 700 to communicate with other devices, such as via a wired connection, a wireless connection, or a combination of wired and wireless connections. The communication interface 714 can allow the apparatus 700 to receive information from another device and / or provide information to another device. For example, the communication interface 714 can include an Ethernet interface, an optical interface, a coaxial interface, an infrared interface, a radio frequency (RF) interface, a universal serial bus (USB) interface, a Bluetooth® interface, a ZigBee® interface, a near-field communication (NFC) interface, a Global Positioning System (GPS) interface, a

[0130] ​The device 700 can perform one or more processes described herein. The device 700 can perform these processes based on processor 704 executing software instructions stored by a computer-readable medium, such as memory 706 and / or storage component 708. A computer-readable medium can include any non-transitory memory, which can be internal or external to a single physical storage device. Software instructions can be read into the memory 706 and / or storage component 708 from another computer-readable medium or from another device via communication interface 714. When executed, software instructions stored in the memory 706 and / or storage component 708 can cause the processor 704 to perform one or more processes described herein. Additionally or alternatively, hardwired circuitry can be used in place of or in combination with software instructions to perform one or more processes described herein. Thus, embodiments described herein are not limited to any specific combination of hardware circuitry and software. The term “programmed or configured” as used herein refers to an arrangement of software, hardware circuitry, or any combination thereof on one or more devices.

[0131] While embodiments have been described in detail, it should be understood that the description is for illustrative purposes only and that modifications and alterations are possible within the scope of the present disclosure. For example, it should be understood that any of the elements or aspects of the embodiments and aspects can be combined in any manner possible.

Claims

1. A method for storing multi-threaded log data, comprising: receiving, with at least one processor, multi-threaded log data, the multi-threaded log data comprising a plurality of logs, a plurality of tags, and a plurality of thread identifiers, each respective log of the plurality of logs being associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers, each respective tag indicating the respective log is in a respective category of a plurality of categories, the plurality of categories comprising a first category, a second category, and a third category, each respective thread identifier indicating the respective log is associated with a respective thread of a plurality of threads; for each respective log of the plurality of logs: setting, with at least one processor, the respective thread identifier of the respective log as a most recently used item in a thread reference cache; determining, with at least one processor, a respective log cache of a plurality of log caches in a map data structure based on the respective thread identifier of the respective log, wherein a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; adding, with at least one processor, the respective log to the respective log cache in the map data structure; determining, with at least one processor, whether to transfer at least one of the respective log or the respective log cache to a first repository based on the respective tag of the respective log, wherein the determining whether to transfer at least one of the respective log or the respective log cache comprises: when the respective tag indicates the respective log is in the first category, determining to transfer the respective log cache to the first repository; when the respective tag indicates the respective log is in the second category, determining to transfer the respective log to the first repository; or when the respective log is in the third category, determining not to transfer the respective log or the respective log cache to the first repository; transferring, with at least one processor, the respective log to a second repository, wherein the first repository comprises a high-speed repository and the second repository comprises a low-speed repository; determining, with at least one processor, whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit; and determining, with at least one processor, whether to remove a least recently used log cache from the map data structure based on at least one map data structure size limit, wherein the least recently used log cache is associated with a least recently used item in the thread reference cache.

2. The method of claim 1, wherein, the first repository comprises a cloud repository, and wherein the second repository comprises an on-premise repository separate from the cloud repository.

3. The method of claim 1, wherein, the first repository comprises a cache, and wherein the second repository comprises a persistent storage database.

4. The method of claim 1, wherein, the second repository comprises a remote cache.

5. The method of claim 1, wherein, Receiving the multi-threaded log data includes receiving the multi-threaded log data from a plurality of data generators, each respective thread identifier being associated with a respective thread from a respective data generator of the plurality of data generators.

6. The method of claim 5, wherein, For each respective log of the plurality of logs, a respective data generator of the plurality of data generators sets the respective flag based on a respective category of the respective log.

7. The method of claim 1, wherein, Determining whether to remove the oldest log from the respective log cache based on at least one of the log cache size limit or the time limit includes: determining that the oldest log from the respective log cache is older than the time limit; determining that a number of logs of the respective log cache is greater than the log cache size limit; and determining to remove the oldest log based on the oldest log being older than the time limit and the number of logs being greater than the log cache size limit.

8. The method of claim 1, wherein, The at least one map data structure size limit includes a map data structure size lower limit and a map data structure size upper limit, and wherein determining whether to remove the least recently used log cache from the map data structure based on the at least one map data structure size limit includes: determining that a number of log caches of the map data structure is greater than the map data structure size upper limit; and determining to remove the least recently used log cache and each next least recently used log cache until the number of log caches of the map data structure is less than or equal to the map data structure size lower limit.

9. The method of claim 1, wherein, The first array is initially named a buffer array, and wherein the second array is initially named a transfer array, and wherein receiving the multi-threaded log data includes: receiving a first portion of the multi-threaded log data in a first array named the buffer array for a first buffer time period; after the first buffer time period, renaming the first array to the transfer array and renaming the second array to the buffer array; and receiving a second portion of the multi-threaded log data in a second array named the buffer array for a second buffer time period after the first buffer time period.

10. A system for storing multi-threaded log data, the system comprising: a first repository comprising at least one first processor; a second repository comprising at least one second processor; and a multi-threaded log system, the multi-threaded log system comprising a thread reference cache, a map data structure comprising a plurality of log caches, and at least one third processor configured to: receiving multi-threaded log data, the multi-threaded log data comprising a plurality of logs, a plurality of tags, and a plurality of thread identifiers, each respective log of the plurality of logs being associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers, each respective tag indicating that the respective log is in a respective category of a plurality of categories, the plurality of categories comprising a first category, a second category, and a third category, each respective thread identifier indicating that the respective log is associated with a respective thread of a plurality of threads; for each respective log of the plurality of logs: setting the respective thread identifier of the respective log as a most recently used item in the thread reference cache; determining, based on the respective thread identifier of the respective log, a respective log cache of the plurality of log caches in the map data structure, wherein a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; adding the respective log to the respective log cache in the map data structure; determining, based on the respective tag of the respective log, whether to transfer at least one of the respective log or the respective log cache to the first repository, wherein when determining whether to transfer at least one of the respective log or the respective log cache, the at least one third processor is configured to: when the respective tag indicates that the respective log is in the first category, then determine to transfer the respective log cache to the first repository; when the respective tag indicates that the respective log is in the second category, then determine to transfer the respective log to the first repository; or when the respective log is in the third category, then determine not to transfer the respective log or the respective log cache to the first repository; transferring the respective log to a second repository, wherein the first repository comprises a high-speed repository and the second repository comprises a low-speed repository; determining whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit; and determining whether to remove a least recently used log cache from the map data structure based on at least one map data structure size limit, wherein the least recently used log cache is associated with a least recently used item in the thread reference cache.

11. The system of claim 10, wherein, the first repository comprises a cloud repository, and wherein the second repository comprises an internal repository separate from the cloud repository.

12. The system of claim 10, wherein, the second repository comprises a remote cache.

13. The system of claim 10, further comprising a plurality of data generators, wherein, when receiving the multi-threaded log data, the at least one third processor is configured to receive the multi-threaded log data from the plurality of data generators, each respective thread identifier being associated with a respective thread from a respective data generator of the plurality of data generators, and wherein, for each respective log of the plurality of logs, a respective data generator of the plurality of data generators is configured to set the respective flag based on a respective category of the respective log.

14. The system of claim 10, wherein, determine whether to remove the oldest log from the respective log cache based on at least one of the log cache size limit or the time limit, the at least one third processor is configured to: determine that the oldest log from the respective log cache is older than the time limit; determine that the number of logs of the respective log cache is greater than the log cache size limit; and determine to remove the oldest log based on the oldest log being older than the time limit and the number of logs being greater than the log cache size limit, wherein the at least one map data structure size limit comprises a map data structure size lower limit and a map data structure size upper limit, and wherein, when determining whether to remove the least recently used log cache from the map data structure based on the at least one map data structure size limit, the at least one third processor is configured to: determine that the number of log caches of the map data structure is greater than the map data structure size upper limit; and determine to remove the least recently used log cache and each next least recently used log cache until the number of log caches of the map data structure is less than or equal to the map data structure size lower limit.

15. The system of claim 10, further comprising: a first array initially named a buffer array; and a second array initially named a transfer array, wherein, when receiving the multi-threaded log data, the at least one third processor is configured to: receive a first portion of the multi-threaded log data in a first buffer time period in a first array named the buffer array; after the first buffer time period, rename the first array to the transfer array and rename the second array to the buffer array; and receive a second portion of the multi-threaded log data in a second buffer time period after the first buffer time period in a second array named the buffer array.

16. A computer program product for storing multi-threaded log data, the computer program product comprising at least one non-transitory computer-readable medium including one or more instructions, which, when executed by at least one processor, cause the at least one processor to: receiving multi-threaded log data, the multi-threaded log data comprising a plurality of logs, a plurality of tags, and a plurality of thread identifiers, each respective log of the plurality of logs being associated with a respective tag of the plurality of tags and a respective thread identifier of the plurality of thread identifiers, each respective tag indicating that the respective log is in a respective category of a plurality of categories, the plurality of categories comprising a first category, a second category, and a third category, each respective thread identifier indicating that the respective log is associated with a respective thread of a plurality of threads; for each respective log of the plurality of logs: setting the respective thread identifier of the respective log as a most recently used item in a thread reference cache; determining, based on the respective thread identifier of the respective log, a respective log cache of a plurality of log caches in a map data structure, wherein, a respective key for the map data structure is based on the respective thread identifier, and wherein the respective log cache is a respective value associated with the respective key; adding the respective log to the respective log cache in the map data structure; determining, based on the respective tag of the respective log, whether to transmit at least one of the respective log or the respective log cache to a first repository, wherein when determining whether to transmit at least one of the respective log or the respective log cache, the at least one third processor is configured to: when the respective tag indicates that the respective log is in the first category, then determining to transmit the respective log cache to the first repository; when the respective tag indicates that the respective log is in the second category, then determining to transmit the respective log to the first repository; or when the respective log is in the third category, then determining not to transmit at least one of the respective log or the respective log cache to the first repository; transmitting the respective log to a second repository, wherein the first repository comprises a high-speed repository and the second repository comprises a low-speed repository; determining whether to remove an oldest log from the respective log cache based on at least one of a log cache size limit or a time limit; and determining whether to remove a least recently used log cache from the map data structure based on at least one map data structure size limit, wherein the least recently used log cache is associated with a least recently used item in the thread reference cache.

Citation Information

Patent Citations

  • Systems and methods for efficient sequential logging on caching-enabled storage devices

    CN103140839A

  • Log data storage method and device, client and server

    CN109165193A