Commit Graph

53948 Commits

Author SHA1 Message Date
Tomasz Grabiec
1cfcb5b09c Add column_definition.id
The ID will be used in mutation model.
2015-01-29 18:55:20 +01:00
Tomasz Grabiec
4d41d10d99 Extract schema to a separate class 2015-01-29 15:53:05 +01:00
Tomasz Grabiec
bf60d82dd0 types: Introduce tuple_type 2015-01-29 15:02:27 +01:00
Tomasz Grabiec
f61d637cdb types: Mark bytes_type as byte order comparable 2015-01-29 15:02:27 +01:00
Tomasz Grabiec
22b7010c6d types: Introduce non-polymorphic serialization/deserialization helper functions
All usages I could find which deserialize value are
non-polymorphic. So there is no need to use boost::any() indirection
and polymorphic calls in most, if not all, cases.

Let the type class define deserialize_value/serialize_value
non-polymorphic members which work direclty on "value_type" and not
boost::any.
2015-01-29 15:02:27 +01:00
Tomasz Grabiec
37ef4bf635 types: Rename simple_compare to serialized_compare
To be in line with serialized_equal and serialized_hash
2015-01-29 15:02:27 +01:00
Tomasz Grabiec
65d2707794 types: Add support for equality and hashing of serialized values 2015-01-29 15:02:27 +01:00
Tomasz Grabiec
c14891adfd types: Mark is_byte_order_comparable() as const 2015-01-29 15:02:26 +01:00
Tomasz Grabiec
b0215f0fdc types: Mark string_type as byte order comparable 2015-01-29 15:02:26 +01:00
Tomasz Grabiec
ddcc750210 types: Mark date_type as byte order comparable and compare as such 2015-01-29 15:02:26 +01:00
Tomasz Grabiec
17b9babd91 Extract types related stuff from database.{cc,hh} to types.{cc,hh} 2015-01-29 15:02:19 +01:00
Tomasz Grabiec
c75468160a db: Use memcmp for comparing bytes
My bench-lie shows it's:
  - 1.2x faster for values of size 4 bytes
  - 4x faster for values of size 16 bytes
  - 9x faster for values of size 64 bytes
2015-01-29 14:43:36 +01:00
Gleb Natapov
89763c95c9 core: optimise timer completions vs periodic timers
The way periodic timers are rearmed during timer completion causes
timer_settime() to be called twice for each periodic timer completion:
once during rearm and second time by enable_fn(). Fix it by providing
another function that only re-adds timer into timers container, but do
not call timer_settime().
2015-01-29 12:43:28 +02:00
Avi Kivity
94e01e6d0e tests: exit after timertest ends 2015-01-29 12:24:03 +02:00
Avi Kivity
070eb7d496 tests: serialize timer tests
Otherwise the output gets interspersed.
2015-01-29 12:20:39 +02:00
Avi Kivity
59c0d7e893 smp: fix work item deletion
Delete it after completion, not after responding.
2015-01-29 12:14:05 +02:00
Gleb Natapov
bcae5f2538 smp: fix memory leak in smp queue
Delete completed items. Fixes regression from ff4aca2ee0.
2015-01-29 11:49:24 +02:00
Avi Kivity
42bc73a25d dpdk: initialize _tx_burst_idx
Should fix random segfault.
2015-01-29 11:18:54 +02:00
Asias He
0ab01d06ac tcp: Rework segment arrival handling
Follow RFC793 section "SEGMENT ARRIVES".

There are 4 major cases:

1) If the state is CLOSED
2) If the state is LISTEN
3) If the state is SYN-SENT
4) If the state is other state

Note:

- This change is significant (more than 10 pages in RFC793 describing
  this segment arrival handling).
- More test is needed. Good news is, so far, tcp_server(ping/txtx/rxrx)
  tests and httpd work fine.
2015-01-29 10:59:31 +02:00
Tomasz Grabiec
661bb3d478 tests: Use test_runner to run boost tests 2015-01-29 10:30:14 +02:00
Tomasz Grabiec
a1fecad8cb tests: Introduce test_runner class
It uses app_template to launch seastar framework and can be used from
outside threads to inject tasks.
2015-01-29 10:30:14 +02:00
Tomasz Grabiec
8ad50d6614 core: Add exchanger class 2015-01-29 10:30:13 +02:00
Avi Kivity
b3dd1c8285 Merge branch 'signal' of ../seastar
Simplify signal handling.
2015-01-29 10:08:27 +02:00
Takuya ASADA
9de86ed651 tests: Support tcp_server tests(ping,txtx,rxrx) on tcp_client
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-28 16:26:46 +02:00
Tomasz Grabiec
7a55f21b29 core: Move _timer to an instance field
So that the callback which is set on it and which is allocated on CPU
0 is destroyed on CPU 0 when the clock dies. Otherwise we can attempt
to delete it after the CPU thread is gone if CPU 0 != main thread.
2015-01-28 16:18:55 +02:00
Tomasz Grabiec
8a126b9088 core: Fix use-after-free error on _threads
When smp::configure() is called from non-main thread, then the global
state which it allocates will be destroyed after reactor is destroyed,
because it will be destroyed from the main thread and the reactor will
be destroyed together with the thread which called
smp::configure(). This will result in SIGSEGV when allocator tries to
free _threads vector across CPU threads because the target CPU was
alrady freed. See issue #10.

To fix this, I introduced smp::cleanup() method which should cleanup
all global state and should be called in the same thread in which
smp::configure() was called.

I need to call smp::configure() from non-main thread for integration
with boost unit testing framework.
2015-01-28 16:18:53 +02:00
Tomasz Grabiec
555977f5e6 core: drop BSD license text from resource.hh 2015-01-28 16:18:50 +02:00
Gleb Natapov
ada48a5213 net: use iterators to iterate over circular_buffer in dpdk 2015-01-28 13:49:09 +02:00
Gleb Natapov
bb072fc5c9 core: add iterator for circular_buffer container 2015-01-28 13:49:09 +02:00
Takuya ASADA
be5568ae31 distributed: handle invoke_on with void return value
Signed-off-by: Takuya ASADA <syuu@cloudius-systems.com>
2015-01-28 13:48:18 +02:00
Avi Kivity
38839293f9 reactor: simplify timer handling
Instead of scheduling timer processing to happen in the future,
process timers in the context of the poller (signal poller for high
resolution timer, lowres time poller for low resolution timers).

This both reduces timer latency (not very important) but removes a
use of promise/future in a repetitive task, which is error prone.
2015-01-28 11:29:16 +02:00
Avi Kivity
770214ea63 reactor: simplify signal handling
Signals can be repetitive, and therefore are not a good match for
promise/future, which are single shot.

Replace with plain callbacks.
2015-01-28 11:07:14 +02:00
Avi Kivity
24d5c319a3 httpd: return Server and Date headers
Required by some benchmarks.
2015-01-27 18:57:59 +02:00
Avi Kivity
a9c0fbd8f7 timer: add constructor from callback 2015-01-27 18:57:59 +02:00
Avi Kivity
d5540bf3da Merge branch 'master' into db 2015-01-27 15:09:31 +02:00
Gleb Natapov
5454c79613 core: allocate reactors on each cpu instead of using thread_local variable
I see TLS init function for engine high in cache miss profile. And yes,
this patch has #define.
2015-01-27 14:46:49 +02:00
Gleb Natapov
7a92efe8d1 core: add local engine accessor function
Do not use thread local engine variable directly, but use accessor
instead.
2015-01-27 14:46:49 +02:00
Gleb Natapov
18d212b04e core: do not use separate thread_local variable to track pending signals
Access to thread_local variable goes throw a helper function.
2015-01-27 12:33:10 +02:00
Tomasz Grabiec
3c3e3e5140 cql3: add missing multi-inclusion guard to function_call.hh 2015-01-25 18:46:15 +01:00
Gleb Natapov
74f9f1fdd2 core: prefetch different amount of work items for different queues
Incoming item processing usually takes more work then completion
item processing. Prefetch more completion items to make sure they are
ready before access.
2015-01-25 17:51:21 +02:00
Gleb Natapov
0383459b93 core: prefetch only valid addresses
Prefethcing non mapped address incurs address translation cost.
2015-01-25 17:51:21 +02:00
Gleb Natapov
ff4aca2ee0 core: prefetch work items before processing 2015-01-25 14:48:30 +02:00
Gleb Natapov
b9554219dc core: add prefetch functions 2015-01-25 14:48:30 +02:00
Tomasz Grabiec
506ac2ea9a exceptions: Fix include 2015-01-25 12:51:23 +01:00
Vlad Zolotarov
85b62d8132 memory: hugetlbfs mapping may not be invalid
Turn a condition into an assert() since if a mapping is invalid this may
only mean that we have a bug.

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
2015-01-25 13:22:11 +02:00
Avi Kivity
f957332e64 Merge branch 'tgrabiec/cql3' of github.com:cloudius-systems/seastar-dev into db
cql3 Conversions and Cleanups, from Tomek.
2015-01-25 13:17:07 +02:00
Avi Kivity
be6f8d0613 Merge branch 'master' of github.com:cloudius-systems/seastar into db 2015-01-25 13:16:48 +02:00
Tomasz Grabiec
24227fd933 shared_ptr: Add helpers for hashing shared_ptr<> by value 2015-01-25 13:12:04 +02:00
Raphael S. Carvalho
be7dbcbf50 core: improve reactor::receive_signal()
receive_signal() uses the unordered map _signal_handlers (signo mapped to
signal_handler) to either register a signal or find an existing one, and
from there get a future from the promise associated with that signal.
The problem is _signal_handlers.emplace() being called unconditionally,
resulting in the constructor from signal_handler always being called to
needlessly re-register the same handler, even when the signo is already
inserted in the map.

Signed-off-by: Raphael S. Carvalho <raphaelsc@cloudius-systems.com>
2015-01-25 13:10:55 +02:00
Tomasz Grabiec
903af87e30 cql3: Expose query_options::get_consistency() 2015-01-23 18:45:28 +01:00