pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Perl Elasticsearch client p5-Search-Elasticsearch and older stacks



I won't go into the drama behind this, as one can do a Internet search
and find it for yourself, but Elasticsearch is in an argument with
Opensearch and a resulting fall out is that the 8.0 Perl Elasticsearch
client (p5-Search-Elasticsearch) has been broken such that it will not
speak to most older Elasticsearch clusters, either from Elasticsearch
themselves, or from Opensearch.

For perl, you can get it working again with something like this after
the client code is installed (this was from a NetBSD pkgsrc 2024Q1 from
/usr/pkg):

--- lib/perl5/vendor_perl/5.38.0/Search/Elasticsearch/Role/Cxn.pm.ORIG	2022-12-29 07:21:56.000000000 -0500
+++ lib/perl5/vendor_perl/5.38.0/Search/Elasticsearch/Role/Cxn.pm	2024-04-12 09:44:50.870719667 -0400
@@ -361,12 +361,12 @@
     my ( $self, $params, $code, $msg, $body, $headers ) = @_;
 
     # Product check
-    if ( $code >= 200 and $code < 300 ) {
-        my $product = $headers->{$PRODUCT_CHECK_HEADER} // '';
-        if ($product ne $PRODUCT_CHECK_VALUE) {
-            throw( "ProductCheck", "The client noticed that the server is not Elasticsearch and we do not support this unknown product" );
-        }
-    }
+#    if ( $code >= 200 and $code < 300 ) {
+#        my $product = $headers->{$PRODUCT_CHECK_HEADER} // '';
+#        if ($product ne $PRODUCT_CHECK_VALUE) {
+#            throw( "ProductCheck", "The client noticed that the server is not Elasticsearch and we do not support this unknown product" );
+#        }
+#    }
 
     $self->_decompress_body( \$body, $headers );
 

The client code for 8.0 appears to work just fine with a 7.x
Elasticsearch cluster, at the very least, and likely works for older
Elasticsearch nodes.  I have a bunch of stuff that uses Elasticsearch as
a client from NetBSD to an ArchLinux cluster running 7.x.  It is very
common for clusters to never be updated once installed, or not updated
very often as those updates can be very painful if there are a lot of
indexes or even a small number of very large indexes.

This could probably be cleaned up some and included officially in pkgsrc
if that isn't against the rules.  The maintainer for the Elasticsearch
perl code is pkgsrc-users.

An aside, the error that will get shown to the end using program can be
quite wrong, as a lot of the internal users in the perl Elasticsearch
client code itself are not expecting ProductCheck to be tossed at that
point and you are often just presented with a generic "No Nodes are
available" error is tossed back to your program and not ProductCheck.







-- 
Brad Spencer - brad%anduin.eldar.org@localhost - KC8VKS - http://anduin.eldar.org


Home | Main Index | Thread Index | Old Index