awslabs / amazon-kinesis-producer

Amazon Kinesis Producer Library
Apache License 2.0
401 stars 331 forks source link

amazon-kinesis-producer-0.14.0/amazon-kinesis-producer-native-binaries does not contain windows binaries #284

Open artembilan opened 5 years ago

artembilan commented 5 years ago

See what we have in Maven Central: https://repo1.maven.org/maven2/com/amazonaws/amazon-kinesis-producer/0.14.0/

At the same time the previous version 0.13.1 is OK.

Thanks

ScottDennison commented 4 years ago

Unfortunatey, the release notes for 0.14.0 state "Note: Windows platform will be unsupported going forward for this library."

As someone who's current task at work is to develop an application that must put to kinesis, for which this library sounds perfect, but is developing on a windows machine, this is disappointing news. It is also not what I would expect from Amazon.

artembilan commented 4 years ago

Thanks @ScottDennison , for the pointer !

Well, that's really unfortunate for this library to lose a whole bunch of users... We can live with that in the future when we get used already for the fact, but for now we just fail with NPE instead of reasonable error message:

Caused by: java.lang.RuntimeException: Could not copy native binaries to temp directory C:\Users\ARTEMB~1\AppData\Local\Temp\amazon-kinesis-producer-native-binaries
    at com.amazonaws.services.kinesis.producer.KinesisProducer.extractBinaries(KinesisProducer.java:908)
    at com.amazonaws.services.kinesis.producer.KinesisProducer.<init>(KinesisProducer.java:245)
    at org.springframework.integration.aws.kinesis.KplKclIntegrationTests$TestConfiguration.kplMessageHandler(KplKclIntegrationTests.java:167)
    at org.springframework.integration.aws.kinesis.KplKclIntegrationTests$TestConfiguration$$EnhancerBySpringCGLIB$$e1d24458.CGLIB$kplMessageHandler$3(<generated>)
    at org.springframework.integration.aws.kinesis.KplKclIntegrationTests$TestConfiguration$$EnhancerBySpringCGLIB$$e1d24458$$FastClassBySpringCGLIB$$8e067b04.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
    at org.springframework.integration.aws.kinesis.KplKclIntegrationTests$TestConfiguration$$EnhancerBySpringCGLIB$$e1d24458.kplMessageHandler(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
    ... 82 more
Caused by: java.lang.NullPointerException
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2314)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:2270)
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2291)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:2246)
    at com.amazonaws.services.kinesis.producer.HashedFileCopier.copyFileFrom(HashedFileCopier.java:52)
    at com.amazonaws.services.kinesis.producer.KinesisProducer.extractBinaries(KinesisProducer.java:894)
jburnitz commented 4 years ago

this is a break of semver

Cory-Bradshaw commented 4 years ago

Thank you for opening this issue to help track customers impacted by version 0.14.0 not shipping with windows binaries. Please +1 this issue to help us prioritize adding this binary back into the released libraries.

brainstorm commented 4 years ago

@Cory-Bradshaw Is there any justification for this decision (not ship Windows native bins from 0.14.x onwards)? I was just developing an application and bumped into this... there does not seem to be any reason on the README other than the note. I'm curious about the underlying rationale:

  1. CI/CD for windows target breaking at some point and not being fixed?
  2. Some OS-level issue on newer windows such as security restrictions, certificates, etc...?
  3. Simply lack of AWS engineer time or interest to fix it?
  4. Arbitrary internal managerial decision?
  5. https://github.com/awslabs/amazon-kinesis-producer/issues/113#issuecomment-345028662 ?

Perhaps the community can step forward, take it from there and fix it at some point in the future if the main reason(s) behind are just a few technical issues to overcome?

Cory-Bradshaw commented 4 years ago

@brainstorm ,

The underlying reason was due to the technical problems with supporting a windows build environment in the KPL, which required having separate branches to have a window's buildable KPL, and lack of resources to setup and configure the windows build environment. This is something we would like to support again, but we are currently focused on higher impact feature deliveries for our customers.

If you or another customer can provide a PR that includes a travis setup for windows to build this component from the master branch, it will definitely be something we can add back into the project.

Menighin commented 4 years ago

Hi @Cory-Bradshaw , do you guys have any plans to support Windows again in a near future? (8-6 months-) Just to decide if I go to Linux / WSL or if I can wait for some time :)

artembilan commented 4 years ago

Sorry, I don't support this project. I also need Windows for my target solutions based on this project. Not sure why you ask me to do something... That's exactly my request to AWS to bring Windows support back.

Thanks for understanding!

mikeUtah commented 3 years ago

Any update on this?

ryber commented 2 years ago

I actually don't care that it doesn't support windows per se as the server runs linux BUT,

This error makes it impossible for windows users to even run unit tests that happen to new up the KinesisProducer. Devs should be able to at least WORK with the library in systems, even if they are not going to hook up to Kinesis.

I would tend to say that a constructor should NOT copy things around on disk, and it if DOES it should throw a IOException, not a unspecific RuntimeException. If this action was moved to where the binaries were actually needed rather than on construction it would help.

ryber commented 2 years ago

Also, if there are no windows binaries then the error should say that, rather than a NPE.

jburnitz commented 2 years ago

I commented almost 3 years ago on this. Still not fixed. Sad.

On Thu, Jul 28, 2022, 4:59 PM Ryan Bergman @.***> wrote:

Also, if there are no windows binaries then the error should say that, rather than a NPE.

— Reply to this email directly, view it on GitHub https://github.com/awslabs/amazon-kinesis-producer/issues/284#issuecomment-1198673012, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABLF2TWUMUSJBRDXXXZNQNLVWL7FLANCNFSM4JP4FJWA . You are receiving this because you commented.Message ID: @.***>

gabrielfmagalhaes commented 1 year ago

Sad to see that this still is an issue

ahmed-anas commented 1 year ago

OOh wow, biggest "Screw you windows" I've ever seen

Akansha0398 commented 12 months ago

this issue still persists with 0.15.8 version

madorb commented 11 months ago

this documentation that claims windows binaries are included should probably updated eh? https://docs.aws.amazon.com/streams/latest/dev/kinesis-kpl-dl-install.html

SquallxLeonhart commented 8 months ago

Hey there. Any updates for this? The latest version is 0.15.10 and still nothing. It's really a shame.

carek88 commented 6 months ago

any ideas where can we take the binaries from?

apirvane commented 1 month ago

The fact that the Windows binaries are not supported anymore is such a bummer and a huge surprise coming from Amazon which did not brought them back even now after years of complaints. This problem eliminates completely the option to develop an app on Windows systems using KPL ... it is such a disappointment.