Abstract: A system providing an improved method for compiler-assisted refactoring of a software application is described. Upon receiving a request for refactoring of a software application (e.g., changing a given symbol of the application), the binary files of the application are parsed to identify those binary files containing references to the given symbol. The source files of the identified binary files are then retrieved and fed into a compiler. The compiler is used to generate a list of all uses of the given symbol in the software application. This list includes not only the text name of the symbol, but also type information and position information regarding its location(s) in the source file. Based upon the list, changes are applied to the software application.
Abstract: A database system providing improved methods for asynchronous logging of transactions is described. Log records are created describing changes to a database made by a transaction. When a command committing changes to the database for the transaction is received, a logging request is placed in a queue. An asynchronous logging service removes requests from the queue and transfers log records from the transaction to a shared cache. The shared cache stores log records before they are written to the transaction log. The logging service writes log pages containing log records for the transaction from the cache to the transaction log. After all log pages in the cache for the transaction have been written to the transaction log, changes to the database made by the transaction can be committed to the database.