-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add play-scala implementation with use of async/futures. #17
Conversation
Thanks @jmgao! All the tests ran, but the database tests returned a result of {"empty":false,"traversableAgain":true}, rather than encoded World objects. The json test ran fine however, and saw an increase over the java version (stay tuned next week when we're hoping to release updated results). |
Please integrate #31 instead since it’s more representative of the way Scala programers will write apps. |
Here's an example of the error output from before this change: Unhandled exception: Bad state: Stream was already listened to #0 _RawServerSocket.listen (dart:io-patch/socket_patch.dart:1106) TechEmpower#1 new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:123) TechEmpower#2 _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:91) TechEmpower#3 _ForwardingStream.listen (dart:async/stream_pipe.dart:86) TechEmpower#4 _ServerSocket.listen (dart:io-patch/socket_patch.dart:1351) TechEmpower#5 _HttpServer.listen (dart:io/http_impl.dart:2278) TechEmpower#6 _startServer.<anonymous closure> (file:///server.dart:88:12) TechEmpower#7 _RootZone.runUnary (dart:async/zone.dart:1371) TechEmpower#8 _FutureListener.handleValue (dart:async/future_impl.dart:129) TechEmpower#9 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636) TechEmpower#10 _Future._propagateToListeners (dart:async/future_impl.dart:665) TechEmpower#11 _Future._completeWithValue (dart:async/future_impl.dart:478) TechEmpower#12 Future.wait.<anonymous closure> (dart:async/future.dart:362) TechEmpower#13 _RootZone.runUnary (dart:async/zone.dart:1371) TechEmpower#14 _FutureListener.handleValue (dart:async/future_impl.dart:129) TechEmpower#15 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636) TechEmpower#16 _Future._propagateToListeners (dart:async/future_impl.dart:665) TechEmpower#17 _Future._completeWithValue (dart:async/future_impl.dart:478) TechEmpower#18 Future.wait.<anonymous closure> (dart:async/future.dart:362) TechEmpower#19 _RootZone.runUnary (dart:async/zone.dart:1371) TechEmpower#20 _FutureListener.handleValue (dart:async/future_impl.dart:129) TechEmpower#21 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636) TechEmpower#22 _Future._propagateToListeners (dart:async/future_impl.dart:665) TechEmpower#23 _Future._completeWithValue (dart:async/future_impl.dart:478) TechEmpower#24 _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:510) TechEmpower#25 _microtaskLoop (dart:async/schedule_microtask.dart:41) TechEmpower#26 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50) TechEmpower#27 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:99) TechEmpower#28 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:152)
Here's an example of the error output from before this change: Unhandled exception: Bad state: Stream was already listened to #0 _RawServerSocket.listen (dart:io-patch/socket_patch.dart:1106) #1 new _ForwardingStreamSubscription (dart:async/stream_pipe.dart:123) #2 _ForwardingStream._createSubscription (dart:async/stream_pipe.dart:91) #3 _ForwardingStream.listen (dart:async/stream_pipe.dart:86) #4 _ServerSocket.listen (dart:io-patch/socket_patch.dart:1351) #5 _HttpServer.listen (dart:io/http_impl.dart:2278) #6 _startServer.<anonymous closure> (file:///server.dart:88:12) #7 _RootZone.runUnary (dart:async/zone.dart:1371) #8 _FutureListener.handleValue (dart:async/future_impl.dart:129) #9 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636) #10 _Future._propagateToListeners (dart:async/future_impl.dart:665) #11 _Future._completeWithValue (dart:async/future_impl.dart:478) #12 Future.wait.<anonymous closure> (dart:async/future.dart:362) #13 _RootZone.runUnary (dart:async/zone.dart:1371) #14 _FutureListener.handleValue (dart:async/future_impl.dart:129) #15 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636) #16 _Future._propagateToListeners (dart:async/future_impl.dart:665) #17 _Future._completeWithValue (dart:async/future_impl.dart:478) #18 Future.wait.<anonymous closure> (dart:async/future.dart:362) #19 _RootZone.runUnary (dart:async/zone.dart:1371) #20 _FutureListener.handleValue (dart:async/future_impl.dart:129) #21 _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636) #22 _Future._propagateToListeners (dart:async/future_impl.dart:665) #23 _Future._completeWithValue (dart:async/future_impl.dart:478) #24 _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:510) #25 _microtaskLoop (dart:async/schedule_microtask.dart:41) #26 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50) #27 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:99) #28 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:152)
Completely untested at the moment because I don't have a mysql setup right now, but at least it compiles. If it works, it should boost performance by a bit, but it's still not optimal. (something along the lines of async-mysql-connector should be better)