Uploaded image for project: 'mod-kb-ebsco-java'
  1. mod-kb-ebsco-java
  2. MODKBEKBJ-387

loadHoldings fails (if there is only 1 transaction established) when loading deltas



    • Template:
    • Development Team:


      This issue can be observed when the transaction based loadHoldings is executed for a tenant for the first time. First (full request) is successful, subsequent request for deltas fail

      Steps to reproduce:

      • Confirm that you are using a customer id that does not yet have transactions loaded for this customer (in HoldingsIQ) – apie2esch2 currently does not
      • For example – Issuing a GET https://api.ebsco.io/rm/rmaccounts/apie2esch2/reports/holdings/transactions should return 0 transactions (HoldingsIQ)
      • confirm or configure application.properties for mod-kb-ebsco-java - holdings.load.implementation.qualifier= TransactionLoadServiceFacade
      • also change application.properties setting holdings.snapshot.refresh.period=86400000 to small value-- currently set at 24 hours – I set value to 60 to allow mulriple loads in a short time frame
      • Issue a POST <okapi>/loadHoldings to start the load holdings process in FOLIO (for this customer)
      • Observe first loadHoldings should be successful
      • Make some changes to a few resources for this customer (add/remove resource from holdings)
      • Issue a second POST <okapi>/loadHoldings to start the load holdings process in FOLIO (for this customer) to obtain only the delta records
      • Observe message in the log file about skipping loading of a snapshot
        Skipping loading snapshot, because transaction with id XXXXX is already loaded
      • This second request should loadHoldings successfully and it does not
      • The followin logic does not work properly if there is only 1 transaction created-- https://github.com/folio-org/mod-kb-ebsco-java/blob/5a265f7950b61ecb27b7aa974921c12cb7d1d406/src/main/java/org/folio/service/holdings/HoldingsServiceImpl.java#L191
      • I manually made the following requests in HoldingsIQ to create a second transaction for the customer I was testing with apie2esch1

      POST https://api.ebsco.io/rm/rmaccounts/apie2esch1/reports/holdings?format=kbart2
      Got a second transaction id = XXXXXXX2
      POST https://api.ebsco.io/rm/rmaccounts/apie2esch1/reports/holdings/deltas

      { "currentSnapshotId": "XXXXXX2", "previousSnapshotId": "XXXXXXX1" }

      GET /



      After the second transaction was created, my POST <okapi>/loadHoldings was successful

        TestRail: Results


            Issue Links



                Unassigned Unassigned
                cgodfrey Carole Godfrey
                0 Vote for this issue
                2 Start watching this issue



                    TestRail: Runs

                      TestRail: Cases