4Science / DSpace

This repository contains the 4Science optimized DSpace & DSpace-CRIS distribution.
https://wiki.lyrasis.org/display/DSPACECRIS/
BSD 3-Clause "New" or "Revised" License
42 stars 61 forks source link

API call core/items/search/findAllById is throwing an error, when it contains too many id parameters #443

Open olli-gold opened 5 months ago

olli-gold commented 5 months ago

Describe the bug DSpace-CRIS uses the method findAllById (while generic DSpace does not do that). Unfortunately, if the page size in the search results is set too high and there are results with too many authors, it may happen, that it contains too many IDs at once. One example, where that happens, is https://tore.tuhh.de/search?query=wiedorn. The result list for this simple query does never return and there is only a never ending loading loop on the result page. The reason for this failing search is the API call for https://tore.tuhh.de/dspace-cris-server/api/core/items/search/findAllById

The query contains 195 id parameters and is throwing a 400 error.

To Reproduce Steps to reproduce the behavior: See bug description: https://tore.tuhh.de/search?query=wiedorn

Expected behavior I would expect, that the query should not fail. I realise, that this problem is not easily resolvable and certainly a little bit special, but maybe it's worth to consider changing the implementation of https://github.com/4Science/DSpace/blob/main-cris/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRestRepository.java#L410. To be honest, I do not have an exact idea about that, but I am almost certain, that it should be possible to improve that (for instance by asking core/items/search/findAllById for only single IDs in the result one after the other or by limiting the query to a fixed maximum number of UUIDs to be queried).

Related work None I am aware of.