jeme commented on issue #763:
URL: https://github.com/apache/lucenenet/issues/763#issuecomment-1322066724

   Furthermore, now that I looked a bit around in the code which would be 
involved in the above, it might actually not be completely unfeasibly to 
introduce async into lucene at this layer for such scenarios as a "Addin" to 
Lucene.NET, that means we are talking coud outside of lucene itself that 
extends the appropriate classes (e.g. SimpleFSDirectory, NIOFSDirectory, 
MMapDirectory etc.) or making "Mirrors" of them and then providing the 
asynchronous overloads on those and their associated Input/Output classes. And 
then you can use those during replication allowing you to use async patterns 
when copying the files from the disk etc. From there it will require a bit of 
Type checking/casting, but other than that it should be doable... Lets mark 
that as **OPTION-A**.
   
   It COULD possibly also be introduced into Lucene it self by marking the 
involved classes here as partial classes and then implement the Async behaviors 
there, that might allow us to introduce it without breaking with the principle 
of sticking close to the Java side as we could then add it into Lucene.Net 
specific async files that can clearly be marked as "Lucene.Net Specific" - that 
should in theory mean that all we have to do in future ports is again to open 
up these ported classes by marking them as partial. Ofc. Breaking changes can 
occur in the stack that means we have to do major rework on the Async parts, 
but it see it as more manageable. Lets mark that as **OPTION-B**.
   
   While **OPTION-B** could be interesting to investigate as it might have to 
opportunity to introduce async/await into Lucene.NET gradually if anyone wishes 
to give that a shot, to begin with the use will be very limited and probably 
specifically only to scenarios outlined here, it would not affect the core 
itself which would still use the blocking API's and I can't say how far up the 
stack this could be done without hitting a wall where we can't go further 
without actually compromising on the principle of having a port as close to the 
java source as possible to make furture ports easier. I REALLY doubt that we 
could get all the way out to making a `IndexWriter.UpdateDocumentAsync(...)` 
without hitting that problem, but I can't say for sure.
   
   So I am not sure **OPTION-B** is worth the effort considering that 
**OPTION-A** is probably feasible and it's only downside is the requirement of 
casts/type checks. And even IF we would find that worth it, I don't think 
anyone in the team sees it as a priority.
   
   But feel free to share what you guys think.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to