AWS issues


  • Grade A Premium Asshole

    @Yamikuronue said in AWS issues:

    We are definitely too big for this box

    @apapadimoulis said in AWS issues:

    at this price, we could get a dedicated quad core server

    @ben_lubar said in AWS issues:

    site was stuck in a busy loop

    @ben_lubar said in AWS issues:

    1000 hourly unique visitors

    @ben_lubar said in AWS issues:

    1000 hourly unique visitors

    but why do you guys insist on webscale forums, if they give you so much trouble
    how far will you go in forum :wtf:, when will 'or you'll have CS' not worry people anymore 😦


  • Discourse touched me in a no-no place

    @ben_lubar Looks like the average burn rate has drifted up from about 20–21 to around 24–25. Since that takes us from net-accumulation to net-spending, that's significant. It's also not apparently a simple thing, since it's been just creeping up.

    Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task? What's the breakdown in usage between the nodebb front end and the DB parts? Are we looking at the right thing at all?


  • BINNED

    @Yamikuronue said in AWS issues:

    Big ass

    :giggity:


  • Impossible Mission - B

    @dkf said in AWS issues:

    Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?

    One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.


  • BINNED



  • @masonwheeler said in AWS issues:

    @dkf said in AWS issues:

    Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?

    One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.

    The up-vote (and probably down- too) don't respond, either. Or they do, but it's after a (very) long delay.


  • Impossible Mission - B

    @djls45 said in AWS issues:

    The up-vote (and probably down- too) don't respond, either. Or they do, but it's after a (very) long delay.

    Sure, but that has to be recorded by the server. Opening an editor window doesn't.


  • Notification Spam Recipient

    @masonwheeler said in AWS issues:

    @dkf said in AWS issues:

    Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?

    One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.

    Yeah. I think the reason is that it's calling the server for real post ID or something.


  • :belt_onion:

    @Tsaukpaetra said in AWS issues:

    @masonwheeler said in AWS issues:

    @dkf said in AWS issues:

    Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?

    One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.

    Yeah. I think the reason is that it's calling the server for real post ID or something.

    Well, for quote, I believe it's asking for the raw of the original post (since it needs that to be able to add the quote)


  • Impossible Mission - B

    @sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow... 🚎



  • @masonwheeler said in AWS issues:

    @sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow... 🚎

    So now you want Community Server's multiple-copies-of-each-piece-of-irrelevant-data format?


  • I survived the hour long Uno hand

    @ben_lubar said in AWS issues:

    multiple-copies-of-each-piece-of-irrelevant-data format

    Multiple copies? Irrelevant?



  • @Yamikuronue said in AWS issues:

    @ben_lubar said in AWS issues:

    multiple-copies-of-each-piece-of-irrelevant-data format

    Multiple copies? Irrelevant?

    The post form included two copies of every tag ever posted on the forum in an <input type="hidden"> field, so it was sent back to the server just in case the server needed to know every tag in its database.


  • I survived the hour long Uno hand

    @ben_lubar Yeah, but we're talking about the raw vs the cooked, which are different things, and both relevant. so....



  • @Yamikuronue Community Server solved that problem in two ways:

    1. the composer was on a completely separate page from the topic
    2. posts were allowed to contain unsanitized raw HTML

    Wait, did I say solved? I meant "made worse".



  • @Yamikuronue said in AWS issues:

    @ben_lubar Yeah, but we're talking about the raw vs the cooked, which are different things, and both relevant. so....

    They're only both relevant if every user is going to quote every post in every topic every time.
    Otherwise, only getting the raw when needed for quote makes sense.


  • I survived the hour long Uno hand

    @CreatedToDislikeThis said in AWS issues:

    only getting the raw when needed for quote makes sense.

    It might make sense to reduce the number of server round trips if that's why the CPU usage is so high. Of course, you never, ever want to optimize before you measure where the bottlenecks are, so I can't say for sure.

    If I was doing it, I'd probably only ship the raw and let the client-side script bake it. The forum doesn't work without javascript anyway.



  • @dkf said in AWS issues:

    @ben_lubar Looks like the average burn rate has drifted up from about 20–21 to around 24–25. Since that takes us from net-accumulation to net-spending, that's significant. It's also not apparently a simple thing, since it's been just creeping up.

    Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task? What's the breakdown in usage between the nodebb front end and the DB parts? Are we looking at the right thing at all?

    @dkf
    Webscale i presume. When i looked at the DB every lookup was key based. It's not a rdbms, so effiency is shit. Every key looks like a guid. Generating the guids probably explains a fair bit of the load.
    I looked at it and decided that adapting it to a rdbms would require almost a rewrite. @Weng looked at it too and he gave up too (NO! You were the chosen one)



  • Just for shits and giggles, I hit Reply; to the thread -- not to a post, nothing highlighted.

    0_1477270610591_Untitled.png

    socket.emit "plugins.composer.getFormattingOptions":
     function composer.load/<()
    socket.emit "plugins.composer.getFormattingOptions" response:
     null [{"name":"bold","className":"fa fa-bold","title":"[[modules:composer.formatting.bold]]"},{"name":"italic","className":"fa fa-italic","title":"[[modules:composer.formatting.italic]]"},{"name":"list","className":"fa fa-list","title":"[[modules:composer.formatting.list]]"},{"name":"strikethrough","className":"fa fa-strikethrough","title":"[[modules:composer.formatting.strikethrough]]"},{"name":"link","className":"fa fa-link","title":"[[modules:composer.formatting.link]]"},{"name":"picture-o","className":"fa fa-picture-o","title":"[[modules:composer.formatting.picture]]"},{"name":"tags","className":"fa fa-tags","mobile":true},{"name":"zen","className":"fa fa-arrows-alt","title":"[[modules:composer.zen_mode]]","mobile":false},{"name":"del-ins","className":"fa fa-eraser","title":"[[tdwtfButtons:del-ins]]"},{"name":"abbr","className":"fa fa-info-circle","title":"[[tdwtfButtons:abbr]]"},{"name":"emoji-extended","className":"fa fa-smile-o","title":"[[emojiExtended:composer.title]]"}]
    socket.emit "plugins.mentions.listGroups":
     function i/<()
    socket.emit "plugins.composer.renderHelp":
     function handleHelp/<()
    socket.emit "plugins.mentions.listGroups" response:
     null ["Impossible Mission - B","Impossible Mission - A","area_can","area_pol","Self-Serve Mafia - Club Ded","Self-Serve Mafia - Players","Self-Serve Mafia","Gaska","Discourse touched me in a no-no place","BotOwners","sockdevs","TDWTF NodeBB Development","secret PM club","Mafia - Players","Mafia - Club Ded","Global Moderators","administrators","authors","mods","area_bel","bots","programmers_testers","area_deu","area_gbr","area_usa","trust_level_4","trust_level_3"]
    socket.emit "plugins.composer.renderHelp" response:
     null "<h2>Markdown</h2>\n<p>This forum is powered by Markdown. For full documentation, <a href=\"http://commonmark.org/help/\" rel=\"nofollow\">click here</a></p>\n<h2>Safe HTML</h2><p>You are allowed to use a subset of HTML.</p><p>The following attributes are allowed on all elements: <code>title</code></p><p>The following elements are allowed: <code>&lt;a href rel&gt;</code>, <code>&lt;abbr&gt;</code>, <code>&lt;address&gt;</code>, <code>&lt;audio controls src&gt;</code>, <code>&lt;b&gt;</code>, <code>&lt;big&gt;</code>, <code>&lt;blockquote&gt;</code>, <code>&lt;br&gt;</code>, <code>&lt;caption&gt;</code>, <code>&lt;cite&gt;</code>, <code>&lt;code class&gt;</code>, <code>&lt;dd&gt;</code>, <code>&lt;del&gt;</code>, <code>&lt;details open&gt;</code>, <code>&lt;div&gt;</code>, <code>&lt;dl&gt;</code>, <code>&lt;dt&gt;</code>, <code>&lt;em&gt;</code>, <code>&lt;h1&gt;</code>, <code>&lt;h2&gt;</code>, <code>&lt;h3&gt;</code>, <code>&lt;h4&gt;</code>, <code>&lt;h5&gt;</code>, <code>&lt;h6&gt;</code>, <code>&lt;hr&gt;</code>, <code>&lt;i&gt;</code>, <code>&lt;img alt class height src width&gt;</code>, <code>&lt;ins&gt;</code>, <code>&lt;kbd&gt;</code>, <code>&lt;li value&gt;</code>, <code>&lt;ol start&gt;</code>, <code>&lt;p&gt;</code>, <code>&lt;pre class&gt;</code>, <code>&lt;q&gt;</code>, <code>&lt;s&gt;</code>, <code>&lt;small&gt;</code>, <code>&lt;span&gt;</code>, <code>&lt;strike&gt;</code>, <code>&lt;strong&gt;</code>, <code>&lt;sub&gt;</code>, <code>&lt;summary&gt;</code>, <code>&lt;sup&gt;</code>, <code>&lt;table class&gt;</code>, <code>&lt;tbody&gt;</code>, <code>&lt;td&gt;</code>, <code>&lt;tfoot&gt;</code>, <code>&lt;th&gt;</code>, <code>&lt;thead&gt;</code>, <code>&lt;tr&gt;</code>, <code>&lt;tt&gt;</code>, <code>&lt;u&gt;</code>, <code>&lt;ul start&gt;</code>, <code>&lt;video controls poster src&gt;</code></p>"
    socket.emit "plugins.composer.renderPreview" "":
     function preview.render/timeoutId</<()
    socket.emit "plugins.composer.renderPreview" "" response:
     null ""
    

  • Winner of the 2016 Presidential Election

    topic.json:

    {"topic":"Topic","topic_id":"Topic ID","topic_id_placeholder":"Enter topic ID","no_topics_found":"No topics found!","no_posts_found":"No posts found!","post_is_deleted":"This post is deleted!","topic_is_deleted":"This topic is deleted!","profile":"Profile","posted_by":"Posted by %1","posted_by_guest":"Posted by Guest","chat":"Chat","notify_me":"Be notified of new replies in this topic","quote":"Quote","reply":"Reply","reply-as-topic":"Reply as topic","guest-login-reply":"Log in to reply","edit":"Edit","delete":"Delete","purge":"Purge","restore":"Restore","move":"Move","fork":"Fork","link":"Link","share":"Share","tools":"Tools","flag":"Flag","locked":"Locked","pinned":"Pinned","moved":"Moved","bookmark_instructions":"Click here to return to the last read post in this thread.","flag_title":"Flag this post for moderation","flag_success":"This post has been flagged for moderation.","flag_manage_title":"Flagged post in %1","flag_manage_history":"Action History","flag_manage_no_history":"No event history to report","flag_manage_assignee":"Assignee","flag_manage_state":"State","flag_manage_state_open":"New/Open","flag_manage_state_wip":"Work in Progress","flag_manage_state_resolved":"Resolved","flag_manage_state_rejected":"Rejected","flag_manage_notes":"Shared Notes","flag_manage_update":"Update Flag Status","flag_manage_history_assignee":"Assigned to %1","flag_manage_history_state":"Updated state to %1","flag_manage_history_notes":"Updated flag notes","flag_manage_saved":"Flag Details Updated","deleted_message":"This topic has been deleted. Only users with topic management privileges can see it.","following_topic.message":"You will now be receiving notifications when somebody posts to this topic.","not_following_topic.message":"You will see this topic in the unread topics list, but you will not receive notifications when somebody posts to this topic.","ignoring_topic.message":"You will no longer see this topic in the unread topics list.  You will be notified when you are mentioned or your post is up voted.","login_to_subscribe":"Please register or log in in order to subscribe to this topic.","markAsUnreadForAll.success":"Topic marked as unread for all.","mark_unread":"Mark unread","mark_unread.success":"Topic marked as unread.","watch":"Watch","unwatch":"Unwatch","watch.title":"Be notified of new replies in this topic","unwatch.title":"Stop watching this topic","share_this_post":"Share this Post","watching":"Watching","not-watching":"Not Watching","ignoring":"Ignoring","watching.description":"Notify me of new replies.<br/>Show topic in unread.","not-watching.description":"Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.","ignoring.description":"Do not notify me of new replies.<br/>Do not show topic in unread.","thread_tools.title":"Topic Tools","thread_tools.markAsUnreadForAll":"Mark unread for all","thread_tools.pin":"Pin Topic","thread_tools.unpin":"Unpin Topic","thread_tools.lock":"Lock Topic","thread_tools.unlock":"Unlock Topic","thread_tools.move":"Move Topic","thread_tools.move_all":"Move All","thread_tools.fork":"Fork Topic","thread_tools.delete":"Delete Topic","thread_tools.delete-posts":"Delete Posts","thread_tools.delete_confirm":"Are you sure you want to delete this topic?","thread_tools.restore":"Restore Topic","thread_tools.restore_confirm":"Are you sure you want to restore this topic?","thread_tools.purge":"Purge Topic","thread_tools.purge_confirm":"Are you sure you want to purge this topic?","topic_move_success":"This topic has been successfully moved to %1","post_delete_confirm":"Are you sure you want to delete this post?","post_restore_confirm":"Are you sure you want to restore this post?","post_purge_confirm":"Are you sure you want to purge this post?","load_categories":"Loading Categories","disabled_categories_note":"Disabled Categories are greyed out","confirm_move":"Move","confirm_fork":"Fork","bookmark":"Bookmark","bookmarks":"Bookmarks","bookmarks.has_no_bookmarks":"You haven't bookmarked any posts yet.","loading_more_posts":"Loading More Posts","move_topic":"Move Topic","move_topics":"Move Topics","move_post":"Move Post","post_moved":"Post moved!","fork_topic":"Fork Topic","topic_will_be_moved_to":"This topic will be moved to the category","fork_topic_instruction":"Click the posts you want to fork","fork_no_pids":"No posts selected!","fork_pid_count":"%1 post(s) selected","fork_success":"Successfully forked topic! Click here to go to the forked topic.","delete_posts_instruction":"Click the posts you want to delete/purge","composer.title_placeholder":"Enter your topic title here...","composer.handle_placeholder":"Name","composer.discard":"Discard","composer.submit":"Submit","composer.replying_to":"Replying to %1","composer.new_topic":"New Topic","composer.uploading":"uploading...","composer.thumb_url_label":"Paste a topic thumbnail URL","composer.thumb_title":"Add a thumbnail to this topic","composer.thumb_url_placeholder":"http://example.com/thumb.png","composer.thumb_file_label":"Or upload a file","composer.thumb_remove":"Clear fields","composer.drag_and_drop_images":"Drag and Drop Images Here","more_users_and_guests":"%1 more user(s) and %2 guest(s)","more_users":"%1 more user(s)","more_guests":"%1 more guest(s)","users_and_others":"%1 and %2 others","sort_by":"Sort by","oldest_to_newest":"Oldest to Newest","newest_to_oldest":"Newest to Oldest","most_votes":"Most votes","most_posts":"Most posts","stale.title":"Create new topic instead?","stale.warning":"The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?","stale.create":"Create a new topic","stale.reply_anyway":"Reply to this topic anyway","link_back":"Re: [%1](%2)","spam":"Spam","offensive":"Offensive","custom-flag-reason":"Enter a flagging reason"}
    

    modules.json:

    {"chat.chatting_with":"Chat with <span id=\"chat-with-name\"></span>","chat.placeholder":"Type chat message here, press enter to send","chat.send":"Send","chat.no_active":"You have no active chats.","chat.user_typing":"%1 is typing ...","chat.user_has_messaged_you":"%1 has messaged you.","chat.see_all":"See all chats","chat.mark_all_read":"Mark all chats read","chat.no-messages":"Please select a recipient to view chat message history","chat.no-users-in-room":"No users in this room","chat.recent-chats":"Recent Chats","chat.contacts":"Contacts","chat.message-history":"Message History","chat.pop-out":"Pop out chat","chat.maximize":"Maximize","chat.seven_days":"7 Days","chat.thirty_days":"30 Days","chat.three_months":"3 Months","chat.delete_message_confirm":"Are you sure you wish to delete this message?","chat.add-users-to-room":"Add users to room","composer.compose":"Compose","composer.show_preview":"Show Preview","composer.hide_preview":"Hide Preview","composer.user_said_in":"%1 said in %2:","composer.user_said":"%1 said:","composer.discard":"Are you sure you wish to discard this post?","composer.submit_and_lock":"Submit and Lock","composer.toggle_dropdown":"Toggle Dropdown","composer.uploading":"Uploading %1","composer.formatting.bold":"Bold","composer.formatting.italic":"Italic","composer.formatting.list":"List","composer.formatting.strikethrough":"Strikethrough","composer.formatting.link":"Link","composer.formatting.picture":"Picture","composer.upload-picture":"Upload Image","composer.upload-file":"Upload File","composer.zen_mode":"Zen Mode","composer.select_category":"Select a category","bootbox.ok":"OK","bootbox.cancel":"Cancel","bootbox.confirm":"Confirm","cover.dragging_title":"Cover Photo Positioning","cover.dragging_message":"Drag the cover photo to the desired position and click \"Save\"","cover.saved":"Cover photo image and position saved"}
    

    Shouldn't those two have already been loaded? Most of the others I can see as a load-on-demand thing...
    ....except they've all already been loaded:

    0_1477271762260_upload-f6f705a1-7e7c-4c6a-8dfd-bf24daa3c4d7


  • Winner of the 2016 Presidential Election

    OTOH, after the composer has been (re-)loaded once it doesn't get loaded again.


  • Notification Spam Recipient

    @Dreikin said in AWS issues:

    OTOH, after the composer has been (re-)loaded once it doesn't get loaded again.

    So, moral of the story: Load twice, cache sometimes?



  • @anotherusername said in AWS issues:

    socket.emit "plugins.composer.renderPreview" "":
     function preview.render/timeoutId</<()
    socket.emit "plugins.composer.renderPreview" "" response:
     null ""
    

    Oh shit, I just realized what it's doing there... :facepalm:


  • Notification Spam Recipient

    @anotherusername said in AWS issues:

    @anotherusername said in AWS issues:

    socket.emit "plugins.composer.renderPreview" "":
     function preview.render/timeoutId</<()
    socket.emit "plugins.composer.renderPreview" "" response:
     null ""
    

    Oh shit, I just realized what it's doing there... :facepalm:

    If my guess of requesting a render cycle for and empty string is correct, do I get a 🍪 ?


  • :belt_onion:

    @masonwheeler said in AWS issues:

    @sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow... 🚎

    I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.


  • Winner of the 2016 Presidential Election

    @sloosecannon said in AWS issues:

    @masonwheeler said in AWS issues:

    @sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow... 🚎

    I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.

    I think the raw is already there. I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools.


  • :belt_onion:

    @Dreikin said in AWS issues:

    @sloosecannon said in AWS issues:

    @masonwheeler said in AWS issues:

    @sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow... 🚎

    I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.

    I think the raw is already there. I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools.

    Uhhhhhh. Right. Uh. OK then.

    That's pretty silly then.



  • @Dreikin said in AWS issues:

    no new requests were made

    Your websocket was already open.



  • @Yamikuronue said in AWS issues:

    The forum doesn't work without javascript anyway.

    You can read it without JavaScript.


  • Winner of the 2016 Presidential Election

    @ben_lubar said in AWS issues:

    @Dreikin said in AWS issues:

    no new requests were made

    Your websocket was already open.

    Yeah, I just noticed that. Interesting. It's very ...active while typing.


  • Winner of the 2016 Presidential Election

    @ben_lubar said in AWS issues:

    @Dreikin said in AWS issues:

    no new requests were made

    Your websocket was already open.

    And proof it is requesting raw, contrary to my oblivious statement earlier, gracefully corrected by @ben_lubar:

    0_1477285745129_upload-8a3c29d6-af46-4f47-8760-37e21eeeb8e5

    Edit:

    And a small sample of how chatty it is while composing:
    0_1477285900686_upload-04e961a3-5b53-4e8e-bb4f-6a9334bc6084


  • Notification Spam Recipient

    @Dreikin said in AWS issues:

    @ben_lubar said in AWS issues:

    @Dreikin said in AWS issues:

    no new requests were made

    Your websocket was already open.

    And proof it is requesting raw, contrary to my oblivious statement earlier, gracefully corrected by @ben_lubar:

    0_1477285745129_upload-8a3c29d6-af46-4f47-8760-37e21eeeb8e5

    Edit:

    And a small sample of how chatty it is while composing:
    0_1477285900686_upload-04e961a3-5b53-4e8e-bb4f-6a9334bc6084

    Yeah, I wasn't kidding up thread.


  • Grade A Premium Asshole

    @Yamikuronue said in AWS issues:

    We are definitely too big for this box

    :giggity:


  • I survived the hour long Uno hand

    @ben_lubar said in AWS issues:

    You can read it without JavaScript.

    I don't believe anything without testing it. So since I happened to have a copy of Firefox 22 sitting around, I shut off javascript and gave it a try.

    First it crashed Firefox, but that was probably unrelated. The front page has a huge warning sign:

    0_1477311577123_upload-069ecbce-1724-456d-a3eb-8dcd1c2bd86f

    It said log in to post, so I tried to log in:

    0_1477311623697_upload-b4a6f338-0d59-4ff0-bb91-c29c4abc9066

    When I hit login, a new tab opened:

    0_1477311641840_upload-ebda4d3b-f9c6-4ae1-a77f-893283213a5d

    So no, I'd say they don't work without javascript. The pages render but you can't interact with the system in any meaningful way.

    By the way, clicking upvote takes me to the top of the page for some reason. Tufty's avatar still spins though, so that's a plus.


  • Discourse touched me in a no-no place

    @Yamikuronue said in AWS issues:

    Tufty's avatar still spins though, so that's a plus.

    fa-spin-licious!


  • kills Dumbledore

    @Yamikuronue said in AWS issues:

    0_1477311623697_upload-b4a6f338-0d59-4ff0-bb91-c29c4abc9066

    Pet hate: They meant e.g. not i.e.

    Except it would still be a pretty clunky sentence, and is pretty unnecessary because people with JS disabled either know what they're doing and how to turn it off, or don't know what NoScript means


  • FoxDev

    @dkf said in AWS issues:

    @ben_lubar Looks like the average burn rate has drifted up from about 20–21 to around 24–25. Since that takes us from net-accumulation to net-spending, that's significant. It's also not apparently a simple thing, since it's been just creeping up.

    true, true, but now that we're on dedicated hardware (that is cheaper than what we were paying) we now have an effectively infinite earn rate, so until we manage to constanlty pin our processor's balls to the wall we'll be just fine tere.

    still might want to keep an eye on trends there.


  • Discourse touched me in a no-no place

    @accalia said in AWS issues:

    true, true, but now that we're on dedicated hardware (that is cheaper than what we were paying) we now have an effectively infinite earn rate, so until we manage to constanlty pin our processor's balls to the wall we'll be just fine tere.

    Well, it means that we won't get any horrible surprises on the CPU usage front.

    Next up: worrying about bandwidth, latency and availability. :trollface:

    still might want to keep an eye on trends there.

    Yes. It's usually a good idea to set tripwires out relatively far so that you're not hitting problems too hard while trying to diagnose. And FFS make sure that nodeBB doesn't fall over when some random jerk on the internet sends you a PROPFIND



  • @Tsaukpaetra said in AWS issues:

    @anotherusername said in AWS issues:

    @anotherusername said in AWS issues:

    socket.emit "plugins.composer.renderPreview" "":
     function preview.render/timeoutId</<()
    socket.emit "plugins.composer.renderPreview" "" response:
     null ""
    

    Oh shit, I just realized what it's doing there... :facepalm:

    If my guess of requesting a render cycle for and empty string is correct, do I get a 🍪 ?

    Yes. 🍪

    @Dreikin said in AWS issues:

    I think the raw is already there. I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools.

    They don't show socket.io transfers. It is most certainly happening, though:

    socket.emit "posts.getRawPost" "1022712":
     function ()
    socket.emit "posts.getRawPost" "1022712" response:
     null "@sloosecannon said in [AWS issues](/post/1022711):\n> @masonwheeler said in [AWS issues](/post/1022646):\n> > @sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow... :trolleybus:\n> \n> I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.\n\nI think the raw is already there.  I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools."
    

    If you're interested, I wrote this handy dandy Socket.io monitor that runs in the console:

    var ioMonitor = (() => {
      var real_emit = socket.emit, removed = 0;
      const log = (...a) => !removed && console.log(...a);
      const m = e => e === null ? e : typeof e == "function" ? e : JSON.stringify(e);
      socket.emit = function emit(...s) {
        // These request types won't be logged -- you can add more if you like
        // The items can also be RegExp instead of string, e.g. /^p[io]ng$/
        var ignoredTypes = ['ping', 'pong'];
        var ignore = ignoredTypes.some(t => t.test ? t.test(s[0]) : t == s[0]);
        var f = typeof s[s.length - 1] == "function" && s.pop() || undefined;
        if (!ignore) log("socket.emit", ...s.slice(0, -1).map(m).concat(m(s.slice(-1)[0]) + ":\n"), f);
        real_emit.bind(socket)(...[...s, function (...e) {
          if (!ignore && e.some(p => p !== null)) log("socket.emit", ...s.map(m), "response:\n", ...e.map(m));
          if (f) return f(...e);
        }]);
      };
      return {remove: () => { if (!removed) { ++ removed; socket.emit = real_emit }}};
    })();
    

    It'll trap and log (unless the event type matches something in the list of ignored types) every socket.emit call, and the response, giving the parameters that were sent and the parameters that were returned, in JSON notation. It then calls the original callback to make sure everything still works properly.

    Note that it won't log events received from the server; it logs events that the client initiates with socket.emit.

    To stop logging and put everything back to normal, just enter:

    ioMonitor.remove();
    

  • I survived the hour long Uno hand

    @anotherusername said in AWS issues:

    I wrote this handy dandy Socket.io monitor that runs in the console:

    0_1477319637636_upload-64dcf714-25ce-45c3-8b77-324bb12a9245 Stuff



  • @Yamikuronue mine will start/stop logging (in Firefox) without needing a page refresh. It also logs the callback function, which you could right-click -> store as global variable -> toSource() if you wanted to see what it was.

    I mean, Socket.io already has built-in logging, which you can enable by setting a flag in localStorage, but that also required a refresh to start/stop logging.

    So I like my script. :P


  • :belt_onion:

    @anotherusername I got a notification for this post



  • @sloosecannon :facepalm: no way. Really?

    @mods !!!!!!!!11
    

  • I survived the hour long Uno hand

    @anotherusername

    0_1477320855475_upload-76d555b7-749a-4e24-840b-9443c4cd026e

    Also I dunno what you think I can do about that, you want @administrators



  • @Yamikuronue too much letters, "mods" is only 4. :P



  • @anotherusername Didn't Discourse do something similar? Or am I confusing things?


  • Considered Harmful

    @anotherusername said in AWS issues:

    ```text

    So that's how you opt out of syntax highlighting? I'd port that back to error-bot if I was still maintaining that project...



  • @aliceif :disco:🎠 was famously inconsistent; I'm sure it probably did that at one time or another in the old bug/new bug cycle.


  • :belt_onion:

    @Yamikuronue said in AWS issues:

    @anotherusername

    0_1477320855475_upload-76d555b7-749a-4e24-840b-9443c4cd026e

    Also I dunno what you think I can do about that, you want @administrators

    So in other words...

    @ben_lubar !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


  • Considered Harmful

    @Yamikuronue said in AWS issues:

    @anotherusername said in AWS issues:

    I wrote this handy dandy Socket.io monitor that runs in the console:

    0_1477319637636_upload-64dcf714-25ce-45c3-8b77-324bb12a9245 Stuff

    0_1477321484855_upload-0c7e3df1-a0d7-4d21-8771-e1c8ae3e86f5


Log in to reply