Skip to content

Commit

Permalink
Merge branch 'master' into tsdb
Browse files Browse the repository at this point in the history
Conflicts:
	CHANGES
	src/sentry/buffer/redis.py
	src/sentry/manager.py
	src/sentry/models.py
	src/sentry/utils/models.py
	tests/sentry/buffer/redis/tests.py
	tests/sentry/manager/tests.py
	tests/sentry/search/django/tests.py
	tests/sentry/utils/models/tests.py
  • Loading branch information
dcramer committed Nov 27, 2013
2 parents a290086 + 3376025 commit 2d0b7e8
Show file tree
Hide file tree
Showing 353 changed files with 69,395 additions and 27,569 deletions.
2 changes: 1 addition & 1 deletion .gitmodules
@@ -1,3 +1,3 @@
[submodule "src/sentry/static/sentry/bootstrap"]
path = src/sentry/static/sentry/bootstrap
url = git://github.com/twitter/bootstrap.git
url = git://github.com/twbs/bootstrap.git
43 changes: 37 additions & 6 deletions .travis.yml
@@ -1,16 +1,47 @@
language: python
services:
- memcached
- riak
- mysql
- postgresql
- redis-server
- cassandra
python:
- "2.6"
- "2.7"
env:
- DB=sqlite
- DB=mysql
- DB=postgres
matrix:
- DB=sqlite
- DB=mysql
- DB=postgres
global:
- PIP_DOWNLOAD_CACHE=".pip_download_cache"
- WAD_FILES="package.json,Makefile,setup.py"
- WAD_INSTALL_COMMAND="make develop dev-postgres dev-mysql"

# This should be specified with:
# travis encrypt S3_BUCKET_NAME=secretvalue S3_CREDENTIALS=accesskey:secretkey
# - S3_BUCKET_NAME=
# - S3_CREDENTIALS=
- secure: pZ7DtkEu2q/pGINfVT9S+iPRE5ck6mBQmuHTQz3PVXF/UJmpM1LCbC7aqrw4GXWuUhYc50QCnMZJL1yoBORVEfY4nfXHLRc3HMoWE6Srqf0IBDywi6T+UUdLeOYe13EDb4p8WIpnRGlV4WI1WaPXuFlMEdj5tAjlC9ZotLxyVaI=

before_install:
# Use closer nameservers
- printf "nameserver 199.91.168.70\nnameserver 199.91.168.71\n" | sudo tee /etc/resolv.conf

# These need to be here and not in the env hash because they need to be
# evaluated after the virtualenv has been setup
- mkdir -p $PIP_DOWNLOAD_CACHE
- export WAD_ENVIRONMENT_VARIABLES="TRAVIS_PYTHON_VERSION,TRAVIS_NODE_VERSION,WAD_CACHE_PATH"
- export WAD_CACHE_PATH="node_modules,$PIP_DOWNLOAD_CACHE,$VIRTUAL_ENV"

install:
- time script/wad
before_script:
- mysql -e 'create database sentry;'
- psql -c 'create database sentry;' -U postgres
install:
- make develop dev-postgres dev-mysql
- "echo \"create keyspace sentry with replication = {'class' : 'SimpleStrategy', 'replication_factor': 1};\" | cqlsh --cqlversion=3.0.3"
- echo 'create table nodestore (key text primary key, value blob, flags int);' | cqlsh -k sentry --cqlversion=3.0.3
script:
- make lint
- make test-js
Expand All @@ -22,4 +53,4 @@ notifications:
on_success: change
on_failure: change
after_success:
- coveralls
- coveralls
77 changes: 75 additions & 2 deletions CHANGES
@@ -1,3 +1,68 @@
Version 6.4.0
-------------

Some major backend changes are introduced in Sentry 6.3.0.

Search
======

Search has been abstracted from the simple search manager, and now lives within
``sentry.search``. Currently only the Django backend is supported, but some sample
code for Solr Cloud integration is also available.

Event Storage
=============

A new application called ``nodestore`` now manages the event blob data. By default it
uses a Django-based backend (storing each node as a row in a table), however a Riak
backend is included and fully supported.

Additional Changes
==================

- Some initial support for time zones (user setting).
- You can now choose which tag annotations are applied to the event stream via Project Settings -> Tags.
- A new subsystem for handling email is available in ``sentry.utils.email``.
- You can now receive email notifications for notes.
- Charts now show tooltips describing the datapoint.
- JavaScript sourcemaps now support embedded sources.
- Stream annotations can now be customized to show any tags (not just number of users).

Version 6.3.0
-------------

- Most of the db utilities were refactored into ``sentry.db``.
- The user interface now accepts an ``ip_address`` attribute.
- User tracking will now use the ip_address attribute if available.
- ``time_spent`` is now expected to be sent as an integer in milliseconds.
- A new Notes feature is available for leaving comments on an event.

Version 6.2.0
-------------

- Added tracking to which users have seen which groups
- The stream now reflects if you've viewed an event since it was created or regressed.
- The group details page shows other users who have glanced at an event.
- Streams which have recorded user data will now show the number of unique users
an event has happened to.
- Various stream polling fixes and improvements.

Version 6.1.1 (Security Release)
--------------------------------

Sentry 6.1.1 is a security release which patches a remote code execution exploit.

This only affects servers hosted public clients (e.g. raven.js).

The following commit demonstrates the exploit, as well as the patch:

https://github.com/getsentry/sentry/commit/5793c6cac19aeb7d2e19f9a09f4421b771af4306

Version 6.1.0
-------------

- Added Rate Limit controls.

Version 6.0.0
-------------

Expand Down Expand Up @@ -25,8 +90,16 @@ Incompatible Changes
- Nearly all data within an event now has a fixed max size. See client
developer documentation for details.
- Project keys are no longer created for individuals by default
- The Buffer API has been completely changed, and extensions will need to be
updated to reflect the changes.
- sentry.conf.settings has been removed
- LOG_LEVELS, DEFAULT_LOG_LEVEL, and DEFAULT_LOGGER_NAME are no longer configurable.
- DEFAULT_ALERT_PROJECT_THRESHOLD and DEFAULT_ALERT_GROUP_THRESHOLD are no longer
configurable.
- SENTRY_EMAIL_SUBJECT_PREFIX and SENTRY_SERVER_EMAIL are no longer used, and default to
the appropriate Django options.
- SENTRY_CACHE_BACKEND is no longer configurable.
- SENTRY_AUTH_PROVIDERS is now AUTH_PROVIDERS.
- Existing account recovery tokens are no longer valid.
- sentry.utils.router has been removed.

Protocol Version 4
==================
Expand Down
4 changes: 2 additions & 2 deletions MANIFEST.in
@@ -1,6 +1,6 @@
include setup.py README.rst MANIFEST.in LICENSE AUTHORS
recursive-include src/sentry/templates *
recursive-include src/sentry/locale *
recursive-include src/sentry/static/sentry *
recursive-include src/sentry/plugins/*/templates *
recursive-include src/sentry/data *
recursive-include src/sentry/static *
global-exclude *~
28 changes: 17 additions & 11 deletions Makefile
Expand Up @@ -10,23 +10,29 @@ JS_REPORTER = dot

develop: update-submodules
npm install -q
# order matters here, base package must install first
pip install -q -e . --use-mirrors
pip install -q "file://`pwd`#egg=sentry[dev]" --use-mirrors
pip install -q "file://`pwd`#egg=sentry[tests]" --use-mirrors
pip install -q -e . --use-mirrors
make setup-git

dev-postgres:
pip install -q -e . --use-mirrors
pip install -q "file://`pwd`#egg=sentry[dev]" --use-mirrors
pip install -q "file://`pwd`#egg=sentry[postgres]" --use-mirrors
pip install -q -e . --use-mirrors

dev-mysql:
pip install -q -e . --use-mirrors
pip install -q "file://`pwd`#egg=sentry[dev]" --use-mirrors
pip install -q "file://`pwd`#egg=sentry[mysql]" --use-mirrors
pip install -q -e . --use-mirrors

dev-docs:
pip install -q -r docs/requirements.txt --use-mirrors

setup-git:
git config branch.autosetuprebase always
cd .git/hooks && ln -sf ../../hooks/* ./

build: locale

clean:
Expand All @@ -45,16 +51,13 @@ compile-bootstrap-js:
@cat src/bootstrap/js/bootstrap-transition.js src/bootstrap/js/bootstrap-alert.js src/bootstrap/js/bootstrap-button.js src/bootstrap/js/bootstrap-carousel.js src/bootstrap/js/bootstrap-collapse.js src/bootstrap/js/bootstrap-dropdown.js src/bootstrap/js/bootstrap-modal.js src/bootstrap/js/bootstrap-tooltip.js src/bootstrap/js/bootstrap-popover.js src/bootstrap/js/bootstrap-scrollspy.js src/bootstrap/js/bootstrap-tab.js src/bootstrap/js/bootstrap-typeahead.js src/bootstrap/js/bootstrap-affix.js ${STATIC_DIR}/scripts/bootstrap-datepicker.js > ${BOOTSTRAP_JS}
${UGLIFY_JS} -nc ${BOOTSTRAP_JS} > ${BOOTSTRAP_JS_MIN};

install-test-requirements:
pip install -q "file://`pwd`#egg=sentry[tests]"

update-submodules:
git submodule init
git submodule update

test: install-test-requirements lint test-js test-python test-cli
test: develop lint test-js test-python test-cli

testloop: install-test-requirements
testloop: develop
pip install pytest-xdist --use-mirrors
py.test tests -f

Expand All @@ -81,18 +84,21 @@ lint: lint-python lint-js

lint-python:
@echo "Linting Python files"
flake8 --exclude=migrations,src/sentry/static/CACHE/* --ignore=E501,E225,E121,E123,E124,E125,E127,E128 src/sentry
PYFLAKES_NODOCTEST=1 flake8 src/sentry
@echo ""

lint-js:
@echo "Linting JavaScript files"
@${NPM_ROOT}/.bin/jshint src/sentry/ || exit 1
@echo ""

coverage: install-test-requirements
coverage: develop
py.test --cov=src/sentry --cov-report=html

run-uwsgi:
uwsgi --http 127.0.0.1:8000 --need-app --disable-logging --wsgi-file src/sentry/wsgi.py --processes 1 --threads 5

.PHONY: build
publish:
python setup.py sdist bdist_wheel upload

.PHONY: build publish
3 changes: 3 additions & 0 deletions README.rst
Expand Up @@ -7,6 +7,9 @@ Sentry
.. image:: https://coveralls.io/repos/getsentry/sentry/badge.png?branch=master
:target: https://coveralls.io/r/getsentry/sentry?branch=master

.. image:: https://d2weczhvl823v0.cloudfront.net/getsentry/sentry/trend.png
:target: https://bitdeli.com/free


Sentry is a realtime event logging and aggregation platform. It specializes
in monitoring errors and extracting all the information needed to do a proper
Expand Down
5 changes: 3 additions & 2 deletions conftest.py
@@ -1,5 +1,4 @@
from django.conf import settings
import base64
import os
import os.path

Expand Down Expand Up @@ -57,7 +56,8 @@ def __contains__(self, search):
settings.INSTALLED_APPS = tuple(settings.INSTALLED_APPS) + (
'tests',
)
settings.SENTRY_KEY = base64.b64encode(os.urandom(40))
# Need a predictable key for tests that involve checking signatures
settings.SENTRY_KEY = 'abc123'
settings.SENTRY_PUBLIC = False
# This speeds up the tests considerably, pbkdf2 is by design, slow.
settings.PASSWORD_HASHERS = [
Expand All @@ -70,3 +70,4 @@ def __contains__(self, search):
# enable draft features
settings.SENTRY_ENABLE_EXPLORE_CODE = True
settings.SENTRY_ENABLE_EXPLORE_USERS = True
settings.SENTRY_ENABLE_EMAIL_REPLIES = True
Binary file added docs/_static/logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions docs/_themes/kr/layout.html
@@ -0,0 +1,16 @@
{%- extends "basic/layout.html" %}
{%- block extrahead %}
{{ super() }}
{% if theme_touch_icon %}
<link rel="apple-touch-icon" href="{{ pathto('_static/' ~ theme_touch_icon, 1) }}" />
{% endif %}
<link media="only screen and (max-device-width: 480px)" href="{{
pathto('_static/small_flask.css', 1) }}" type= "text/css" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">
{% endblock %}
{%- block relbar2 %}{% endblock %}
{%- block footer %}
<div class="footer">
&copy; Copyright {{ copyright }}.
</div>
{%- endblock %}
19 changes: 19 additions & 0 deletions docs/_themes/kr/relations.html
@@ -0,0 +1,19 @@
<h3>Related Topics</h3>
<ul>
<li><a href="{{ pathto(master_doc) }}">Documentation overview</a><ul>
{%- for parent in parents %}
<li><a href="{{ parent.link|e }}">{{ parent.title }}</a><ul>
{%- endfor %}
{%- if prev %}
<li>Previous: <a href="{{ prev.link|e }}" title="{{ _('previous chapter')
}}">{{ prev.title }}</a></li>
{%- endif %}
{%- if next %}
<li>Next: <a href="{{ next.link|e }}" title="{{ _('next chapter')
}}">{{ next.title }}</a></li>
{%- endif %}
{%- for parent in parents %}
</ul></li>
{%- endfor %}
</ul></li>
</ul>

0 comments on commit 2d0b7e8

Please sign in to comment.