Commit Graph

6692 Commits

Author SHA1 Message Date
Steve Howell f2be9f046a Create /queries page with canned queries for Waseem.
These are some queries on API usage, desktop usage, and
Android usage that would be of interest to Waseem.  These
will eventually be subsumed into /activity, but some interim
data issues may make them easier to keep separate for now.

(imported from commit 697a8496cbf4447d557a3fc89f64c1c4d3e67e70)
2013-10-16 23:40:04 -04:00
Zev Benjamin 890bfe1e95 puppet: Up the Postgres autovacuum_freeze_max_age and related parameters
These parameters collectively determine when very old transaction ids
are replaced with the special FrozenXID transaction id, which is
older than any other transaction id.  Old transaction ids must be
periodically replaced like this to prevent transaction id wraparound.

The only disadvantage of increasing autovacuum_freeze_max_age is
increased disk usage, but a value of 2 billion should only require
500MB, which is pretty trivial.

Since changing autovacuum_freeze_max_age requires a restart, we will
still have to issue a manual VACUUM, with vacuum_freeze_min_age and
vacuum_freeze_table_age temporarily set to lower values.

(imported from commit 22f9ecdfc5b6a07918771d541192aa6d6369878a)
2013-10-16 21:44:17 -04:00
Jessica McKellar 387bdb01c2 twitter-search-bot: update the path to the bot in the help.
(imported from commit c1097685870029d9f6e7d0ba5a9e61912cf00885)
2013-10-16 21:26:01 -04:00
Jessica McKellar 6e6e054024 twitter-search-bot: add the version requirement for twitter-python to the help.
(imported from commit dbee40c3081e50b07a80a297691acf98f4aaf89a)
2013-10-16 21:26:01 -04:00
Jessica McKellar 8bc6e61071 twitter-search-bot: Consistently capitalize Twitter.
(imported from commit 1c8f0b526d0112c05c91b69a77081ec361da538c)
2013-10-16 21:26:01 -04:00
Jessica McKellar cd62c77e08 integrations: add the Twitter search bot.
(imported from commit 9afca400889baae3b90b53cbe1efa8ccf7b798a7)
2013-10-16 21:26:01 -04:00
Leo Franchi 753aace8f8 Add a basic statistics module to analyze active user engagement
(imported from commit 4d7a21b9a09b97c88a80d0446fb16e53012507c9)
2013-10-16 18:39:44 -04:00
Leo Franchi 15695ebfa3 Add zulip-events-slowqueries to our zulip-workers group in supervisor so it is restarted
(imported from commit bcb4037c3323f0be6e671365b6ef7eec47030915)
2013-10-16 15:33:35 -04:00
Jessica McKellar d4e2cdd09e Determine DEPLOYED only based on /etc/humbug-server.
The other zulip.net check was for a transition to using that file that
has now completed.

(imported from commit 991d9165515b5611865957255f9da7a69a75fd7b)
2013-10-16 13:18:49 -04:00
Leo Franchi f7386c3f58 [schema] Add support for keeping track of iOS APNS device tokens
In order to support iOS Push Notifications, we need to keep track
of a device's unique APNS Token. These are delivered to our iOS
code after registering for remote notifications

(imported from commit bbe34483e1380dc20a1c93e3ffa1fcfdb9087e67)
2013-10-16 12:54:28 -04:00
Steve Howell 5904f2eb8d Avoid locks between logging slow queries.
Use the commit_on_success() context manager around the call
to internal_send_message() inside of SlowQueryWorker's polling
loop, so that the pending SELECT statement from
get_status_dict_by_realm() gets committed.  If we don't do
this, postgres will hold locks on zerver_userprofile, and other
tables, for a long time, which can interfere with migrations.

This is an interim solution until we switch postgres's default
commit behavior.  Right now the default transaction isolation
is "read committed," so SELECT statements lead to AccessShareLocks
that do no get closed until the transaction finishes.

(imported from commit f72aeffbbe71a731e327459f15bd7dbebaf9e0b8)
2013-10-16 11:34:41 -04:00
Kevin Mehall 71decdbe7a Fix code block auto-closing.
Trac #1162

The process_fence method replaces code blocks with placeholders, so
indexes stored before the replacement are incorrect. However, because
the closed code blocks have been replaced, we can simply search the
whole string for any remaining opening code block markers.

(imported from commit 6a9e6924840f8f3ca5175da7c52a905e27c1fabd)
2013-10-16 10:12:33 -04:00
Kevin Mehall b134c90b6b Enable backtick fenced code blocks.
Trac #1900

(imported from commit 47b3a76488a4285641fd1eb3e68bc72047a8d738)
2013-10-16 10:12:33 -04:00
Jessica McKellar da3b394a64 Specify the email input type for the email login field.
(imported from commit 2c2ff574627fd7d933512d9bb0585aa948ea536a)
2013-10-15 17:40:16 -04:00
Zev Benjamin 82cacf97fe check_pg_replication_lag: Specify the DB username
The psql command was previously failing because it was trying to use
the non-existant DB user "zulip".

(imported from commit 68ad5c979ce33cc54e9d55f1822cba9fac648944)
2013-10-15 16:46:37 -04:00
Zev Benjamin 08e6b26d5b check_pg_replication_lag: Better error reporting when executing remote commands
(imported from commit 2430a9271aace68046d7162dcbdea5001d88d616)
2013-10-15 16:46:36 -04:00
Steve Howell b7eba8fe5c Test unread.update_unread_subjects() more thoroughly.
(imported from commit 5f1bbdbc6822615d487404930f5e50c970536761)
2013-10-15 14:57:38 -04:00
Steve Howell 7076258b15 Get stream_data.js to 100% branch coverage
(imported from commit fa1fa18271ba280d819bcec8cdea6337230f1953)
2013-10-15 14:57:38 -04:00
Waseem Daher af16617fcc Use 'www' for API download.
Only www has the cert, apparently, so the old URL complains
if you try to wget it.

(imported from commit 47f8c12b3d2bb8ed47ea92a78b38861fa3ae7bc4)
2013-10-15 14:02:09 -04:00
Steve Howell 8cc82c6cbe Optimize /json/update_message_flags.
I added filter() statements to do_update_message_flags().

Here is some context:

Steve Howell: Case 1, have AND clause to reduce work for DB.

humbug=> update zerver_usermessage set flags = (flags & ~1) where id > 9000;
UPDATE 382
humbug=> select count(*) from zerver_usermessage where (flags & 1) = 0;
 count
-------
   382
(1 row)

humbug=> explain analyze update zerver_usermessage set flags = (flags | 1) where (flags & 1) = 0;
                                                       QUERY PLAN
------------------------------------------------------------------------------------------------------------------------
 Update on zerver_usermessage  (cost=0.00..266.85 rows=47 width=27) (actual time=5.727..5.727 rows=0 loops=1)
   ->  Seq Scan on zerver_usermessage  (cost=0.00..266.85 rows=47 width=27) (actual time=0.045..2.751 rows=382 loops=1)
         Filter: ((flags & 1::bigint) = 0)
         Rows Removed by Filter: 9000
 Total runtime: 5.759 ms
(5 rows)

humbug=> select count(*) from zerver_usermessage where (flags & 1) = 0;
 count
-------
     0
(1 row)
Leo Franchi: Sounds reasonable, but I know way less than zev about DBs so I'll defer to his judgement :)

Steve Howell: Case 2, how the code works now:

humbug=> update zerver_usermessage set flags = (flags & ~1) where id > 9000;
UPDATE 382
humbug=> select count(*) from zerver_usermessage where (flags & 1) = 0;
 count
-------
   382
(1 row)

humbug=> explain analyze update zerver_usermessage set flags = (flags | 1);
                                                        QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
 Update on zerver_usermessage  (cost=0.00..243.28 rows=9382 width=27) (actual time=362.075..362.075 rows=0 loops=1)
   ->  Seq Scan on zerver_usermessage  (cost=0.00..243.28 rows=9382 width=27) (actual time=0.008..6.138 rows=9382 loops=1)
 Total runtime: 362.105 ms
(3 rows)

humbug=> select count(*) from zerver_usermessage where (flags & 1) = 0;
 count
-------
     0
(1 row)
Steve Howell: In both trials, we set it up so that only 382 of 9382 rows need to be updated. The first trial runs about 63x as fast. The second trial, if my theory is correct, is doing 24x as many writes as it needs. Both trials are reading all 9382 rows.

Steve Howell: The expense of the update statement seems to be proportional to the number of rows you "update", not the number of rows that you actually change.

Steve Howell: For now I created #1869.

Zev Benjamin: That sounds like a reasonable explanation. The disk IO can be expensive

(imported from commit d9090daee1f81cad76c430de0956f9bd504da075)
2013-10-15 11:30:13 -04:00
Leo Franchi 6e1bc06323 Fix test to check for new 60-char stream name length limit
(imported from commit 16474a9befc7466ee69f9aef37ec6e52758b5d76)
2013-10-15 10:24:07 -04:00
Steve Howell 4a0315fbfd Organize feature flags code a bit better.
(imported from commit a9b1405db99e54de8bed996b32215ca736f2dd56)
2013-10-15 09:57:20 -04:00
Steve Howell 36690ee6f6 Remove transitional feature_flags.muting flag.
(imported from commit 98a6cc4f340489b7817084e5ca5dcbcb75021813)
2013-10-15 09:57:19 -04:00
Steve Howell b98e7f8d90 Remove transitional feature_flags.alert_words flag.
(imported from commit f00eba8a12054e9771105e341e2652a53271e298)
2013-10-15 09:57:19 -04:00
Steve Howell d5f14e3bb7 Turn on propagate_topic_edits for everybody.
(imported from commit 936d2417120af5e9798638e0575724d45b9a207f)
2013-10-15 09:57:19 -04:00
Leo Franchi eb23464eaa Add support for discussion comments in Codebase mirror
(imported from commit 9b37cbf4209ad607966053af9c1ef9979c2d6205)
2013-10-15 09:38:38 -04:00
Tim Abbott 32861af323 [schema] Increase maximum stream name length to 60.
(imported from commit 83e9434178909d18481692a9e7fe3b8e1802bd7e)
2013-10-15 09:13:35 -04:00
Jessica McKellar 0dddd80b2b settings: Indicate that bot avatars are optional.
(imported from commit 6603ca8b73286587d9cac0f44097129a2c341d1f)
2013-10-14 13:15:11 -04:00
Jessica McKellar a7e35c0830 Fix /apps/ being a 404.
I looked around the Django docs for a more future-proof way of
addressing this problem of wanting both /apps and /apps/ to work. It
doesn't seem like there is.

Note that APPEND_SLASH is default True, so we're getting a / appended
automatically if there's no URL match without the /:

https://docs.djangoproject.com/en/dev/ref/settings/#append-slash

http://stackoverflow.com/a/11690144 points out making the slash
optional in the URL regex, but a commenter points out that this is bad
for SEO.

(imported from commit 8e883fb786c583fe5f561f14473211f6b100cecf)
2013-10-14 12:49:49 -04:00
Zev Benjamin 4921166b56 Remove rogue print statement
(imported from commit ef0b8855e94cd5e3ec9c80bac8cd82be0ca7911e)
2013-10-11 22:19:35 -04:00
Zev Benjamin 630ce40e29 zephyr_mirror: Hack to let golem receive mirrored personals
(imported from commit 68539e45dbdfd70a037405dd2760474bf46dff76)
2013-10-11 17:50:19 -04:00
Steve Howell 3ca1ef9a0a Use custom titles for the activity report.
(imported from commit ed991108715d043d5d21d8e9f7573eaedb21fec1)
2013-10-11 16:29:26 -04:00
Steve Howell 0ad4554723 Allow customer12.invalid users to narrow to a single message.
Add the option "Narrow to just this message" to the chevron
menu.  This has two use cases:

    * It's an easy way to get a sharable URL for the message.
    * It reduces distractions.

For now it is feature flagged to just customer12.invalid and staging.
See #1880.

(imported from commit 897d247176f9024ff825ccd3b338236569eed5ab)
2013-10-11 15:52:10 -04:00
Steve Howell 8aaff7c772 Show hours per user in activity report
(imported from commit b2932d725b9886ce962cc8ff0dd7073a0265a46c)
2013-10-11 15:44:42 -04:00
Steve Howell f0512e91e0 Split out bot counts
(imported from commit 2e5afae98a28774f555c45019ebbba778160962b)
2013-10-11 15:32:30 -04:00
Steve Howell 276e14e06a Use Hours, not Minutes, on the activity report.
(imported from commit abe1eb306b6505d61671d526bac7bc116caeba1f)
2013-10-11 15:22:16 -04:00
Steve Howell 15fb787583 Filter out Zulip/customer4.invalid from /activity.
(imported from commit 019fdba8275da573fc9c759625ff665961067b63)
2013-10-11 15:15:26 -04:00
Steve Howell 78e4fe6594 Support command-click for stream/topic links.
Allow users to open Zulip windows in new tabs with command-click
from the left sidebar narrowing links and recipient bar
narrowing links.

(imported from commit d60c038c7bf1efccd461f5284d513b9cbfbdaebf)
2013-10-11 11:58:51 -04:00
acrefoot d2b8fe6f57 fix earlier 'linter workaround'
(imported from commit 4ac9f1e57a241f95f53fa65d82c376a61de2c28c)
2013-10-11 11:54:05 -04:00
Steve Howell e6d1453e5f Provide more info in support requests.
Have the Feedback Bot provide the sender's full name.
Put the email in the message to help searching.
Generate a ticket number to make it easier to refer to the message from
elsewhere.

(imported from commit 4d789135a0097bade50b4d980f49ca596d85b73b)
2013-10-11 11:45:46 -04:00
Steve Howell 671d146bb9 [notify customer] Put "Getting started" higher on the integrations page.
A customer gave us feedback that he didn't see the instructions
to create a bot, because it's below the fold.  Also, the image
was horribly out of date.  I moved the instructions up and
simplified them.

Please follow up with user1@customer10.invalid and thank
him for the feedback, once we push to prod.

(imported from commit 22fe3b3c5f94183c402c10005504b94b35e6f7e4)
2013-10-11 07:58:29 -04:00
acrefoot 98897fe5e3 Queue the day 1 and day 2 Zulip followup emails
Handled by the queue processor for signups. Added a management command
that accomplishes the same task, in case it's needed for manually added users,
or in case we goof and need to remove queued emails for a given user.

This addresses Trac #1807

(imported from commit 6727b82a07fa6a3ea3d827860c9e60fd0602297a)
2013-10-10 19:32:21 -04:00
acrefoot f8662c16f7 Add Mandrill decorators, credentials, actions
You can queue email for future delivery or send immediately via mandrill now

(imported from commit e6b6d11a2d94fcdeaffab80793e7ba31955b9031)
2013-10-10 19:32:21 -04:00
acrefoot 48026384cf [manual] Add python-mandrill dependency
make sure to run `apt-get update` and then `tools/zulip-puppet-apply`
on staging and prod

(imported from commit 8d1e6295c7c395333a05cd664aa28cab6496bdaa)
2013-10-10 19:31:22 -04:00
acrefoot 851a6e391e change variable name to get linter to stop complaining
(imported from commit b61824c16b1e7ad88375eeebdd945827dfc7fd3c)
2013-10-10 19:24:50 -04:00
Leo Franchi 1f89bf386f Parse markdown tables and show them with some styling
(imported from commit fb3c599b1dbaed2447f1e710ed7202486000ca2a)
2013-10-10 16:39:11 -04:00
Leo Franchi 1db703595e Enable topic propagation for CUSTOMER9
(imported from commit 646a765fad0c5b285b11daabb92a5c0f47c83fed)
2013-10-10 16:30:37 -04:00
Luke Faraone 5c0bcffc97 Depend on nodejs only on local_dev for now.
We need to make sure it's totally drop-in functional on the app servers
before I'd feel comfortable modifying their config.

(imported from commit e42d6e37732d65f827982aabaff9399ec1bda0f2)
2013-10-10 14:14:14 -04:00
Luke Faraone 1d9391e867 Initial local server configuration.
(imported from commit ac9b9896b74b78c6ca03af7f411d0788ae402cff)
2013-10-10 14:14:14 -04:00
Luke Faraone dda89debb2 Move base inclusion to child puppet classes.
(imported from commit 30a55c0ccf835aa6bfc708208914ee1f20352d75)
2013-10-10 14:14:14 -04:00