2017-06-02 10:30 GMT+02:00 Sanne Grinovero <sa...@hibernate.org>: > > > On Fri, 2 Jun 2017, 08:56 Gunnar Morling, <gun...@hibernate.org> wrote: >> >> Hi, >> >> I find the exposure of an implementation detail (usage of Apache HTTP >> client) of the Elasticsearch client a bit problematic. If they change >> this to another HTTP client, our SPI would break. > > > Yes the very point of exposing that detail is the reason for this thread. > > Still, our SPI being guaranteed only for a minor, that gives a lot of > flexibility? > > The Elasticsearch client exposing this itself, I don't expect them to switch > implementation in a micro release to make some bugfix. If they change it in > a major or even minor version, we're ok to not support that version until > our next minor.
It might be covered by the HSEARCH rules for evolvement, but personally I think it's just not a good practice to leak internals of a dependency in our SPI. > > >> >> Did you instead consider to just let users provide their custom >> instance of org.elasticsearch.client.RestClient? It's still leaking an >> implementation detail of Hibernate Search, but at least it's one >> indirection less. >> >> People wishing to have a custom RestClient would have to implement a >> few more bits themselves (the logic from >> DefaultElasticsearchClientFactory#customizeHttpClientConfig()), but >> I'd find that acceptable for the sake of a less detail-exposing SPI, >> plus it grants more flexibility in terms of configuring the >> RestClient. > > > > N.B. The client factory already is a Service so any advanced user already > can override it. The contract is defined under impl, though. Nothing users should consider to implement. Unless you mean to promote it to SPI proper? > > We want to make it easier for cloud users. Focusing on AWS now as we've had > user requests for this - not least our own CI - but I'd expect other clouds > to have similar features (today or tomorrow). I just don't expect other use > cases to need this so we might provide them all eventually, but at this > point my goal is to leave an appealing SPI for contributors to join on that. > > With that I mean: > 1# this might evolve but we need something simple to use for people to not > get stuck. > 2# I expect integrator implementors to contribute them back > 3# People won't have this low level dependency in their projects for long > > Having them re-implement the client wouldn't encourage this ;) You could provide an AWS-based implementation of the client factory either as an example or in a separate module. So people can easily make use of it, but usage of the HTTP client isn't exposed in core SPIs. Also that way you don't commit to a low-level SPI now but rather can gain experiences with the custom client factories people create and evolve from there. > > Thanks! > Sanne > >> >> --Gunnar >> >> >> 2017-06-01 19:11 GMT+02:00 Sanne Grinovero <sa...@hibernate.org>: >> > Yoann has been working on allowing Hibernate Search users to use >> > Elasticsearch on AWS. >> > >> > Specifically on AWS the Elasticsearch security can be configured to >> > use application identities, which implies the requests need to be >> > signed. >> > >> > A good background read can be found here [1]. >> > >> > We planned to allow people to use this but were not planning to >> > include AWS specific libraries as dependencies - but since Yoann >> > implemented an actual AWS signer in the tests I suppose it would be >> > selfish to not ship it.. >> > >> > Please see the API proposal on github (with the PR): >> > - https://github.com/hibernate/hibernate-search/pull/1426 >> > >> > Thanks, >> > Sanne >> > >> > [1] - >> > https://aws.amazon.com/blogs/security/how-to-control-access-to-your-amazon-elasticsearch-service-domain/ >> > _______________________________________________ >> > hibernate-dev mailing list >> > hibernate-dev@lists.jboss.org >> > https://lists.jboss.org/mailman/listinfo/hibernate-dev _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev