Para Google App Engine (java), ¿cómo configuro y uso el tamaño de fragmento en FetchOptions?

Estoy ejecutando una consulta y actualmente devuelve 1400 resultados y, debido a esto, recibo la siguiente advertencia en el archivo de registro:

com.google.appengine.api.datastore.QueryResultsSourceImpl logChunkSizeWarning: esta consulta no tiene un tamaño de fragmento establecido en FetchOptions y ha devuelto más de 1000 resultados. Si los conjuntos de resultados de este tamaño son comunes para esta consulta, considere establecer un tamaño de fragmento para mejorar el rendimiento.

No puedo encontrar ningún ejemplo en ninguna parte sobre cómo implementar esto realmente, aquí hay una pregunta sobre Python, pero como estoy usando Java y no entiendo Python, estoy luchando por traducirlo.

También esta consulta (a continuación) está tardando 17226cpu_ms en ejecutarse, lo que parece demasiado tiempo, ni siquiera puedo imaginar qué pasaría si dijera 5000 contactos y necesitara buscarlos en el lado del cliente (como lo hace con los contactos de googlemail !)

El código que tengo es:

    int index=0;
    int numcontacts=0;
    String[][] DetailList;

    PersistenceManager pm = PMF.get().getPersistenceManager();


    try {
        Query query = pm.newQuery(Contact.class, "AdminID == AID");
        query.declareParameters("Long AID");
        query.setOrdering("Name asc");
        List<Contact> Contacts = (List<Contact>) query.execute(AdminID);
        numcontacts=Contacts.size();
        DetailList=new String[numcontacts][5];

        for (Contact contact : Contacts) 
        {
            DetailList[index][0]=contact.getID().toString();
            DetailList[index][1]=Encode.EncodeString(contact.getName());
            index++;
        }
    } finally {
        pm.close();
    }
    return (DetailList);

Encontré las siguientes dos entradas aquí:

google app engine chunkSize & prefetchSize: ¿dónde puedo leer los detalles al respecto? GAE / J API de bajo nivel: uso de FetchOptions

pero ninguno de los dos entra en detalles sobre cómo implementar o usar estas opciones. Supongo que es un proceso del lado del servidor, y supongo que estás destinado a configurar algún tipo de bucle para tomar los fragmentos un fragmento a la vez, pero ¿cómo hago eso realmente?

¿Llamo a la consulta dentro de un bucle? ¿Cómo sé cuántas veces hacer un bucle? ¿Acabo de verificar el primer fragmento que regresa con un número de entradas menor que el tamaño del fragmento?

¿Cómo se supone que voy a descubrir cosas como esta sin un ejemplo real a seguir? ¡Me parece que otras personas aquí parecen "solo saber" cómo hacerlo ...!

Lo siento si no estoy haciendo las preguntas de la manera correcta o solo estoy siendo un novato sobre esto, ¡pero no sé a dónde recurrir para resolver esto!

Respuestas a la pregunta(3)

Su respuesta a la pregunta