[Sunflower] Fiscal year rollover testing

[Sunflower] Fiscal year rollover testing

Test status: completed

Overview

  • This document includes testing of Fiscal Year Rollover (FYR) in sunflower release. 

    • The testing triggered from UI for the ledger with generated amount of defined data set (Data quantity**: 50000 orders with Open status and 50000 orders with Pending status).

  • Testing include two different phases of the fiscal year transition process:

    • #1 phase: Test Fiscal Year Rollover - is a risk free simulation pre-step to #2 phase which includes only Finance part of the data (to preview how the rollover settings will affect funds, budgets, and encumbrances).

    • #2 phase: Fiscal Year Rollover - perform a permanent changes. It is the actual process which move financial data, budgets, and encumbrances into the new fiscal year. It includes not only Finance but Orders parts of the data too.

  • The purpose of testing is to define duration of those two phases, to do comparison between current and previous results of each phase, to find any trends for resource utilization. To recommend improvements how to make it work better if any confirmed.

    • Previous successful testing for #2 phase took 3 hours and 30 minutes

  • Jiras/ links:

Summary

  • Running FYR completed successfully.

  • Eureka based environment (with CSP 6 v13.0.10 - https://folio-org.atlassian.net/browse/MODORDERS-1388 ): 

    • #1 Phase Test FYR took 1 hours 18 minutes, completed successfully.

    • #2 Phase actual FYR took 2 hours 15 minutes, completed successfully. During this phase budgetsClosingRollover and finanacialRollover successed in 2 hours and 7 minutes and ordersRollover took 8 minutes.

  • Service CPU utilization for both phases was under 8% on eureka environment except a spike at ordersRollover stage of test rollover (mod-orders-storage - 51%, mod-finance-storage 39%).

  • DB CPU usage was on level of 34% (db.r7g.xlarge) during both phases of FYR. Previously on quesnelia release xlarge db used 39%.

  • No memory leaks were found.

  • FYR retesting with default memory for mod-finance, mod-finance-storage completed successfully with the same phases durations.

Recommendations & Jiras

  • To solve UI issues on budget and transaction tabs memory allocated to:

    • mod-finance and mod-finance-storage: "memory": 2048, "memoryReservation": 1740, -Xmx1536m

    • sidecar-mod-finance, mod-finance-storage: "memoryReservation": 870, -Xmx768m

Errors

  • "POST /finance-storage/ledger-rollovers HTTP_1_1" 504 0 rt=400.006 uct="" This error happen when FYR triggered from UI and doesn’t affect FYR itself. To get status for the processes use Logs tab.

  • finance/budget/{budget_UUID}/view 2026-03-17 14:45:15,365 ERROR [io.ver.cor.net.imp.ConnectionBase] (vert.x-eventloop-thread-0) Connection reset {
    "errors" : [ {
    "message" : "Failed to proxy request: response timeout",
    "type" : "InternalServerErrorException",
    "code" : "service_error",
    "parameters" : [ {
    "key" : "cause",
    "value" : "Connection reset"
    } ]
    } ],
    "total_records" : 1
    }

Test Runs and Results

Data size: 100K orders (50K orders in open status, 50K - pending), 200K order lines, 400K transactions. 

Test #

Scenario

Load level

Fiscal year rollover duration Orchid*

Fiscal year rollover duration

Poppy*

FYR duration

Quesnelia (Eureka)

FYR duration

Quesnelia (non-Eureka)

FYR duration

Sunflower (Eureka)^^^

Comments

Test #

Scenario

Load level

Fiscal year rollover duration Orchid*

Fiscal year rollover duration

Poppy*

FYR duration

Quesnelia (Eureka)

FYR duration

Quesnelia (non-Eureka)

FYR duration

Sunflower (Eureka)^^^

Comments

1

Test Fiscal year rollover

1 rollover at a time

-

3.5 hours

3.5 hours

3 hours 20 minutes

1 hour 20 minutes

Completed

2

Fiscal year rollover

1 rollover at a time

6 days (failed with 504 error)

29 hours

8 hours, failed due to 500(server error)

9 hours 7 minutes

2 hours 15 minutes

Completed

*Results are taken from the previous test report. Details can be found at the link: [Orchid] Fiscal year rollover testing

*Results are taken from the previous test report. Details can be found at the link: [Poppy] Fiscal year rollover testing

*Results are taken from the previous test report. Details can be found at the link: https://folio-org.atlassian.net/wiki/x/EIBGIQ

**Data structure can be found at the link: Fiscal year rollover testing

*** Tests carried out with raised memory for mod-finance and mod-finance-storage to solve UI issues on Budget and Transactions tabs.

Instance CPU Utilization

This graph shows how instances utilize CPU during the tests.

2026-03-17_14h12_58-20260317-121258.png

 

Service CPU Utilization

Test FYR & FYR

Data transition process happen on database side and it explains low cpu utilization from services. Maximum CPU utilization by services during tests were not over 8% in all phases except of spikes on ordersRollover process mod-finance-storage - 39%, mod-orders-storage - 51%

image-20260317-133623.png

Memory Utilization

Test FYR & FYR

This graph shows memory usage during all phases of FYR. After tests completed no signs of memory growing trends for mod-finance-storage.

image-20260317-134258.png

Memory usage stayed on the same level after tests stopped.

image-20260317-135116.png

Database metrics

DB CPU Utilization

Test FYR & FYR

DB CPU usage during all phases: 34%. Except of spike to 78% at the last ordersRollover step.

image-20260317-130003.png

DB Connections

Test FYR & FYR

DB connections stay stable on 1300 level during all phases of FYR.

image-20260317-125532.png

 

DB Load

Test FYR & FYR

image-20260319-072054.png

Top SQL

Test FYR & FYR

image-20260319-072110.png

DB metrics (additional)

Transactions per second - under 5, spike at the last ordersRollover step - 19.

image-20260319-072451.png

CPU utilization

  • (08:15–11:55) Dominated by nice (~30%)

    • Instance is moderately loaded

    • Most CPU is from low-priority/background processes

  • Spike at ~12:00

    • ordersRollover process

image-20260319-073057.png

 

This graph show there’re no deadlocks

image-20260319-072224.png

 

 

Appendix

Infrastructure

PTF -environment SELCTLS2 - TLS

Folio

  • 13 r7i.2xlarge EC2 instances located in US East (N. Virginia)us-east-1

  • db.r7g.xlarge database instance, writer

  • MSK - ptf-loc-1

    • 6 kafka.m7g.large brokers in 2 zones (3 per zone)

    • Apache Kafka version 3.9.x

    • EBS storage volume per broker 300 GiB

    • auto.create.topics.enable=true

    • log.retention.minutes=480

    • default.replication.factor=2

  • Open Search ptf-loc:

    • Data node - r7g.2xlarge.search (4)

    • Master node - m7g.large.search (3)

  • DB instance parameter group

    fse-aurora-postgresql16-7k-db-connection - 7000 db connections instead of 5000 in default parameter group (the only difference).

 

Dataset

Finance data prepared in accordance to recommendation

  • oganizations - 1000

  • orders - 100000

  • polines - 200000

  • pieces - 400000

Other data

Table

cs00000int

cs00000int_0001

cs00000int_0002

cs00000int_0003

cs00000int_0004

Table

cs00000int

cs00000int_0001

cs00000int_0002

cs00000int_0003

cs00000int_0004

mod_entities_links.authority

12,105,793

950,424

817,539

814,519

811,797

mod_inventory_storage.holdings_record

301,597

7,454,426

7,495,171

449,228

7,900,986

mod_inventory_storage.instance

21,209,536

7,142,898

7,805,409

1,235,132

7,027,718

mod_inventory_storage.item

182

10,137,887

9,068,213

547,896

9,346,449

mod_source_record_storage.marc_records_lb

34,876,853

mod_source_record_storage.raw_records_lb

46,896,807

mod_source_record_storage.records_lb

46,896,807

Modules

Cluster Resources - selctls2-pvt (Tue Mar 17 14:16:05 UTC 2026)

Module

Task Definition Revision

Module Version

Task Count

Mem Hard Limit

Mem Soft Limit

CPU Units

Xmx

Metaspace Size

Max Metaspace Size

mod-licenses

13

mod-licenses:6.2.4

0

2480

2312

64

1792

384

512

mod-quick-marc

13

mod-quick-marc:7.0.0

1

2288

2176

64

1664

384

512

mod-data-export-spring

13

mod-data-export-spring:3.5.2

1

2048

1844

64

1536

384

512

edge-dematic

9

edge-dematic:2.4.3-SNAPSHOT.168.tls

1

1024

896

65

768

88

128

mod-data-import

15

mod-data-import:3.3.6

1

2048

1844

64

1292

384

512

mod-data-export

13

mod-data-export:5.3.0

1

2592

2480

64

1440

88

1024

mod-remote-storage

19

mod-remote-storage:3.4.3

2

4920

4472

1024

3960

512

512

mod-finance-storage

21

mod-finance-storage:8.8.7

2

2048

1740

128

1536

88

128

mod-mosaic

9

mod-mosaic:1.0.0

2

1024

896

64

768

88

128

mod-ebsconet

9

mod-ebsconet:2.4.0

2

1248

1024

64

700

128

256

edge-sip2

5

edge-sip2:3.4.2.tls

2

1024

896

64

768

88

128

mod-consortia-keycloak

15

mod-consortia-keycloak:1.7.3-SNAPSHOT.80.tls

2

5136

4776

512

4416

384

512

mod-tags

13

mod-tags:2.4.1

2

1024

896