Subscribe: Awasu
http://www.awasu.com//news.rss
Preview: Awasu

Awasu



The Wonderful World of Awasu



Updated: 2017-03-22T04:39:43Z

 



Awasu 3.1.rc1 released

2017-03-22T04:39:43Z

Awasu 3.1.rc1 has been released here. Most of the work for this release was for the installer, which will upgrade your existing installation to 3.1, if you’re running 3.0, or any of the 3.0.x betas. If you’re running a 2.x version, or (eek!) a 1.x version, please contact us for details on how to upgrade. […]

Awasu 3.1.rc1 has been released here.

Most of the work for this release was for the installer, which will upgrade your existing installation to 3.1, if you’re running 3.0, or any of the 3.0.x betas. If you’re running a 2.x version, or (eek!) a 1.x version, please contact us for details on how to upgrade.

The documentation has also been updated, and is available here (a CHM version will be coming later).

Note to self: if anyone asks you to do installer work, run away! It’s a horrible job, testing on different versions of Windows, with many different scenarios that need to be verified. But it’s all done now, so I’ll let this release bake before pushing out the final 3.1 general release in a few weeks. Woo hoo!




Awasu 3.0.4 released

2017-02-16T10:21:18Z

Awasu 3.0.4 has been released here. A final round of optimizations, enhancements and bug fixes – this’ll be the last one before the 3.1 general release, which shouldn’t be too far away.

Awasu 3.0.4 has been released here.

A final round of optimizations, enhancements and bug fixes – this’ll be the last one before the 3.1 general release, which shouldn’t be too far away.




Awasu 3.0.4.alpha3 released

2017-01-31T10:27:32Z

Awasu 3.0.4.alpha3 has been released here, mostly minor bug fixes and enhancements. Only a few things left to do, and that’ll close off this release cycle – woo hoo!

Awasu 3.0.4.alpha3 has been released here, mostly minor bug fixes and enhancements. Only a few things left to do, and that’ll close off this release cycle – woo hoo! (image)




Can I haz zombies?

2017-01-25T07:12:27Z

Awasu has had many optimizations made to it over the past few releases, and one of them was a change to how it captures output from plugins. The old code used to set up temp files to capture stdout and stderr, configured the plugin process to send its output to them, then read the captured […]

Awasu has had many optimizations made to it over the past few releases, and one of them was a change to how it captures output from plugins. The old code used to set up temp files to capture stdout and stderr, configured the plugin process to send its output to them, then read the captured content when the plugin finished. This was changed in 3.0.4.alpha2 to use in-memory buffers, thus removing the need to use slow disk files.

This worked pretty well, except for one rare, bizarre problem: if Awasu crashed was forcibly terminated via Task Manager while plugins were running, when it was restarted, it was unable to open the server socket it normally listens on for API requests, because another process had it open. The plugins would also hang indefinitely. Awasu was recently changed to automatically find an alternative port, which is kinda cool, but (1) it also kinda sucks if you have scripts that have this port hard-coded, and (2) it’s indicative of a serious problem, a zombie kinda problem (image)

When Awasu is started, it checks to see if another copy is already running, and transfers control to that if it is, so the old process was dead enough that the new copy of Awasu wasn’t seeing it, but it was alive enough that it was keeping the old socket (and presumably other stuff) open.

I hate zombies.

I finally figured out what the problem was, and thought it might make a good blog post, since it was an interesting situation, and as a PSA to correct an omission in the MSDN example. However, when I went looking for the MSDN example, it did the necessary magic to avoid this problem (image) but since it doesn’t explain why it performs these incantations, it’s maybe worth jotting down these notes for anyone else running into the same problem…

The problem

The old code[1]Error handling has been removed for clarity.