Add histotable serializer for highest uri precedence provider#647
Conversation
|
I'm left with the following warning: However, this class is in the engine subproject and importing it into |
|
I find it confusing, but it seems to me that in the pool create() in KryoBinding, the autoregisterTo static method gets called for the value class the BDB object cache is created for. So for example in BdbFrontier that's BdbWorkQueue: this.allQueues = bdb.getObjectCache("allqueues", isRecovery, WorkQueue.class, BdbWorkQueue.class);If we look at BdbWorkQueue's public static void autoregisterTo(AutoKryo kryo) {
kryo.register(BdbWorkQueue.class);
kryo.autoregister(FetchStats.class);
kryo.autoregister(HashSet.class);
kryo.autoregister(SimplePrecedenceProvider.class);
kryo.autoregister(byte[].class);
}So I'm guessing maybe the intended way to do it is to add an autoregister for HighestUriQueuePrecedencePolicy to the end of kryo.autoregister(HighestUriQueuePrecedencePolicy.class);and then you can define a I don't love this autoregister mechanism because the order determines the IDs kryo uses to identify the classes, which means you often can't load a checkpoint with a different Heritrix version. |
|
Thank you, that was what I was missing. This seems to work now, and fixes the warnings. |
This fixes an issue when using the
HighestUriPrecedenceProviderwhere the nested generics in theHistotablefail to serialize properly.Sample config: