Hi Joshua!
Thanks a lot for your quick answer - appreciated!
Makes sense 100% - also now I got my answers fully.
thanks
Attila
On 16.05.2019 2:58 PM, Joshua McKenzie wrote:
there is no plan from Cassandra Devs to normally support Windows
in Cassandra 4.0
I was the dev kind of single-handedly making it work on Windows; it
was good up through the 3.X line but I didn't maintain it past that
point to 4.0+ and don't have plans to. Reason being: the WSL approach
100% works for dev environments, and while I/O is pretty slow right
now (i.e. use for dev only) there's a new version of Windows hitting
soon with an actual linux kernel embedded in it[1] where the I/O perf
issue should be resolved to the point of it being viable to run linux
native apps on WSL in production. So no real need for "windows
support" on the project, per se, as Windows will have support *for it*. :)
[1]https://www.techtimes.com/articles/242972/20190514/future-windows-10-versions-to-ship-with-real-linux-kernel-for-wsl.htm
On Thu, May 16, 2019 at 2:26 AM Attila Wind <attilaw@swf.technology>
wrote:
Hi Dinesh,
No. And I am not really planning to. Too early to start looking for
other workarounds I think (I could also put the whole stuff into a
Linux
based Docker container and run from there if it gets to that point
- its
supported by our everything) before it is confirmed fact that
there is
no plan from Cassandra Devs to normally support Windows in
Cassandra 4.0.
Currently it is not the case as far as I see so for now more
interested
about intentions - that was the goal of my mail. Plus of course also
give myself a chance to let it turn out if I am missing a config
options
somewhere somehow... :-) Code base is pretty big I absolutely have no
overview of course. Chance is high I am missing something... :-)
thanks
Attila Wind
http://www.linkedin.com/in/attilaw
Mobile: +36 31 7811355
On 2019. 05. 16. 7:49, Dinesh Joshi wrote:
> Hi Attila,
>
> Have you tried building & running Cassandra using Windows
Subsystem for Linux[1]? The integration is seamless and you get a
full fledged Linux environment on Windows. The overhead is minimal
and you should be able to edit in your IDE on Windows.
>
> Thanks,
>
> Dinesh
>
> [1] https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux
>
>> On May 15, 2019, at 10:28 PM, Attila Wind
<attilaw@swf.technology> wrote:
>>
>> Hi Devs,
>>
>> Base question:
>> How to run Cassandra 4.0 (trunk) version on a Windows based
environment without getting always the errors like this?
>> org.apache.cassandra.io
<http://org.apache.cassandra.io>.FSReadError: java.io.IOException:
Invalid folder descriptor trying to create log replica
D:\workspace\java-projects\java-automated-test-suite\target\embeddedCassandra\data\test_keyspace\test_table-f6498e1075ca11e9a59ed3a612c57aaf
>>
>> Background / Motivation:
>> In our project we want to use Map/List data types heavily -
also combined with IN operator. Due to
https://issues.apache.org/jira/browse/CASSANDRA-12654 this does
not work in 3.x but solved in 4.0. Also extended features around
the above complex data types in 4.0 excites me up. So I decided to
do a test deployment on our test servers (Linux based) - features
worked like charm there.
>> As a next step I extended our jBehave testing framework to also
be able to fire up an embedded Cassandra 4.0 for running tests.
Since I am developing on Windows I started to get the above
mentioned FSReadError exceptions however folder path is valid.
>> Same happens if I try to fire up Cassandra 4.0 instances on
Windows systems.
>>
>> More advanced question:
>> Based on stack traces I took a look into the source. In
org.apache.cassandra.db.lifecycle.LogReplica and e.g. in open(File
file) method (along with others) it is using the
NativeLibrary.tryOpenDirectory(file.getParentFile().getPath())
call - if it fails I get the above FSReadError for sure.
>> And here we arrive to the main point... On Windows the
org.apache.cassandra.utils.NativeLibraryWindows class is used in
the background. But in this class basically almost all method
implementation is just "throw new UnsatisfiedLinkError();" -
bingo! This shows me that I have no really hope... If I am on
Windows I will fail like hell with above errors always.
>>
>> 1. Are you planning to do something around it?
>>
>> What I did as an ass-saver I have added a "mock" implementation
for 3 problematic methods by implementing in Java in
NativeLibraryWindows class fake_callOpen(), fake_callFsync(),
fake_callClose() kinda simulating something. fake_callOpen()
stores the fake fdId => path mapping in an internal Map object.
fake_callClose() flushes that out. fake_callFsync() gives a WARN
if the fdId is uinknown (so fake_callOpen() was not invoked
earlier). Issue has gone for me after this, Cassandra 4.0 runs
fine with all of our test cases - I am happy! :-) So.... and but...
>>
>> 2. My quick and dirty implementation shows that I regularly get
lots of warnings from my fake_callFsync(int fd): "file descriptor
{} is unknown so invalid!" which means callOpen(int fd) was NOT
invoked in prior calling callFsync() for the given descriptor. Is
that normal??? Should not callOpen() always be invoked??? Could it
be a bug somehow???
>>
>> 3. I am really not planning ever run Cassandra (or any other)
in Windows based PROD system. But developing on Windows still.
Wouldn't it make sense to at least provide some workaround here
for fellow developers like me? At least to be able to run the
server in Windows (for testing/development purposes only) ...
>>
>> thanks!
>>
>> --
>> Attila Wind
>>
>> http://www.linkedin.com/in/attilaw
>> Mobile: +36 31 7811355
>>
>>
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
<mailto:dev-unsubscr...@cassandra.apache.org>
> For additional commands, e-mail: dev-h...@cassandra.apache.org
<mailto:dev-h...@cassandra.apache.org>
>