Commit Graph

434 Commits

Author SHA1 Message Date
Joris Vink 0c21c08b6d Hook orbit into the build 2014-08-01 10:46:50 +02:00
Joris Vink a2a87adf19 Euhm, revert last commit. 2014-08-01 10:33:26 +02:00
Joris Vink cee7d34020 Properly check for EWOULDBLOCK as well 2014-08-01 10:32:31 +02:00
Joris Vink a047758df1 Note the BENCHMARK option in README 2014-08-01 10:30:29 +02:00
Joris Vink c2e4d55235 Add a BENCHMARK compile option which compiles without OpenSSL.
Personally use this for testing Kore its performance without
letting the OpenSSL stack get in the way too much.

Note that it leaves data structures as is, and just removes
any calls to OpenSSL (and removes the linking vs OpenSSL).
2014-08-01 10:22:32 +02:00
Joris Vink 8ff870a352 Remove the ability to pass libs on the cli again.
Sorry, this no longer makes sense in terms of what
orbit is suppose to be doing.
2014-08-01 09:39:09 +02:00
Joris Vink d6f0b8f8fe Start kore from inside the rootdir when doing orbit run 2014-08-01 09:05:14 +02:00
Joris Vink 65a28e3db3 Allow orbit to build things under OSX 2014-07-31 23:19:18 +02:00
Joris Vink 7a038fce91 Add initial orbit code.
Orbit is a tool used to create/build/run kore code
in a more straight forward way.

Right now, orbit can do the following:

orbit create myapp
orbit build myapp
orbit run myapp

All in the motivation of making it easier to get
started with building Kore libraries and making
life easier on the people hacking Kore things.
2014-07-31 23:12:14 +02:00
Joris Vink b17eefde1f Allow developers to pass the lib to load on the cli.
When running in -f (foreground) you can now specify
the library Kore needs to load on the command line:

kore -fnc module.conf myapp.so

This has the benefit that your configuration file no
longer needs the load directive when hacking on your code.

Note that you can still specify load in your config file
regardless, if you so chose.

All of this is being done in order to try and move away
from the backwards way of getting up and running with Kore.
2014-07-31 17:15:51 +02:00
Joris Vink 105fb272a0 In foreground mode don't show kore_log() in fatal 2014-07-31 15:12:05 +02:00
Joris Vink 20e2447c90 When running Kore in foreground mode, log to stdout 2014-07-31 14:26:51 +02:00
Joris Vink ef49a0d4e1 Don't use pidfile if we're in foreground mode 2014-07-31 14:02:33 +02:00
Joris Vink a664e2a655 Make some configuration options fallback to defaults.
* If no runas_user is given, use current user.
* If no chroot path is given, don't complain if -n
* If no workers is set, use the default 1.
2014-07-31 13:59:42 +02:00
Joris Vink 2d9940e197 Add foreground 2014-07-31 13:43:37 +02:00
Joris Vink 9b76afc5fb Whoops, remove KORE_BENCHMARK that sneaked in 2014-07-31 13:35:39 +02:00
Joris Vink 8812d6989a Allow Kore to be started in foreground mode (-f)
Sending SIGINT or Ctrl-c will reap all workers and
exit again. Useful for development.
2014-07-31 13:27:04 +02:00
Joris Vink 9c4e7c888f kill newline 2014-07-31 12:27:41 +02:00
Joris Vink 7fd936bb94 Add coverity badge, cause why not 2014-07-31 10:41:30 +02:00
Joris Vink 22e1e1c425 Add worker_rlimit_nofiles as a configurable option. 2014-07-31 09:14:03 +02:00
Joris Vink 26d4d5d63b Rework the accept lock.
Kore no longer passes the accept lock to the "next in line"
worker but instead all workers will attempt to grab the lock
if they can.

Also remember if we had the lock previous iteration of the
event loop and don't constantly disable/enable the accepting sockets.

Makes Kore scale even better across multiple cpu's.
2014-07-30 15:20:09 +02:00
Joris Vink 83f890e89e No longer preallocate worker_max_connections for the http pools.
Instead use 10% of worker_max_connections up to a maximum of 1000.
2014-07-30 13:20:27 +02:00
Joris Vink e1dff2e051 We've become a framework really 2014-07-30 09:43:29 +02:00
Joris Vink 9b13f57711 Add 1.2 release date + spelling 2014-07-30 09:14:36 +02:00
Joris Vink efe732cc1f Update readme 2014-07-30 09:12:59 +02:00
Joris Vink cb3322cd9f Make accesslogs optional 2014-07-30 09:11:21 +02:00
Joris Vink 3f853a79ce Add example configuration under conf/ 2014-07-30 09:02:34 +02:00
Joris Vink a895250e97 Make sure l and c are initialized 2014-07-30 09:00:19 +02:00
Joris Vink fe0149ad24 Have workers always pass the accept lock after handling their events.
Provides a nice performance boost when scaling across multiple cpu's.
2014-07-29 13:14:34 +02:00
Joris Vink 478c008c99 Missing parts from last commit 2014-07-28 23:35:12 +02:00
Joris Vink 8313a31eba If we do not own the accept lock, reduce timeout for platform wait.
This way multiple workers won't stall when passing the accept lock
around for at maximum 100 ms (time spent in epoll/kqueue waits).
2014-07-28 23:27:58 +02:00
Joris Vink ea07ddef34 Properly send out early HTTP errors via the appropriate SPDY stream 2014-07-27 21:59:25 +02:00
Joris Vink c1bc0ce13f Check return value for pthread_mutex_init() 2014-07-27 21:47:18 +02:00
Joris Vink 257486d74a Remove req from http_requests before other things 2014-07-27 21:01:14 +02:00
Joris Vink 8c22f0f004 In http_request_free() remove the req from the owner connection. 2014-07-27 21:00:17 +02:00
Joris Vink c9f39c9c9d Set module->ocb to NULL 2014-07-22 10:47:12 +02:00
Joris Vink fbfabf6f04 Add missing stdint.h header 2014-07-22 09:53:44 +02:00
Joris Vink 341a111a2f Rework kore_strtonum64() so we can catch overflows for u_int64_t.
Seems that strtoull() if a negative string is supplied rather just
wraps the value, which I don't want here.
2014-07-21 01:51:51 +02:00
Joris Vink 25cf8dc659 Wrong comparison in kore_strtonum64(), fix. 2014-07-21 01:19:39 +02:00
Joris Vink d4cec3427e Properly convert 64bit parameters.
Introduces kore_strtonum64() for just this purpose as to
not taint kore_strtonum() too much.
2014-07-21 01:16:03 +02:00
Joris Vink ac345410dc Add support for fetching parameters as 64bit integers. 2014-07-20 00:43:32 +02:00
Joris Vink 1d8fc99920 Add glue to build task_curl example under osx 2014-07-18 16:09:15 +02:00
Joris Vink e0f30e1ae7 Fix broken include paths and lib paths 2014-07-18 16:05:19 +02:00
Joris Vink a5806d91f8 Pull in pg_config.h correctly, fixes compilation for pgsql under OpenBSD 2014-07-18 15:59:07 +02:00
Joris Vink c3ea0e9e66 Include pthread.h in tasks.h, fixes compilation under OpenBSD 2014-07-18 15:51:13 +02:00
Joris Vink 86434a57c1 Bump to 1.2-release in preparation of the actual release 2014-07-17 10:22:45 +02:00
Joris Vink 5d4f956f69 Rewrite some comments as task behaviour has changed 2014-07-08 09:12:05 +02:00
Joris Vink 19d146a09e Introduce http_request_sleep() and http_request_wakeup().
These 2 functions can be used to move an HTTP request
from/to the active http_requests list. Effectively
putting them to "sleep" or "waking them up".

Sprinkle this through the pgsql and task code.

If used correctly greatly reduces overhead for
managing sleeping tasks.
2014-07-04 16:51:19 +02:00
Joris Vink 7b6c03ca5b Task improvements.
Synchronize access to state/result properly so one
can access these from inside the task as well.

Introduce KORE_TASK_STATE_ABORT which will be set
when a task needs to be abort. You can use this
to create tasks that run in a loop until aborted.
2014-07-04 11:28:17 +02:00
Joris Vink baac693f2f Change type for data to void * 2014-07-04 11:25:05 +02:00