Skip to content

Conversation

@RajatGupta02
Copy link
Contributor

@RajatGupta02 RajatGupta02 commented Aug 4, 2025

Description

Adds transaction log (translog) encryption using AES-GCM with 8KB chunks.

Related Issues

Resolves

Check List

  • New functionality includes testing.
  • New functionality has been documented.
  • API changes companion pull request created.
  • Commits are signed per the DCO using --signoff.
  • Public documentation issue/PR created.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Signed-off-by: Rajat Gupta <[email protected]>
@RajatGupta02
Copy link
Contributor Author

OSB:

   ____                  _____                      __       ____                  __                         __
  / __ \____  ___  ____ / ___/___  ____ ___________/ /_     / __ )___  ____  _____/ /_  ____ ___  ____ ______/ /__
 / / / / __ \/ _ \/ __ \\__ \/ _ \/ __ `/ ___/ ___/ __ \   / __  / _ \/ __ \/ ___/ __ \/ __ `__ \/ __ `/ ___/ //_/
/ /_/ / /_/ /  __/ / / /__/ /  __/ /_/ / /  / /__/ / / /  / /_/ /  __/ / / / /__/ / / / / / / / / /_/ / /  / ,<
\____/ .___/\___/_/ /_/____/\___/\__,_/_/   \___/_/ /_/  /_____/\___/_/ /_/\___/_/ /_/_/ /_/ /_/\__,_/_/  /_/|_|
    /_/

[INFO] [Test Execution ID]: 62df2d1a-e8cc-407a-ada2-6908578aac11
[INFO] Executing test with workload [http_logs], test_procedure [append-no-conflicts] and provision_config_instance ['external'] with version [3.1.0-SNAPSHOT].

Running delete-index                                                           [100% done]
Running create-index                                                           [100% done]
Running check-cluster-health                                                   [100% done]
Running index-append                                                           [100% done]

------------------------------------------------------
    _______             __   _____
   / ____(_)___  ____ _/ /  / ___/_________  ________
  / /_  / / __ \/ __ `/ /   \__ \/ ___/ __ \/ ___/ _ \
 / __/ / / / / / /_/ / /   ___/ / /__/ /_/ / /  /  __/
/_/   /_/_/ /_/\__,_/_/   /____/\___/\____/_/   \___/
------------------------------------------------------

|                                                         Metric |         Task |      Value |   Unit |
|---------------------------------------------------------------:|-------------:|-----------:|-------:|
|                     Cumulative indexing time of primary shards |              |    90.6941 |    min |
|             Min cumulative indexing time across primary shards |              |          0 |    min |
|          Median cumulative indexing time across primary shards |              |   0.832217 |    min |
|             Max cumulative indexing time across primary shards |              |    13.3068 |    min |
|            Cumulative indexing throttle time of primary shards |              |          0 |    min |
|    Min cumulative indexing throttle time across primary shards |              |          0 |    min |
| Median cumulative indexing throttle time across primary shards |              |          0 |    min |
|    Max cumulative indexing throttle time across primary shards |              |          0 |    min |
|                        Cumulative merge time of primary shards |              |    56.9138 |    min |
|                       Cumulative merge count of primary shards |              |        366 |        |
|                Min cumulative merge time across primary shards |              |          0 |    min |
|             Median cumulative merge time across primary shards |              |   0.159675 |    min |
|                Max cumulative merge time across primary shards |              |    11.2751 |    min |
|               Cumulative merge throttle time of primary shards |              |    34.9319 |    min |
|       Min cumulative merge throttle time across primary shards |              |          0 |    min |
|    Median cumulative merge throttle time across primary shards |              |  0.0684667 |    min |
|       Max cumulative merge throttle time across primary shards |              |    7.42787 |    min |
|                      Cumulative refresh time of primary shards |              |    6.23562 |    min |
|                     Cumulative refresh count of primary shards |              |        698 |        |
|              Min cumulative refresh time across primary shards |              |          0 |    min |
|           Median cumulative refresh time across primary shards |              |    0.04855 |    min |
|              Max cumulative refresh time across primary shards |              |    1.18855 |    min |
|                        Cumulative flush time of primary shards |              |    12.4516 |    min |
|                       Cumulative flush count of primary shards |              |        110 |        |
|                Min cumulative flush time across primary shards |              |          0 |    min |
|             Median cumulative flush time across primary shards |              | 0.00915833 |    min |
|                Max cumulative flush time across primary shards |              |    2.74023 |    min |
|                                        Total Young Gen GC time |              |     11.307 |      s |
|                                       Total Young Gen GC count |              |       1529 |        |
|                                          Total Old Gen GC time |              |          0 |      s |
|                                         Total Old Gen GC count |              |          0 |        |
|                                                     Store size |              |    19.3875 |     GB |
|                                                  Translog size |              |   0.851454 |     GB |
|                                         Heap used for segments |              |          0 |     MB |
|                                       Heap used for doc values |              |          0 |     MB |
|                                            Heap used for terms |              |          0 |     MB |
|                                            Heap used for norms |              |          0 |     MB |
|                                           Heap used for points |              |          0 |     MB |
|                                    Heap used for stored fields |              |          0 |     MB |
|                                                  Segment count |              |        363 |        |
|                                                 Min Throughput | index-append |     310791 | docs/s |
|                                                Mean Throughput | index-append |     351236 | docs/s |
|                                              Median Throughput | index-append |     342389 | docs/s |
|                                                 Max Throughput | index-append |     423096 | docs/s |
|                                        50th percentile latency | index-append |    91.4905 |     ms |
|                                        90th percentile latency | index-append |    207.304 |     ms |
|                                        99th percentile latency | index-append |    439.635 |     ms |
|                                      99.9th percentile latency | index-append |    673.783 |     ms |
|                                     99.99th percentile latency | index-append |    840.751 |     ms |
|                                       100th percentile latency | index-append |    1033.87 |     ms |
|                                   50th percentile service time | index-append |    91.4905 |     ms |
|                                   90th percentile service time | index-append |    207.304 |     ms |
|                                   99th percentile service time | index-append |    439.635 |     ms |
|                                 99.9th percentile service time | index-append |    673.783 |     ms |
|                                99.99th percentile service time | index-append |    840.751 |     ms |
|                                  100th percentile service time | index-append |    1033.87 |     ms |
|                                                     error rate | index-append |          0 |      % |


---------------------------------
[INFO] SUCCESS (took 836 seconds)
---------------------------------

@kumargu
Copy link
Collaborator

kumargu commented Aug 4, 2025

I will take a look at the PR but do you know why the throughout dropped and latency increased?

@kumargu
Copy link
Collaborator

kumargu commented Aug 4, 2025

is it solely coming from the Translog operation? can we isolate it by disabling and enabling it?

@RajatGupta02
Copy link
Contributor Author

I will take a look at the PR but do you know why the throughout dropped and latency increased?

Not sure but on my cluster in main branch (without translog encryption) the throughput was lesser:

   ____                  _____                      __       ____                  __                         __
  / __ \____  ___  ____ / ___/___  ____ ___________/ /_     / __ )___  ____  _____/ /_  ____ ___  ____ ______/ /__
 / / / / __ \/ _ \/ __ \\__ \/ _ \/ __ `/ ___/ ___/ __ \   / __  / _ \/ __ \/ ___/ __ \/ __ `__ \/ __ `/ ___/ //_/
/ /_/ / /_/ /  __/ / / /__/ /  __/ /_/ / /  / /__/ / / /  / /_/ /  __/ / / / /__/ / / / / / / / / /_/ / /  / ,<
\____/ .___/\___/_/ /_/____/\___/\__,_/_/   \___/_/ /_/  /_____/\___/_/ /_/\___/_/ /_/_/ /_/ /_/\__,_/_/  /_/|_|
    /_/

[INFO] [Test Execution ID]: b9cc6edd-c97f-4ca9-bae4-663bcc995793
[INFO] Executing test with workload [http_logs], test_procedure [append-no-conflicts] and provision_config_instance ['external'] with version [3.1.0-SNAPSHOT].

Running delete-index                                                           [100% done]
Running create-index                                                           [100% done]
Running check-cluster-health                                                   [100% done]
Running index-append                                                           [100% done]

------------------------------------------------------
    _______             __   _____
   / ____(_)___  ____ _/ /  / ___/_________  ________
  / /_  / / __ \/ __ `/ /   \__ \/ ___/ __ \/ ___/ _ \
 / __/ / / / / / /_/ / /   ___/ / /__/ /_/ / /  /  __/
/_/   /_/_/ /_/\__,_/_/   /____/\___/\____/_/   \___/
------------------------------------------------------

|                                                         Metric |         Task |      Value |   Unit |
|---------------------------------------------------------------:|-------------:|-----------:|-------:|
|                     Cumulative indexing time of primary shards |              |    89.8183 |    min |
|             Min cumulative indexing time across primary shards |              |          0 |    min |
|          Median cumulative indexing time across primary shards |              |   0.793783 |    min |
|             Max cumulative indexing time across primary shards |              |    13.2682 |    min |
|            Cumulative indexing throttle time of primary shards |              |          0 |    min |
|    Min cumulative indexing throttle time across primary shards |              |          0 |    min |
| Median cumulative indexing throttle time across primary shards |              |          0 |    min |
|    Max cumulative indexing throttle time across primary shards |              |          0 |    min |
|                        Cumulative merge time of primary shards |              |    55.5683 |    min |
|                       Cumulative merge count of primary shards |              |        353 |        |
|                Min cumulative merge time across primary shards |              |          0 |    min |
|             Median cumulative merge time across primary shards |              |   0.164208 |    min |
|                Max cumulative merge time across primary shards |              |    11.0191 |    min |
|               Cumulative merge throttle time of primary shards |              |    33.5325 |    min |
|       Min cumulative merge throttle time across primary shards |              |          0 |    min |
|    Median cumulative merge throttle time across primary shards |              |   0.075375 |    min |
|       Max cumulative merge throttle time across primary shards |              |    7.01237 |    min |
|                      Cumulative refresh time of primary shards |              |    5.56612 |    min |
|                     Cumulative refresh count of primary shards |              |        658 |        |
|              Min cumulative refresh time across primary shards |              |          0 |    min |
|           Median cumulative refresh time across primary shards |              |  0.0472333 |    min |
|              Max cumulative refresh time across primary shards |              |    1.00503 |    min |
|                        Cumulative flush time of primary shards |              |    10.7243 |    min |
|                       Cumulative flush count of primary shards |              |        110 |        |
|                Min cumulative flush time across primary shards |              |          0 |    min |
|             Median cumulative flush time across primary shards |              | 0.00650833 |    min |
|                Max cumulative flush time across primary shards |              |    2.06405 |    min |
|                                        Total Young Gen GC time |              |     11.469 |      s |
|                                       Total Young Gen GC count |              |       1476 |        |
|                                          Total Old Gen GC time |              |          0 |      s |
|                                         Total Old Gen GC count |              |          0 |        |
|                                                     Store size |              |    20.1427 |     GB |
|                                                  Translog size |              |    1.58456 |     GB |
|                                         Heap used for segments |              |          0 |     MB |
|                                       Heap used for doc values |              |          0 |     MB |
|                                            Heap used for terms |              |          0 |     MB |
|                                            Heap used for norms |              |          0 |     MB |
|                                           Heap used for points |              |          0 |     MB |
|                                    Heap used for stored fields |              |          0 |     MB |
|                                                  Segment count |              |        364 |        |
|                                                 Min Throughput | index-append |     314034 | docs/s |
|                                                Mean Throughput | index-append |     345564 | docs/s |
|                                              Median Throughput | index-append |     341424 | docs/s |
|                                                 Max Throughput | index-append |     396002 | docs/s |
|                                        50th percentile latency | index-append |    90.0694 |     ms |
|                                        90th percentile latency | index-append |    207.734 |     ms |
|                                        99th percentile latency | index-append |    438.242 |     ms |
|                                      99.9th percentile latency | index-append |    652.081 |     ms |
|                                     99.99th percentile latency | index-append |    848.135 |     ms |
|                                       100th percentile latency | index-append |    1045.64 |     ms |
|                                   50th percentile service time | index-append |    90.0694 |     ms |
|                                   90th percentile service time | index-append |    207.734 |     ms |
|                                   99th percentile service time | index-append |    438.242 |     ms |
|                                 99.9th percentile service time | index-append |    652.081 |     ms |
|                                99.99th percentile service time | index-append |    848.135 |     ms |
|                                  100th percentile service time | index-append |    1045.64 |     ms |
|                                                     error rate | index-append |          0 |      % |


---------------------------------
[INFO] SUCCESS (took 831 seconds)
---------------------------------

private static ChannelFactory createCryptoChannelFactory(KeyIvResolver keyIvResolver, String translogUUID) throws IOException {
try {
CryptoChannelFactory channelFactory = new CryptoChannelFactory(keyIvResolver, translogUUID);
LogManager.getLogger(CryptoTranslog.class).debug("CryptoChannelFactory initialized for translog: {}", translogUUID);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can use logger defined above?

Comment on lines 112 to 114
public KeyIvResolver getKeyIvResolver() {
return keyIvResolver;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Who calls this method?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here, forgot to clean this.

Comment on lines 558 to 560
public FileChannel getDelegate() {
return delegate;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

who is calling this method?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

forgot to clean this.

ChunkInfo chunkInfo = getChunkInfo(position);

// Read-modify-write chunk pattern
byte[] existingChunk = readAndDecryptChunk(chunkInfo.chunkIndex);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we are decrypting entire file everytime and re-encrypting it along with new incoming diff. This may increase overall time. do we know rough idea, how frequently we write to this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not understand, we are encrypting and decrypting in 8kb chunks, not the whole file.

Copy link
Collaborator

@udabhas udabhas Aug 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ohh okay, we are decrypting only last chunk

Signed-off-by: Rajat Gupta <[email protected]>
Copy link
Collaborator

@udabhas udabhas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!


// Create new engine config by copying all fields from existing config
// but replace the translog factory with our crypto version
EngineConfig cryptoConfig = new EngineConfig.Builder()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we just not override (the builder should allow) the cryptoTranslogFactory to an existing config rather than copying over all these configs?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That was the issue, EngineConfig.java doesn't have any copy constructor :/

*
* @opensearch.internal
*/
public class CryptoFileChannelWrapper extends FileChannel {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sounds very very weird to extend the FileChannel. Did we do the same in actual Translog Impl?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the Translog impl, it was just returning FileChannel::open so it did not need to wrap the file channel

* @throws IOException if there is an error setting up the channel
*/
public CryptoFileChannelWrapper(
FileChannel delegate,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see this is the weird part, we extend a FileChannel and then use it a constructor args.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are just using it as a wrapper, when we pass this FileChannel as the delegate field arg we are forwarding actual I/O operations to this delegate

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

return 0;
}

positionLock.writeLock().lock();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need a writeLock in read?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 280:
            if (position == this.position.get()) {
                this.position.addAndGet(dst.remaining());
            }

this was modifying the position, but yes for stateful reads I should use writeLock and for positional reads readLock, will update this.

Signed-off-by: Rajat Gupta <[email protected]>
buildscript {
ext {
opensearch_version = System.getProperty("opensearch.version", "3.1.0-SNAPSHOT")
opensearch_version = System.getProperty("opensearch.version", "3.2.0-SNAPSHOT")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you sync with the latest changes on the main branch? Not sure why this is showing here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, we were using 3.1.0 snapshot earlier, but for translog once the core changes are merged we will have to use 3.2.0 here.

Rajat Gupta added 2 commits August 11, 2025 14:06
Signed-off-by: Rajat Gupta <[email protected]>

// TranslogHeader constants replicated to avoid cross-classloader access
private static final String TRANSLOG_CODEC = "translog";
private static final int VERSION_PRIMARY_TERM = 3;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how do we derive this value?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we use (i.e import) the constants as it is in the core? a change in there will also reflect at our side, otherwise we will corrupt the data.

Signed-off-by: Rajat Gupta <[email protected]>
Comment on lines +49 to +50
EngineConfig cryptoConfig = config
.toBuilder()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

super!

}

@Override
public MappedByteBuffer map(MapMode mode, long position, long size) throws IOException {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

core supports Mmap?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We added it here just so that in future if map is used it clearly throws an exception.

@kumargu kumargu merged commit 352ac8a into opensearch-project:main Aug 28, 2025
1 check passed
@RajatGupta02
Copy link
Contributor Author

On c5.12xLarge instance

   ____                  _____                      __       ____                  __                         __
  / __ \____  ___  ____ / ___/___  ____ ___________/ /_     / __ )___  ____  _____/ /_  ____ ___  ____ ______/ /__
 / / / / __ \/ _ \/ __ \\__ \/ _ \/ __ `/ ___/ ___/ __ \   / __  / _ \/ __ \/ ___/ __ \/ __ `__ \/ __ `/ ___/ //_/
/ /_/ / /_/ /  __/ / / /__/ /  __/ /_/ / /  / /__/ / / /  / /_/ /  __/ / / / /__/ / / / / / / / / /_/ / /  / ,<
\____/ .___/\___/_/ /_/____/\___/\__,_/_/   \___/_/ /_/  /_____/\___/_/ /_/\___/_/ /_/_/ /_/ /_/\__,_/_/  /_/|_|
    /_/

[INFO] [Test Execution ID]: 00286d83-ba64-4f72-b933-1a1630b3b426
[INFO] Executing test with workload [http_logs], test_procedure [append-no-conflicts] and provision_config_instance ['external'] with version [3.3.0-SNAPSHOT].

Running delete-index                                                           [100% done]
Running create-index                                                           [100% done]
Running check-cluster-health                                                   [100% done]
Running index-append                                                           [100% done]

------------------------------------------------------
    _______             __   _____
   / ____(_)___  ____ _/ /  / ___/_________  ________
  / /_  / / __ \/ __ `/ /   \__ \/ ___/ __ \/ ___/ _ \
 / __/ / / / / / /_/ / /   ___/ / /__/ /_/ / /  /  __/
/_/   /_/_/ /_/\__,_/_/   /____/\___/\____/_/   \___/
------------------------------------------------------

|                                                         Metric |         Task |      Value |   Unit |
|---------------------------------------------------------------:|-------------:|-----------:|-------:|
|                     Cumulative indexing time of primary shards |              |    92.4556 |    min |
|             Min cumulative indexing time across primary shards |              |          0 |    min |
|          Median cumulative indexing time across primary shards |              |   0.816375 |    min |
|             Max cumulative indexing time across primary shards |              |    13.8116 |    min |
|            Cumulative indexing throttle time of primary shards |              |          0 |    min |
|    Min cumulative indexing throttle time across primary shards |              |          0 |    min |
| Median cumulative indexing throttle time across primary shards |              |          0 |    min |
|    Max cumulative indexing throttle time across primary shards |              |          0 |    min |
|                        Cumulative merge time of primary shards |              |    51.1364 |    min |
|                       Cumulative merge count of primary shards |              |        367 |        |
|                Min cumulative merge time across primary shards |              |          0 |    min |
|             Median cumulative merge time across primary shards |              |    0.16525 |    min |
|                Max cumulative merge time across primary shards |              |    11.5136 |    min |
|               Cumulative merge throttle time of primary shards |              |    31.7153 |    min |
|       Min cumulative merge throttle time across primary shards |              |          0 |    min |
|    Median cumulative merge throttle time across primary shards |              |  0.0618417 |    min |
|       Max cumulative merge throttle time across primary shards |              |    7.84568 |    min |
|                      Cumulative refresh time of primary shards |              |    5.77467 |    min |
|                     Cumulative refresh count of primary shards |              |        645 |        |
|              Min cumulative refresh time across primary shards |              |          0 |    min |
|           Median cumulative refresh time across primary shards |              |   0.042125 |    min |
|              Max cumulative refresh time across primary shards |              |    1.15592 |    min |
|                        Cumulative flush time of primary shards |              |    10.2951 |    min |
|                       Cumulative flush count of primary shards |              |        110 |        |
|                Min cumulative flush time across primary shards |              |          0 |    min |
|             Median cumulative flush time across primary shards |              | 0.00853333 |    min |
|                Max cumulative flush time across primary shards |              |    2.22543 |    min |
|                                        Total Young Gen GC time |              |     10.453 |      s |
|                                       Total Young Gen GC count |              |       1576 |        |
|                                          Total Old Gen GC time |              |          0 |      s |
|                                         Total Old Gen GC count |              |          0 |        |
|                                                     Store size |              |     20.181 |     GB |
|                                                  Translog size |              |    0.89674 |     GB |
|                                         Heap used for segments |              |          0 |     MB |
|                                       Heap used for doc values |              |          0 |     MB |
|                                            Heap used for terms |              |          0 |     MB |
|                                            Heap used for norms |              |          0 |     MB |
|                                           Heap used for points |              |          0 |     MB |
|                                    Heap used for stored fields |              |          0 |     MB |
|                                                  Segment count |              |        382 |        |
|                                                 Min Throughput | index-append |     336298 | docs/s |
|                                                Mean Throughput | index-append |     373312 | docs/s |
|                                              Median Throughput | index-append |     364584 | docs/s |
|                                                 Max Throughput | index-append |     439061 | docs/s |
|                                        50th percentile latency | index-append |    62.7845 |     ms |
|                                        90th percentile latency | index-append |     279.89 |     ms |
|                                        99th percentile latency | index-append |     572.23 |     ms |
|                                      99.9th percentile latency | index-append |    837.665 |     ms |
|                                     99.99th percentile latency | index-append |    1013.91 |     ms |
|                                       100th percentile latency | index-append |    1036.72 |     ms |
|                                   50th percentile service time | index-append |    62.7845 |     ms |
|                                   90th percentile service time | index-append |     279.89 |     ms |
|                                   99th percentile service time | index-append |     572.23 |     ms |
|                                 99.9th percentile service time | index-append |    837.665 |     ms |
|                                99.99th percentile service time | index-append |    1013.91 |     ms |
|                                  100th percentile service time | index-append |    1036.72 |     ms |
|                                                     error rate | index-append |          0 |      % |


---------------------------------
[INFO] SUCCESS (took 776 seconds)

@kumargu
Copy link
Collaborator

kumargu commented Aug 28, 2025

Perfect. we should consider this is our baseline.

udabhas pushed a commit to udabhas/opensearch-storage-encryption that referenced this pull request Oct 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants