Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[THRIFT-82] Add Common Lisp support #1412

Closed
wants to merge 1 commit into from

Conversation

dkochmanski
Copy link

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

@dkochmanski
Copy link
Author

squashed and rebased on top of the thrift master head.

@dkochmanski
Copy link
Author

The bottom line is this: under the law of where mr. Anderson lives he can't yield the IP rights nor he sees a reason to do so, so we can't remove the copyrights put by him there. Code is licensed under the same license as the Thrift code though.

@jeking3
Copy link
Contributor

jeking3 commented Nov 10, 2017

My take on the Apache licensing rules is that we cannot accept this if it has other copyrights in it:

If the source file is submitted with a copyright notice included in it, the copyright owner (or owner's agent) must either:
* remove such notices, or
* move them to the NOTICE file associated with each applicable project release, or
* provide written permission for the ASF to make such removal or relocation of the notices.

If Mr. Anderson would provide the ASF with written permission to move the copyright statements into a NOTICE.md file within lib/cl that would be sufficient for inclusion in the project.

@dkochmanski
Copy link
Author

After email exchange with Mr. Anderson I've came to conclusion that we should first put thrift CL library in Quicklisp (we already download dependencies from there) and pull the library from there. In this scenario lib/cl will have only Makefile and some tests. That way there is no problem with copyrights. As of tutorial part and cross tests, they are written by us, so there shouldn't be any issue with that.

Tutorial code is written by us, same goes for cross tests. My only concern is about t_cl_generator.cc file from compiler/ module, which has yet another copyright owner, original PR THRIFT-82 issuer (https://issues.apache.org/jira/browse/THRIFT-82) Mr. Patrick Collison: https://issues.apache.org/jira/secure/attachment/12386027/thrift-cl.patch . Should I write to him? His GH handle is @pc, but he doesn't seem to be very active here lately.

@dkochmanski
Copy link
Author

Good news, I have consent from @pc to change the header of the generator to match contributor guidelines. So next steps are:

  • merge changes to de.setf.thrift repository (so missing protocols are implemented)
  • publish de.setf.thrift on Quicklisp
  • adjust this pull request for Common Lisp inclusion

should I close this pull request for now, or leave it as is until then?

@jeking3
Copy link
Contributor

jeking3 commented Nov 15, 2017

@jfarrell was going to take action either on contacting individuals or making decisions on this, so I'm waiting to see what the result of those efforts is. I would much prefer the cl code for thrift be in the thrift project itself and not hosted somewhere else.

@dkochmanski
Copy link
Author

any update on this? I'm fine with both options (given all parties agree on them) and have time to work on code forward.

@jeking3
Copy link
Contributor

jeking3 commented Nov 24, 2017

@dkochmanski still waiting for @jfarrell to chime in since he was going to take some actions. I provided him with an email that could be used to contact the author(s) involved, but I haven't heard anything since that. My preference would be to get permission to build the cl implementation for thrift into the thrift project rather than have it sitting external.

If the cl part of the project is going to sit external then we'll likely need to consider it a "contrib/" type of submission where it is maintained external to the project. That doesn't sound like a good long term solution for adding a language to the collection.

@jeking3
Copy link
Contributor

jeking3 commented Nov 30, 2017

I have sent an email to the two participants for which permission is needed to move copyright statements in order to comply with the Apache licensing requirements. I asked them to each post either acceptance or rejection here for the record.

Once we have their answers we can proceed to whatever the next step will be. Without permission the bulk of the code may have to live in some other repository, untouched, and downloaded as part of the build process.

Copy link
Contributor

@jeking3 jeking3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove all code copyrighted by James Anderson as we do not have permission to move the copyright notices on his work to a NOTICE file.

@uint
Copy link
Contributor

uint commented Dec 5, 2017

  • Rebased and resolved merge conflicts
  • Fixed some minor issues with make clean and dependencies
  • Added (newly) failing tests to known_failures_Linux.json

@uint
Copy link
Contributor

uint commented Dec 5, 2017

@jeking3 I'm really sorry, I only noticed there were suggested changes attached to your comment after I did a forced push. I can't see them anymore. Do you remember if there was anything important there?

I removed the CL Thrift library and made it so that it's downloaded during the building process. I think all the code that is left is either written by us (cross-tests, tutorial, build integration, etc.) or isn't an issue (code generator).

Currently we download the library from our fork of Anderson's work by downloading (curl) the zip file from github and unzipping it. The long-term goal, though, is to merge our fork with upstream and get it added to quicklisp (will probably take about a month before it's available in the repo). After that we can just download the library in a similar way we download all the dependencies.

I used that suggested bash snippet from the closed PR. It worked nicely.

What do you think? Is this PR fine in its current shape?

@jeking3
Copy link
Contributor

jeking3 commented Dec 5, 2017

I will take another look. Can you squash this into a single commit to prepare it for inclusion if it looks good?

@uint
Copy link
Contributor

uint commented Dec 6, 2017

Of course. Squashed.

Copy link
Contributor

@jeking3 jeking3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good, a new language supported! Nice job! Very complete.

@uint
Copy link
Contributor

uint commented Dec 6, 2017

I won't lie, this feels good! Thanks a lot for the extensive support.

Copy link
Contributor

@jeking3 jeking3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see no Dockerfile changes that would install Common Lisp on any of the docker images for purposes of running the cross test. I just pulled this into the ubuntu-xenial sandbox and lisp is not being configured. Please add lisp to the build/docker/ubuntu-xenial/Dockerfile and follow the instructions in the build/docker/README.md, or tell me how to add Common Lisp to Ubuntu Xenial and I will do that locally to prove it out.

@jeking3
Copy link
Contributor

jeking3 commented Jan 12, 2018

Let me know what the commands are to add lisp to an Ubuntu Xenial system. We need to update the Dockerfile to include Common Lisp so that it actually runs in the build system. This has to happen before we commit.

@jeking3
Copy link
Contributor

jeking3 commented Jan 12, 2018

@dkochmanski

Need the following things to happen:

  1. resolve the merge conflict
  2. install sbcl in the ubuntu-xenial and ubuntu-artful Dockerfiles
  3. update LANGUAGES.md
  4. update build/docker/README.md with the versions that are in the distributions. Xenial uses SBCL 1.3.1 and Artful has 1.3.14
  5. we need to see a clean build so I would recommend rebasing on the current master before you push

Once lisp is part of the docker images then "make check" and "make cross" will exercise it with every build.

Thanks,

Jim

@dkochmanski dkochmanski force-pushed the develop branch 2 times, most recently from 2b3ae9a to 703c583 Compare January 13, 2018 18:40
@dkochmanski
Copy link
Author

dkochmanski commented Jan 13, 2018

@jeking3 Thanks for the pointers. I've added requested info and updated Dockerfiles. Also rebased against master.

@uint could you double-check if I didn't confuse something in LANGUAGES.md?

@dkochmanski dkochmanski force-pushed the develop branch 2 times, most recently from ddeea1e to 49bc12b Compare January 13, 2018 18:58
@dkochmanski
Copy link
Author

and one more change: ensure-externals uses [[ syntax, so it must be run with bash (not sh) – modified makefile and script to take this requirement into account.

@dkochmanski
Copy link
Author

It seems that SBCL has some problems when ran in docker (investigating that – sadly I can't reproduce this problem on my local machine). I'll install SBCL 1.3.1 on my machine to make 100% sure it is docker-specific. I'll let you know when I know more (and/or resolve the issue).

@uint
Copy link
Contributor

uint commented Jan 15, 2018

@dkochmanski I think it might be, sadly, compiler specific. I don't know about you, but I only ever ran this on a newer version of SBCL. But the warnings SBCL gives in Docker can probably be ignored.

While I think there was some kind of file transport (or UDS?), I never tested it. I wouldn't put it down unless we know it works. We don't have the compact protocol. We have simple server, not non-blocking.

@jeking3
Copy link
Contributor

jeking3 commented Jan 15, 2018

Okay if we need to then let's have the docker build pull down the latest SBCL, build and install it into /usr/local? Usually we like to leave the language stock at the LTS level unless there is something wrong with it, and in this case there might be.

@uint
Copy link
Contributor

uint commented Jan 16, 2018

@dkochmanski I confirmed I get the issue locally on SBCL 1.3.1, but 1.3.14 works fine.

@jeking3 I don't think we can fix the issue with SBCL 1.3.1 (easily), as it seems like either Quicklisp or one of the library it pulls causes that, not the code we maintain. Would it be fine to just use Artful? Or do you need it to build on Xenial specifically for Travis integration?

@jeking3
Copy link
Contributor

jeking3 commented Jan 22, 2018

Currently "make cross" builds on Xenial and it will probably stay that way for a while.

It would be acceptable to use a different version, either from an ubuntu PPA or just downloading and building it as part of the docker image setup. So for example putting in 1.3.14 into Xenial and the latest 1.4.x into Artful would work. Is this something you want me to look at? If I get this changelist working on xenial with a modified docker script then I can merge it all together...

@uint
Copy link
Contributor

uint commented Jan 23, 2018

@jeking3 I managed to find other problems while trying to run this stuff on my local machine in the docker, regardless of SBCL version. I'm trying to look into that for now. I'll let you know if I have anything. There's probably no sense having you do what you described until then.

Right now Xenial succeeds because apparently @dkochmanski removed SBCL from the dockerfile for it.

Curiously, I don't locally have the problem you can see in the failed Artful job. Do you have any idea how to debug this? Looks like compiler first writes a file and then is unable to open it.

; /root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/tutorial/cl/gen-cl/shared/shared-types-TMP.fasl written
; compilation finished in 0:00:00.188
Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {1001E06733}>:
  Failed to find the TRUENAME of /root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/tutorial/cl/gen-cl/shared/shared-types-TMP.fasl:
    No such file or directory

@dkochmanski
Copy link
Author

Could it be that docker sets a "fresh" environment for each command? SBCL keeps its cache files in ~/.cache/common-lisp and it looks like docker either runs commands as different users or that it wipes / fakes the home directory as a fresh one.

@uint uint force-pushed the develop branch 2 times, most recently from 046ce46 to f79610d Compare January 23, 2018 16:12
@uint
Copy link
Contributor

uint commented Jan 23, 2018

  • Fixed an issue with UTF-8 encoded .lisp files in docker
  • Updated LANGUAGES.md
  • Tested with SBCL 1.3.14 (in docker) thoroughly - it should work. SBCL 1.3.1 probably still won't, though.
  • Added tests that fail against CL to known failures
  • Squashed and rebased

@dkochmanski
Copy link
Author

Basically SBCL 1.3.14 (artful) works fine locally on Docker (and 1.3.1 had a bug with base strings according to SBCL devs - xenial). So the problem is probably something on environment hosting docker. I've noticed that some languages doesn't have docker tests enabled at all, if this problem persists is it acceptable to skip it for CL too?

@jeking3 can you try running tests on Docker on your host locally to confirm that? What steps do you suggest in order to move forward?

@uint
Copy link
Contributor

uint commented Jan 29, 2018

Rebased.

@jeking3
Copy link
Contributor

jeking3 commented Jan 29, 2018

Sorry I have been working on some other things - I will try to get back around to this as soon as I can. It's important to the project to have as many languages supported as possible.

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.
@uint
Copy link
Contributor

uint commented Feb 13, 2018

Rebased.

@jeking3
Copy link
Contributor

jeking3 commented Feb 28, 2018

Thanks, I am working on running this in my local docker container and checking the "make cross" results.

@jeking3
Copy link
Contributor

jeking3 commented Feb 28, 2018

I ran the cross test in ubuntu-artful using your PR and only ttwo unexpected failures occurred:

===============================================================================
*** Following 2 failures were unexpected ***:
If it is introduced by you, please fix it before submitting the code.
===============================================================================
server-client:          protocol:         transport:               result:
d-cl                    binary            buffered-ip              failure(1)
d-cl                    binary            framed-ip                failure(1)

I think we're good to go. I will change the cross test to use the artful image (and disable those two tests explicitly for now), now that artful has haxe enabled again, it has as many languages as the xenial image does.

@jeking3
Copy link
Contributor

jeking3 commented Mar 1, 2018

Best I can tell there seems to be some sort of timing or logic error. Builds will randomly fail after writing a fasl, apparently renaming it, then being unable to find it. This is the "ubsan" build job which runs "make precross":

https://api.travis-ci.org/v3/job/347498508/log.txt

; compiling (DEF-STRUCT "structb" ...)
; compiling (DEF-SERVICE "ThriftTest" ...)
; compiling (DEF-SERVICE "SecondService" ...)
; /root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl written
; compilation finished in 0:00:06.905

then immediately after:

Unhandled SB-INT:SIMPLE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING
                                                {1001E066F3}>:
  Failed to find the TRUENAME of /root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl:
    No such file or directory

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1001E066F3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<SB-INT:SIMPLE-FILE-ERROR "~@<~?: ~2I~_~A~:>" {1002AFF8E3}> #<unavailable argument>)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<SB-INT:SIMPLE-FILE-ERROR "~@<~?: ~2I~_~A~:>" {1002AFF8E3}>)
2: (INVOKE-DEBUGGER #<SB-INT:SIMPLE-FILE-ERROR "~@<~?: ~2I~_~A~:>" {1002AFF8E3}>)
3: (ERROR SB-INT:SIMPLE-FILE-ERROR :PATHNAME #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl" :FORMAT-CONTROL "~@<~?: ~2I~_~A~:>" :FORMAT-ARGUMENTS ("Failed to find the TRUENAME of ~A" (#P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl") "No such file or directory"))
4: ((LABELS SB-IMPL::RESOLVE-PROBLEMATIC-SYMLINK :IN SB-IMPL::QUERY-FILE-SYSTEM) NIL)
5: (SB-IMPL::QUERY-FILE-SYSTEM #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl" :TRUENAME T)
6: (TRUENAME #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl")
7: (RENAME-FILE #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types-TMP.fasl" #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types.fasl")
8: (UIOP/LISP-BUILD:COMPILE-FILE* #P"/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types.lisp" :OUTPUT-FILE #P"/root/.cache/common-lisp/sbcl-1.3.14.debian-linux-x64/thrift/src/test/cl/gen-cl/ThriftTest/ThriftTest-types.fasl" :EXTERNAL-FORMAT :UTF-8 :WARNINGS-FILE NIL)
9: (ASDF/LISP-ACTION:PERFORM-LISP-COMPILATION #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "thrift-gen-thrifttest" "ThriftTest-types">)
10: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unavailable argument> #<unavailable argument> #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "thrift-gen-thrifttest" "ThriftTest-types">)
11: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "thrift-gen-thrifttest" "ThriftTest-types">) [fast-method]
12: ((:METHOD ASDF/PLAN:PERFORM-PLAN (LIST)) ((#1=#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/SYSTEM:SYSTEM "puri">) (#1# . #<ASDF/SYSTEM:SYSTEM "split-sequence">) (#1# . #<ASDF/SYSTEM:SYSTEM "closer-mop">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-utf-8">) (#1# . #<ASDF/SYSTEM:SYSTEM "ieee-floats">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-gray-streams">) (#1# . #<ASDF/SYSTEM:SYSTEM "alexandria">) (#1# . #<ASDF/SYSTEM:SYSTEM "thrift">) (#2=#<ASDF/LISP-ACTION:PREPARE-OP > . #<ASDF/SYSTEM:SYSTEM #3="thrift-gen-thrifttest">) (#2# . #4=#<ASDF/LISP-ACTION:CL-SOURCE-FILE #3# "ThriftTest-types">) (#1# . #4#) (#<ASDF/LISP-ACTION:LOAD-OP > . #4#) ...) :FORCE NIL) [fast-method]
13: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
14: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) ((#1=#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/SYSTEM:SYSTEM "puri">) (#1# . #<ASDF/SYSTEM:SYSTEM "split-sequence">) (#1# . #<ASDF/SYSTEM:SYSTEM "closer-mop">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-utf-8">) (#1# . #<ASDF/SYSTEM:SYSTEM "ieee-floats">) (#1# . #<ASDF/SYSTEM:SYSTEM "trivial-gray-streams">) (#1# . #<ASDF/SYSTEM:SYSTEM "alexandria">) (#1# . #<ASDF/SYSTEM:SYSTEM "thrift">) (#2=#<ASDF/LISP-ACTION:PREPARE-OP > . #<ASDF/SYSTEM:SYSTEM #3="thrift-gen-thrifttest">) (#2# . #4=#<ASDF/LISP-ACTION:CL-SOURCE-FILE #3# "ThriftTest-types">) (#1# . #4#) (#<ASDF/LISP-ACTION:LOAD-OP > . #4#) ...)) [fast-method]
15: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
16: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1001E5AF13}>) [fast-method]
17: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "thrift-gen-thrifttest">) [fast-method]
18: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "thrift-gen-thrifttest">)
19: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
20: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "thrift-gen-thrifttest">) [fast-method]
21: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:LOAD-OP :THRIFT-GEN-THRIFTTEST)
22: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
23: (ASDF/CACHE:CALL-WITH-ASDF-CACHE #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1001E5664B}> :OVERRIDE NIL :KEY NIL)
24: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP :THRIFT-GEN-THRIFTTEST) [fast-method]
25: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP :THRIFT-GEN-THRIFTTEST) [fast-method]
26: (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST)
27: (SB-INT:SIMPLE-EVAL-IN-LEXENV (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) #<NULL-LEXENV>)
28: (EVAL-TLF (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) 6 NIL)
29: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) 6)
30: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) (ASDF/OPERATE:LOAD-SYSTEM :THRIFT-GEN-THRIFTTEST) :CURRENT-INDEX 6)
31: (SB-C::%DO-FORMS-FROM-INFO #<CLOSURE (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {1001E1A35B}> #<SB-C::SOURCE-INFO {1001E1A313}> SB-C::INPUT-ERROR-IN-LOAD)
32: (SB-INT:LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
33: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}> NIL)
34: (LOAD #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
35: ((FLET SB-IMPL::LOAD-SCRIPT :IN SB-IMPL::PROCESS-SCRIPT) #<SB-SYS:FD-STREAM for "file /thrift/src/test/cl/make-test-client.lisp" {1001E0EBE3}>)
36: ((FLET #:WITHOUT-INTERRUPTS-BODY-146 :IN SB-IMPL::PROCESS-SCRIPT))
37: (SB-IMPL::PROCESS-SCRIPT "make-test-client.lisp")
38: (SB-IMPL::TOPLEVEL-INIT)
39: ((FLET #:WITHOUT-INTERRUPTS-BODY-77 :IN SAVE-LISP-AND-DIE))
40: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))

unhandled condition in --disable-debugger mode, quitting
; 
; compilation unit aborted
;   caught 2 fatal ERROR conditions
Makefile:635: recipe for target 'TestClient' failed
make[2]: *** [TestClient] Error 1
make[2]: Leaving directory '/thrift/src/test/cl'

Is it possible that the RENAME implementation in sbcl is buggy when the source and destination are the same, and perhaps it exhibits some undefined behavior? Just a wild guess...

@jeking3
Copy link
Contributor

jeking3 commented Mar 2, 2018

I updated the ubuntu-artful image to SBCL 1.4.4 and it seems to be stable. Merging.

@asfgit asfgit closed this in e93a901 Mar 2, 2018
jeking3 pushed a commit to jeking3/thrift that referenced this pull request Mar 7, 2018
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412
jeking3 pushed a commit to jeking3/thrift that referenced this pull request Mar 10, 2018
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412
jeking3 pushed a commit to jeking3/thrift that referenced this pull request Mar 12, 2018
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412
ozymaxx pushed a commit to ozymaxx/thrift that referenced this pull request Mar 20, 2018
- testing double rendering in JS, Java, Python and C++

- a comment added (about setprecision)
- BOOST_TEST -> BOOST_CHECK

double rendering in erlang, fixed (some additional tests added)

less than operator - correction in erlang test

style changes, some fixes in erlang test

some fixes in erlang test

some fixes in erlang test - no need for including lists library

more style changes - something overlooked

expected 2 lines before main - fixed (not seen locally)

noticed that test cases should be added manually in Python

DoubleConstantTest thrift compilation directive is now given in generate.cmake

render_double_to_string -> emit_double_as_string

added assertion error messages to see the problems inside Java tests in more detail

RDP access to AppVeyor build workers

THRIFT-82: Add Common Lisp support
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412

THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs

THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests

THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation

THRIFT-4498: add phpcs back
Client: php

This closes apache#1498

THFIFT-4486: golang: support https from generated clients
golang: don't generate -remote.go clients when there are no functions
golang: support for http headers in -remote clients
golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol
Client: golang

This closes apache#1488

duplicate key problem in appveyor settings

ignore the test cases with (-+)1.7e+308 in Java tests

ignore the test cases with (-+)1.7e+308 in Java tests - 2

pyflakes8 style changes

disabling the test named 'TestRenderedDoubleConstants' on machines with the MSVC2010 configuration

msvc.profile parameter existence check

passing "msvc profile" on build stage

"MSVC_PROFILE" as a cache variable

wrong usage of cache variables

let's see whether the MSVC_PROFILE parameter is passed correctly

let's see whether the MSVC_PROFILE parameter is passed correctly

let's see whether TestRenderedDoubleConstants is excluded or not

msvc.profile access - fixed

msvc.profile access - fixed

THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib,
test for serialization of nested list,
run all tests when building js lib
Client: js

This closes apache#1457

THRIFT-4505: Fix python build on Vagrant Windows boxes
Client: py

This closes apache#1499

THRIFT-4506: fix use of assert for correctness in Java SASL negotiation
Client: java

Updated the languages matrix markdown documentation.

Minor tweaks to the language matrix markdown documentation.

THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image

THRIFT-4354: fix php socket blocking behavior
Patch: Robert Lu <[email protected]>
Client: php

This closes apache#1384

THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs

THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build

THRIFT-4480 - Handle seqid = 0
Client: js

This closes apache#1487

THRIFT-4509: remove nodejs browser test
Client: nodejs

This closes apache#1501

fix wrong document @param in TBase.h
Client: cocoa

This closes apache#1504

THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types
Client: js

This closes apache#1503

THRIFT-4495: Allow `undefined` for non-required Erlang records fields.
Client: erl

As of Erlang 19, the dialyzer static type-analysis tool no longer
implicitly adds `undefined` to the allowed types for a field.  This
means that dialyzer will now complain about any non-required fields
that are not explicitly initialed when creating a new record.

This closes apache#1494

THRIFT-4497: Use `map()` field type for Erlang type for map struct fields.
Client: erl

The Thrift Erlang code generator previously generated fields with the
`#{}` Erlang type for maps fields.  In the Erlang type specification
languages, however, `#{}` specifically means an empty map.  This commit
fixes the code to emit `map()` instead, which means the maps keys and
values may be of any type.

It would be possible to emit a field type such as
`${keytype() => maptype()}`, but this commit does not do that.

This closes apache#1495

THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross
Client: cpp

THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues
Client: cpp

This closes apache#1497

THRIFT-4337: Able to set keyStore and trustStore as InputStream in the
TSSLTransportFactory.TSSLTransportParameters
Client: java

This closes apache#1486

THRIFT-4515: fix windows build
Client: cpp

THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility.
Client: go

This closes apache#1459

THRIFT-4517: disable ocaml in xenial because it is broken

THRIFT-4337: fix javadoc build error related to changes

THRIFT-4508: remove cygwin64 build in favor of MSVC2013

TestRenderedDoubleConstants (in Java/Python) has been disabled on MSVC2013 builders

THRIFT-4509:
* switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn
* update grunt to 1.0.2
* always use local copy of jquery and qunit
* commit the package-lock files for npm keep versions stable
Client: js

This closes apache#1506

THRIFT-4509: add jslint and fix build script output

THRIFT-4429: Make TThreadPoolServer.executorService_ available in
inherited classes and refactor methods to be able customization
Client: java

This closes apache#1485

THRIFT-4513: Fix thrift compiler to generate constants in stable order.

This closes apache#1505

reverting changes on disabling a test depending on the MSVC compiler
double emitting operation depending on the compiler version

THRIFT-4474: Use PSR-4 autoloader by default

Client: php

This closes apache#1479

THRIFT-4516: Fix "go vet" warnings for Go 1.10

Client: go

THRIFT-4419: Fix bug where framed messages > 4K could not be read

Client: rs

This closes apache#1508

emit_double_as_string refactored

unnecessary carat has been removed
ozymaxx pushed a commit to ozymaxx/thrift that referenced this pull request Mar 20, 2018
- testing double rendering in JS, Java, Python and C++

- a comment added (about setprecision)
- BOOST_TEST -> BOOST_CHECK

double rendering in erlang, fixed (some additional tests added)

less than operator - correction in erlang test

style changes, some fixes in erlang test

some fixes in erlang test

some fixes in erlang test - no need for including lists library

more style changes - something overlooked

expected 2 lines before main - fixed (not seen locally)

noticed that test cases should be added manually in Python

DoubleConstantTest thrift compilation directive is now given in generate.cmake

render_double_to_string -> emit_double_as_string

added assertion error messages to see the problems inside Java tests in more detail

RDP access to AppVeyor build workers

THRIFT-82: Add Common Lisp support
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412

THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs

THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests

THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation

THRIFT-4498: add phpcs back
Client: php

This closes apache#1498

THFIFT-4486: golang: support https from generated clients
golang: don't generate -remote.go clients when there are no functions
golang: support for http headers in -remote clients
golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol
Client: golang

This closes apache#1488

duplicate key problem in appveyor settings

ignore the test cases with (-+)1.7e+308 in Java tests

ignore the test cases with (-+)1.7e+308 in Java tests - 2

pyflakes8 style changes

disabling the test named 'TestRenderedDoubleConstants' on machines with the MSVC2010 configuration

msvc.profile parameter existence check

passing "msvc profile" on build stage

"MSVC_PROFILE" as a cache variable

wrong usage of cache variables

let's see whether the MSVC_PROFILE parameter is passed correctly

let's see whether the MSVC_PROFILE parameter is passed correctly

let's see whether TestRenderedDoubleConstants is excluded or not

msvc.profile access - fixed

msvc.profile access - fixed

THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib,
test for serialization of nested list,
run all tests when building js lib
Client: js

This closes apache#1457

THRIFT-4505: Fix python build on Vagrant Windows boxes
Client: py

This closes apache#1499

THRIFT-4506: fix use of assert for correctness in Java SASL negotiation
Client: java

Updated the languages matrix markdown documentation.

Minor tweaks to the language matrix markdown documentation.

THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image

THRIFT-4354: fix php socket blocking behavior
Patch: Robert Lu <[email protected]>
Client: php

This closes apache#1384

THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs

THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build

THRIFT-4480 - Handle seqid = 0
Client: js

This closes apache#1487

THRIFT-4509: remove nodejs browser test
Client: nodejs

This closes apache#1501

fix wrong document @param in TBase.h
Client: cocoa

This closes apache#1504

THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types
Client: js

This closes apache#1503

THRIFT-4495: Allow `undefined` for non-required Erlang records fields.
Client: erl

As of Erlang 19, the dialyzer static type-analysis tool no longer
implicitly adds `undefined` to the allowed types for a field.  This
means that dialyzer will now complain about any non-required fields
that are not explicitly initialed when creating a new record.

This closes apache#1494

THRIFT-4497: Use `map()` field type for Erlang type for map struct fields.
Client: erl

The Thrift Erlang code generator previously generated fields with the
`#{}` Erlang type for maps fields.  In the Erlang type specification
languages, however, `#{}` specifically means an empty map.  This commit
fixes the code to emit `map()` instead, which means the maps keys and
values may be of any type.

It would be possible to emit a field type such as
`${keytype() => maptype()}`, but this commit does not do that.

This closes apache#1495

THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross
Client: cpp

THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues
Client: cpp

This closes apache#1497

THRIFT-4337: Able to set keyStore and trustStore as InputStream in the
TSSLTransportFactory.TSSLTransportParameters
Client: java

This closes apache#1486

THRIFT-4515: fix windows build
Client: cpp

THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility.
Client: go

This closes apache#1459

THRIFT-4517: disable ocaml in xenial because it is broken

THRIFT-4337: fix javadoc build error related to changes

THRIFT-4508: remove cygwin64 build in favor of MSVC2013

TestRenderedDoubleConstants (in Java/Python) has been disabled on MSVC2013 builders

THRIFT-4509:
* switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn
* update grunt to 1.0.2
* always use local copy of jquery and qunit
* commit the package-lock files for npm keep versions stable
Client: js

This closes apache#1506

THRIFT-4509: add jslint and fix build script output

THRIFT-4429: Make TThreadPoolServer.executorService_ available in
inherited classes and refactor methods to be able customization
Client: java

This closes apache#1485

THRIFT-4513: Fix thrift compiler to generate constants in stable order.

This closes apache#1505

reverting changes on disabling a test depending on the MSVC compiler
double emitting operation depending on the compiler version

THRIFT-4474: Use PSR-4 autoloader by default

Client: php

This closes apache#1479

THRIFT-4516: Fix "go vet" warnings for Go 1.10

Client: go

THRIFT-4419: Fix bug where framed messages > 4K could not be read

Client: rs

This closes apache#1508

emit_double_as_string refactored

unnecessary carat has been removed

THRIFT-82: Add Common Lisp support
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412

THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs

THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests

THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation

THRIFT-4498: add phpcs back
Client: php

This closes apache#1498

THFIFT-4486: golang: support https from generated clients
golang: don't generate -remote.go clients when there are no functions
golang: support for http headers in -remote clients
golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol
Client: golang

This closes apache#1488

THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib,
test for serialization of nested list,
run all tests when building js lib
Client: js

This closes apache#1457

THRIFT-4505: Fix python build on Vagrant Windows boxes
Client: py

This closes apache#1499

THRIFT-4506: fix use of assert for correctness in Java SASL negotiation
Client: java

Updated the languages matrix markdown documentation.

Minor tweaks to the language matrix markdown documentation.

THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image

THRIFT-4354: fix php socket blocking behavior
Patch: Robert Lu <[email protected]>
Client: php

This closes apache#1384

THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs

THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build

THRIFT-4480 - Handle seqid = 0
Client: js

This closes apache#1487

THRIFT-4509: remove nodejs browser test
Client: nodejs

This closes apache#1501

fix wrong document @param in TBase.h
Client: cocoa

This closes apache#1504

THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types
Client: js

This closes apache#1503

THRIFT-4495: Allow `undefined` for non-required Erlang records fields.
Client: erl

As of Erlang 19, the dialyzer static type-analysis tool no longer
implicitly adds `undefined` to the allowed types for a field.  This
means that dialyzer will now complain about any non-required fields
that are not explicitly initialed when creating a new record.

This closes apache#1494

THRIFT-4497: Use `map()` field type for Erlang type for map struct fields.
Client: erl

The Thrift Erlang code generator previously generated fields with the
`#{}` Erlang type for maps fields.  In the Erlang type specification
languages, however, `#{}` specifically means an empty map.  This commit
fixes the code to emit `map()` instead, which means the maps keys and
values may be of any type.

It would be possible to emit a field type such as
`${keytype() => maptype()}`, but this commit does not do that.

This closes apache#1495

THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross
Client: cpp

THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues
Client: cpp

This closes apache#1497

THRIFT-4337: Able to set keyStore and trustStore as InputStream in the
TSSLTransportFactory.TSSLTransportParameters
Client: java

This closes apache#1486

THRIFT-4515: fix windows build
Client: cpp

THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility.
Client: go

This closes apache#1459

THRIFT-4517: disable ocaml in xenial because it is broken

THRIFT-4337: fix javadoc build error related to changes

THRIFT-4508: remove cygwin64 build in favor of MSVC2013

THRIFT-4509:
* switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn
* update grunt to 1.0.2
* always use local copy of jquery and qunit
* commit the package-lock files for npm keep versions stable
Client: js

This closes apache#1506

THRIFT-4509: add jslint and fix build script output

THRIFT-4429: Make TThreadPoolServer.executorService_ available in
inherited classes and refactor methods to be able customization
Client: java

This closes apache#1485

THRIFT-4513: Fix thrift compiler to generate constants in stable order.

This closes apache#1505

THRIFT-4474: Use PSR-4 autoloader by default

Client: php

This closes apache#1479

THRIFT-4516: Fix "go vet" warnings for Go 1.10

Client: go

THRIFT-4419: Fix bug where framed messages > 4K could not be read

Client: rs

This closes apache#1508

THRIFT-4523 TStreamTransportImpl.GetOutputStream broken
Client: Delphi
Patch: Jens Geyer

THRIFT-4515: cross server test improvement: graceful test server shutdown

This closes apache#1509

THRIFT-82: move to SBCL 1.4.5 (hopefully will address 1.4.4 sporadic build errors)
danielhtshih pushed a commit to danielhtshih/thrift that referenced this pull request Mar 20, 2018
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412
danielhtshih added a commit to danielhtshih/thrift that referenced this pull request Mar 20, 2018
THRIFT-4490 Allow a default service as fallback for multiplex processors connected by old clients
Client: Delphi
Patch: Jens Geyer

THRIFT-4492 protected ExceptionType type member of TApplicationException cannot be accessed
Client: C#
Patch: Jens Geyer

This closes apache#1493

THRIFT-4352: update artful to use haxe 3.4.4 which fixes a core in haxe

THRIFT-82: Add Common Lisp support
Client: cl

There's framed and buffered socket transport, binary protocol, multiplex, simple
server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only
SBCL is supported for now.

This closes apache#1412

THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs

THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests

THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation

THRIFT-4498: add phpcs back
Client: php

This closes apache#1498

THFIFT-4486: golang: support https from generated clients
golang: don't generate -remote.go clients when there are no functions
golang: support for http headers in -remote clients
golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol
Client: golang

This closes apache#1488

Add nodejs test cases for unix domain socket

Indicate that nodejs now supports unix domain socket

THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib,
test for serialization of nested list,
run all tests when building js lib
Client: js

This closes apache#1457

THRIFT-4505: Fix python build on Vagrant Windows boxes
Client: py

This closes apache#1499

THRIFT-4506: fix use of assert for correctness in Java SASL negotiation
Client: java

Updated the languages matrix markdown documentation.

Minor tweaks to the language matrix markdown documentation.

THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image

THRIFT-4354: fix php socket blocking behavior
Patch: Robert Lu <[email protected]>
Client: php

This closes apache#1384

THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs

THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build

THRIFT-4480 - Handle seqid = 0
Client: js

This closes apache#1487

move the newly supported socket to the correct programming lnguage

THRIFT-4509: remove nodejs browser test
Client: nodejs

This closes apache#1501

fix wrong document @param in TBase.h
Client: cocoa

This closes apache#1504

THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types
Client: js

This closes apache#1503

THRIFT-4495: Allow `undefined` for non-required Erlang records fields.
Client: erl

As of Erlang 19, the dialyzer static type-analysis tool no longer
implicitly adds `undefined` to the allowed types for a field.  This
means that dialyzer will now complain about any non-required fields
that are not explicitly initialed when creating a new record.

This closes apache#1494

THRIFT-4497: Use `map()` field type for Erlang type for map struct fields.
Client: erl

The Thrift Erlang code generator previously generated fields with the
`#{}` Erlang type for maps fields.  In the Erlang type specification
languages, however, `#{}` specifically means an empty map.  This commit
fixes the code to emit `map()` instead, which means the maps keys and
values may be of any type.

It would be possible to emit a field type such as
`${keytype() => maptype()}`, but this commit does not do that.

This closes apache#1495

THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross
Client: cpp

THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues
Client: cpp

This closes apache#1497

THRIFT-4337: Able to set keyStore and trustStore as InputStream in the
TSSLTransportFactory.TSSLTransportParameters
Client: java

This closes apache#1486

THRIFT-4515: fix windows build
Client: cpp

THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility.
Client: go

This closes apache#1459

THRIFT-4517: disable ocaml in xenial because it is broken

THRIFT-4337: fix javadoc build error related to changes

THRIFT-4508: remove cygwin64 build in favor of MSVC2013

THRIFT-4509:
* switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn
* update grunt to 1.0.2
* always use local copy of jquery and qunit
* commit the package-lock files for npm keep versions stable
Client: js

This closes apache#1506

THRIFT-4509: add jslint and fix build script output

THRIFT-4429: Make TThreadPoolServer.executorService_ available in
inherited classes and refactor methods to be able customization
Client: java

This closes apache#1485

THRIFT-4513: Fix thrift compiler to generate constants in stable order.

This closes apache#1505

remove uds type; use --domain-socket only

implement createHttpUDSConnection API
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants