Commit Graph

1054 Commits

Author SHA1 Message Date
David Reiss
ddffed5ff4 Make invocation of 'find' in alterl Makefile more compatible
Summary: find . -name instead of find -name

Test Plan: still works, now works on Darwin too


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666452 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:02:31 +00:00
David Reiss
2fe905e366 adding socket options to thrift client
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666451 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:02:23 +00:00
David Reiss
e5a4d0c576 erlang: move thrift_client connect logic into a handle_call and call it in start_link
Summary: a failure in thrift_client:init would cause the invoker to exit, but we'd rather just return {error, Error} from start_link and let the invoker crash if it wants

Reviewed By: eletuchy

Test Plan: makes mouths happy

Revert Plan: ok


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666450 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:02:10 +00:00
David Reiss
672968d6e9 erlang thrift_client: wrap gen_tcp:connect in a catch ... leave nothing to chance
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666449 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:02:03 +00:00
David Reiss
c920faf0f0 erlang thrift_client will return {stop, Error} in start_link on a gen_tcp:connect error rather than exiting
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666448 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:01:56 +00:00
David Reiss
914ebb4b69 Erlang: add framed_transport and non-strict binary_protocol
- thrift_client now takes as its fourth parameter Options: framed, strict_{read,write}, connect_timeout (P.S. fourth param used to be Timeout)
- binary protocol now takes options: strict_{read,write}
- buffers in framed and buffered transport are now iolists and not reversed lists of binaries
- rename buffer in buffered transport "write_buffer" to match framed transport


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666447 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:01:48 +00:00
David Reiss
1af1868457 replacing an io format with error_logger call
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666446 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:01:36 +00:00
David Reiss
4ec777e998 make read(string) return a binary rather than a list
tested server side ... still need to test client side


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666445 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:01:29 +00:00
David Reiss
6f1cd53a1e small buffered_transport and client improvements
moved close of wrapped transport into terminate/2
made thrift_client:close into a cast rather than call


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666444 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:01:21 +00:00
David Reiss
4fd7818efa add optional (connect) Timeout parameter to thrift_client:start_link
Summary: will fail ungracefully if the timeout is hit, or anything bad happens.  will fix.

Reviewed By: eletuchy

Test Plan: did some stuff with it


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666443 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:01:13 +00:00
David Reiss
af652d2f51 removing more debug_rlogs
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666442 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:01:06 +00:00
David Reiss
4cf5a6a81f ok: good to go
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666441 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:59 +00:00
David Reiss
190d769481 don't do an exit(normal)
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666440 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:52 +00:00
David Reiss
464e300054 add a close to thrift_client to close the underlying transport
Reviewed By: eletuchy

Notes: the thrift_buffered_transport exits with {normal,{gen_server,call,[Pid,close]}} right now, but it should only exit with normal.  marked todo.


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666439 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:45 +00:00
David Reiss
06272addb1 don't need to use gen_server:reply
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666438 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:37 +00:00
David Reiss
80664fe233 changing thrift_processor shutdown to compy with proc_lib standards
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666437 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:30 +00:00
David Reiss
b7c8802d36 allow configurable recv_timeouts
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666435 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:20 +00:00
David Reiss
919a801a28 removing two more debug messages
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666434 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:12 +00:00
David Reiss
7255ed4c46 removed extra debugging statements
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666433 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:00:04 +00:00
David Reiss
80862313de oops forgot a file
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666432 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:59:55 +00:00
David Reiss
c11734efac mochiweb style avoidance of gen_tcp:controlling_process
TODO: remove extraneous debug_rlogs


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666431 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:59:48 +00:00
David Reiss
a5a53dbfcc Fix thrift_buffered_transport leak in erl bindings
Summary:
  - Was leaking processes when the client cleanly disconnected since the
    thrift_processor process was exiting with 'normal' Reason. Changed it
    to 'protocol_closed'

Test plan:
  - Telnet to thrift service port and close (^]close) before the read timeout
    elapses. Verify that erlang:system_info(process_count) does not increase
    after doing this multiple times.


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666430 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:59:34 +00:00
David Reiss
c525745c0e if instead of case for a guard comparison
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666429 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:59:27 +00:00
David Reiss
3b9c342fa4 fixing behavior declaration for thrift_transport
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666428 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:59:19 +00:00
David Reiss
11d855c837 micro optimization in thrift_processor
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666427 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:59:12 +00:00
David Reiss
6b3e40fd73 use type-appropriate methods for size and map for dict and set structures
Reviewed By: cpiro

Test Plan: TODO

Revert Plan: sure


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666426 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:59:03 +00:00
David Reiss
6563f34263 adding make dialyzer for fun and profit
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666425 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:55 +00:00
David Reiss
225db732c2 allow writing binaries in thrift_binary_protocol
Summary: they come packed in {string, Bin} so pull them out


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666424 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:48 +00:00
David Reiss
81b473b4a1 Fix warning in generated source for alterl bindings
Summary:
  - Was previously including both the fall-through to the base service as well as the "dummy" fallthrough function clause. This generated a warning like:

  gen-erl/redacted_thrift.erl:134: Warning: this clause cannot match because a previous clause at line 132 always matches

  Now we only include the "dummy" function if there is no base class to fall through to.

Test plan: Generated tutorial.thrift and shared.thrift, compiled without warnings

Notes: It's probably possible to have a circular inheritance graph, which would cause an infinite loop at runtime. Do we care about this?


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666423 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:41 +00:00
David Reiss
1d8b752971 Implement inheritance in the alterl generator
Summary:
  - Simply forwards function_info calls through to the base service

Test plan: cpiro will test it?


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666422 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:33 +00:00
David Reiss
55ff70f8d6 Implement TApplicationException handling in alt_erl client
Summary:
  Throws a 'TApplicationException' record

Test plan:
  Changed cpp TestServer so that if testException is called with "ApplicationException" as an argument, it throws a TException which is serialized back as an EXCEPTION type message


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666421 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:25 +00:00
David Reiss
702019c914 Add a README to alterl which shows how to use thrift_client
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666420 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:13 +00:00
David Reiss
8cadf3e0fa Remove extra debugging from thrift_client.erl
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666419 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:07 +00:00
David Reiss
2c534031ee Add a thrift client to alterl bindings
Test plan:
  f(), {ok, C} = thrift_client:start_link("localhost", 9090, thriftTest_thrift).
  thrift_client:call(C, testAsync, [1234]).
  thrift_client:call(C, testVoid, []).
  thrift_client:call(C, testList, [[1,2,3,4,5]]).

  - Should write an actual test suite that exercises all of ThriftTest but I'm lazy right now


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666418 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:58:00 +00:00
David Reiss
8cf694d62d Change alterl thrift_server to use non-blocking TCP calls and properly set the processor as the controlling process for the client sockets.
Summary:
  - Removes the non-OTP "acceptor" process
  - The processor becomes the socket's controlling process instead of the transport, which is kind of messy, but it means we don't have to make a process for the socket_transport.
  - See http://www.trapexit.org/Building_a_Non-blocking_TCP_server_using_OTP_principles for non-blocking server info

Test plan:
  - Ran ThriftTest and StressTest


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666417 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:57:54 +00:00
David Reiss
5541d65864 Fix thrift_processor so that exceptions thrown in async void functions don't get serialized
Test plan: Made testAsync() in test_server always crash with a badmatch 1 = 0,
           and made sure that the badmatch was caught and logged but not
	   serialized back to the client


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666416 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:57:42 +00:00
David Reiss
cdf8d1994a Implement async_void in alterl bindings
Summary:
  - reply_type for async void functions is now async_void instead of
    the empty struct definition
  - async void functions should return "ok". otherwise the processor
    will crash and the connection will be killed. Is this behaviour
    expected?

Test Plan: tested using testAsync() in ThriftTest. Didn't used to work
           but works now


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666415 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:57:35 +00:00
David Reiss
fc44c41253 Comment out some noisy output from thrift_processor and thrift_server
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666414 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:57:19 +00:00
David Reiss
77f6f7f567 Add build/ dir for alterl bindings and remove them from .gitignore
Summary: These files are copied from the erl/build dir. I don't know why
         I accidentally gitignored them before.


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666413 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:57:11 +00:00
David Reiss
abded23ed4 Implement testAsync for python tests
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666412 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:57:01 +00:00
David Reiss
c85a695588 Add mkdir ${TARGET_DIR} to erl test Makefile since the empty ebin/ dir doesn't stay in git
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666411 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:56:55 +00:00
David Reiss
f4761e324e Fix thrift_server to create transport and protocol inside the processor rather than inside the acceptor.
This fixes a process and file descriptor leak -- previously, the thrift_buffered_transport process was linked to the acceptor, which never died.


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666409 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:56:49 +00:00
David Reiss
da07067489 Fix error logging to actually print error and stack trace for caught errors
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666408 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:56:42 +00:00
David Reiss
920959a655 Handle crashes/errors in the processor by sending back a serialized exception
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666407 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:56:35 +00:00
David Reiss
c308d6989e Add thrift_server:stop/1 to stop a running server
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666405 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 00:56:25 +00:00
David Reiss
60b50cf385 Add stress test implementation for new Erlang
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666389 13f79535-47bb-0310-9956-ffa450edef68
2008-06-10 22:59:10 +00:00
David Reiss
cc10b8a80c Don't actually ignore all makefiles in .gitignore -- erl makefiles are important!
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666388 13f79535-47bb-0310-9956-ffa450edef68
2008-06-10 22:59:02 +00:00
David Reiss
c0cce962ac Oops - forgot to add the test/erl/Makefile to git
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666387 13f79535-47bb-0310-9956-ffa450edef68
2008-06-10 22:58:58 +00:00
David Reiss
90b4083d4c Implement buffered transport
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666386 13f79535-47bb-0310-9956-ffa450edef68
2008-06-10 22:58:52 +00:00
David Reiss
57b4d9a4ac Test server for erlang
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666385 13f79535-47bb-0310-9956-ffa450edef68
2008-06-10 22:58:39 +00:00