Browse Source

Bump ffead-cpp from v5.2 to v5.3 (#6535)

Sumeet Chhetri 4 years ago
parent
commit
6050b43a96
62 changed files with 579 additions and 426 deletions
  1. 21 3
      frameworks/C++/ffead-cpp/benchmark_config.json
  2. 159 146
      frameworks/C++/ffead-cpp/config.toml
  3. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-apache.dockerfile
  4. 2 2
      frameworks/C++/ffead-cpp/ffead-cpp-base-debug.dockerfile
  5. 2 2
      frameworks/C++/ffead-cpp/ffead-cpp-base.dockerfile
  6. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-cinatra.dockerfile
  7. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-crystal-h2o.dockerfile
  8. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-crystal-http.dockerfile
  9. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-d-hunt.dockerfile
  10. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-drogon.dockerfile
  11. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-go-fasthttp.dockerfile
  12. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-go-gnet.dockerfile
  13. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-h2o.dockerfile
  14. 2 2
      frameworks/C++/ffead-cpp/ffead-cpp-java-base.dockerfile
  15. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-java-firenio.dockerfile
  16. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-java-rapidoid.dockerfile
  17. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-java-wizzardo-http.dockerfile
  18. 1 4
      frameworks/C++/ffead-cpp/ffead-cpp-julia-http.dockerfile
  19. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-libreactor.dockerfile
  20. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-lithium.dockerfile
  21. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-mongo-raw.dockerfile
  22. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-mysql.dockerfile
  23. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-nginx.dockerfile
  24. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-profiled.dockerfile
  25. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-profiled.dockerfile
  26. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async.dockerfile
  27. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-clibpqb-profiled.dockerfile
  28. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-profiled.dockerfile
  29. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw.dockerfile
  30. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-postgresql.dockerfile
  31. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-rust-actix.dockerfile
  32. 2 2
      frameworks/C++/ffead-cpp/ffead-cpp-rust-base.dockerfile
  33. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-rust-hyper.dockerfile
  34. 2 2
      frameworks/C++/ffead-cpp/ffead-cpp-rust-rocket-base.dockerfile
  35. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-rust-rocket.dockerfile
  36. 0 2
      frameworks/C++/ffead-cpp/ffead-cpp-rust-thruster.dockerfile
  37. 59 0
      frameworks/C++/ffead-cpp/ffead-cpp-seastar-base.dockerfile
  38. 5 0
      frameworks/C++/ffead-cpp/ffead-cpp-seastar.dockerfile
  39. 11 3
      frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-clibpqb-profiled-base.dockerfile
  40. 6 3
      frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-profiled-base.dockerfile
  41. 6 3
      frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-clibpqb-profiled-base.dockerfile
  42. 6 3
      frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-profiled-base.dockerfile
  43. 2 4
      frameworks/C++/ffead-cpp/ffead-cpp-swift-nio.dockerfile
  44. 2 2
      frameworks/C++/ffead-cpp/ffead-cpp-v-base.dockerfile
  45. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-v-picov.dockerfile
  46. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp-v-vweb.dockerfile
  47. 1 3
      frameworks/C++/ffead-cpp/ffead-cpp.dockerfile
  48. 31 11
      frameworks/C++/ffead-cpp/install_ffead-cpp-backends.sh
  49. 44 4
      frameworks/C++/ffead-cpp/install_ffead-cpp-framework.sh
  50. 8 2
      frameworks/C++/ffead-cpp/install_ffead-cpp-sql-raw-profiled.sh
  51. 7 0
      frameworks/C++/ffead-cpp/run_ffead.sh
  52. 21 0
      frameworks/C++/ffead-cpp/sql-async-profiled-install-clang-dbg.sh
  53. 3 33
      frameworks/C++/ffead-cpp/sql-async-profiled-install-clang.sh
  54. 3 31
      frameworks/C++/ffead-cpp/sql-async-profiled-install.sh
  55. 3 33
      frameworks/C++/ffead-cpp/sql-profiled-install-clang.sh
  56. 3 31
      frameworks/C++/ffead-cpp/sql-profiled-install.sh
  57. 54 0
      frameworks/C++/ffead-cpp/sql-profiled-util.sh
  58. 1 0
      frameworks/C++/ffead-cpp/te-benchmark-um-mgr/src/TeBkUmMgr.cpp
  59. 8 5
      frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/include/TeBkUmLpqAsync.h
  60. 73 3
      frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/src/TeBkUmLpqAsync.cpp
  61. 1 0
      frameworks/C++/ffead-cpp/te-benchmark-um-pq/src/TeBkUmLpq.cpp
  62. 1 0
      frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUm.cpp

+ 21 - 3
frameworks/C++/ffead-cpp/benchmark_config.json

@@ -323,7 +323,7 @@
 			"port": 8080,
 			"approach": "Realistic",
 			"classification": "Fullstack",
-			"database": "mongodb",
+			"database": "None",
 			"framework": "ffead-cpp",
 			"language": "C++",
 			"orm": "Full",
@@ -334,7 +334,26 @@
 			"display_name": "ffead-cpp-nginx",
 			"notes": "",
 			"versus": "",
-			"tags": []
+			"tags": ["broken"]
+		},
+		"seastar": {
+			"json_url": "/te-benchmark-um/json",
+			"plaintext_url": "/plaintext",
+			"port": 8080,
+			"approach": "Realistic",
+			"classification": "Fullstack",
+			"database": "None",
+			"framework": "ffead-cpp",
+			"language": "C++",
+			"orm": "None",
+			"platform": "None",
+			"webserver": "seastar-http",
+			"os": "Linux",
+			"database_os": "Linux",
+			"display_name": "ffead-cpp-seastar",
+			"notes": "",
+			"versus": "",
+			"tags": ["broken"]
 		},
 		"apache": {
 			"json_url": "/te-benchmark-um/json",
@@ -670,4 +689,3 @@
 		}
 	}]
 }
-

+ 159 - 146
frameworks/C++/ffead-cpp/config.toml

@@ -1,7 +1,24 @@
 [framework]
 name = "ffead-cpp"
 
-[java-wizzardo-http]
+[main]
+urls.plaintext = "/plaintext"
+urls.json = "/te-benchmark-um/json"
+urls.db = "/te-benchmark-um/db"
+urls.query = "/te-benchmark-um/queries?queries="
+urls.update = "/te-benchmark-um/updates?queries="
+urls.fortune = "/te-benchmark-um/fortunes"
+approach = "Realistic"
+classification = "Fullstack"
+database = "mongodb"
+database_os = "Linux"
+os = "Linux"
+orm = "Full"
+platform = "None"
+webserver = "ffead-cpp"
+versus = ""
+
+[libreactor]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -11,10 +28,10 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "wizzardo-http"
+webserver = "libreactor"
 versus = ""
 
-[go-fasthttp]
+[crystal-http]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -24,25 +41,23 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "fasthttp"
+webserver = "crystal-http"
 versus = ""
 
-[postgresql-raw-async-clibpqb-profiled]
-urls.db = "/te-benchmark-um-pq-async/db"
-urls.query = "/te-benchmark-um-pq-async/queries?queries="
-urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
-urls.fortune = "/te-benchmark-um-pq-async/fortunes"
+[d-hunt]
+urls.plaintext = "/plaintext"
+urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
 classification = "Fullstack"
-database = "postgres"
+database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "Raw"
+orm = "None"
 platform = "None"
-webserver = "ffead-cpp"
+webserver = "hunt"
 versus = ""
 
-[java-rapidoid]
+[go-gnet]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -52,14 +67,30 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "rapidoid"
+webserver = "gnet"
 versus = ""
 
-[postgresql-raw-profiled]
+[rust-actix]
+urls.plaintext = "/plaintext"
+urls.json = "/te-benchmark-um/json"
+approach = "Realistic"
+classification = "Fullstack"
+database = "None"
+database_os = "Linux"
+os = "Linux"
+orm = "None"
+platform = "None"
+webserver = "actix"
+versus = ""
+
+[v-picov]
+urls.plaintext = "/plaintext"
+urls.json = "/te-benchmark-um-pq/json"
 urls.db = "/te-benchmark-um-pq/db"
 urls.query = "/te-benchmark-um-pq/queries?queries="
 urls.update = "/te-benchmark-um-pq/updates?queries="
 urls.fortune = "/te-benchmark-um-pq/fortunes"
+urls.cached_query = "/te-benchmark-um-pq/cached-worlds?count="
 approach = "Realistic"
 classification = "Fullstack"
 database = "postgres"
@@ -67,10 +98,10 @@ database_os = "Linux"
 os = "Linux"
 orm = "Raw"
 platform = "None"
-webserver = "ffead-cpp"
+webserver = "picov"
 versus = ""
 
-[crystal-h2o]
+[java-firenio]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -80,10 +111,10 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "h2o.cr"
+webserver = "firenio"
 versus = ""
 
-[mysql]
+[postgresql]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 urls.db = "/te-benchmark-um/db"
@@ -92,7 +123,7 @@ urls.update = "/te-benchmark-um/updates?queries="
 urls.fortune = "/te-benchmark-um/fortunes"
 approach = "Realistic"
 classification = "Fullstack"
-database = "mysql"
+database = "postgres"
 database_os = "Linux"
 os = "Linux"
 orm = "Full"
@@ -100,7 +131,7 @@ platform = "None"
 webserver = "ffead-cpp"
 versus = ""
 
-[v-picov]
+[postgresql-raw]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um-pq/json"
 urls.db = "/te-benchmark-um-pq/db"
@@ -115,119 +146,114 @@ database_os = "Linux"
 os = "Linux"
 orm = "Raw"
 platform = "None"
-webserver = "picov"
+webserver = "ffead-cpp"
 versus = ""
 
-[rust-actix]
-urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+[postgresql-raw-profiled]
+urls.db = "/te-benchmark-um-pq/db"
+urls.query = "/te-benchmark-um-pq/queries?queries="
+urls.update = "/te-benchmark-um-pq/updates?queries="
+urls.fortune = "/te-benchmark-um-pq/fortunes"
 approach = "Realistic"
 classification = "Fullstack"
-database = "None"
+database = "postgres"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
+orm = "Raw"
 platform = "None"
-webserver = "actix"
+webserver = "ffead-cpp"
 versus = ""
 
-[cinatra]
-urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+[postgresql-raw-clibpqb-profiled]
+urls.db = "/te-benchmark-um-pq/db"
+urls.query = "/te-benchmark-um-pq/queries?queries="
+urls.update = "/te-benchmark-um-pq/updates?queries="
+urls.fortune = "/te-benchmark-um-pq/fortunes"
 approach = "Realistic"
 classification = "Fullstack"
-database = "None"
+database = "postgres"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
+orm = "Raw"
 platform = "None"
-webserver = "cinatra"
+webserver = "ffead-cpp"
 versus = ""
 
-[d-hunt]
+[postgresql-raw-async]
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+urls.json = "/te-benchmark-um-pq-async/json"
+urls.db = "/te-benchmark-um-pq-async/db"
+urls.query = "/te-benchmark-um-pq-async/queries?queries="
+urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
+urls.fortune = "/te-benchmark-um-pq-async/fortunes"
+urls.cached_query = "/te-benchmark-um-pq-async/cached-worlds?count="
 approach = "Realistic"
 classification = "Fullstack"
-database = "None"
+database = "postgres"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
+orm = "Raw"
 platform = "None"
-webserver = "hunt"
+webserver = "ffead-cpp"
 versus = ""
 
-[rust-hyper]
-urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+[postgresql-raw-async-profiled]
+urls.db = "/te-benchmark-um-pq-async/db"
+urls.query = "/te-benchmark-um-pq-async/queries?queries="
+urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
+urls.fortune = "/te-benchmark-um-pq-async/fortunes"
 approach = "Realistic"
 classification = "Fullstack"
-database = "None"
+database = "postgres"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
+orm = "Raw"
 platform = "None"
-webserver = "hyper"
+webserver = "ffead-cpp"
 versus = ""
 
-[lithium]
-urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um/json"
+[postgresql-raw-async-clibpqb-profiled]
+urls.db = "/te-benchmark-um-pq-async/db"
+urls.query = "/te-benchmark-um-pq-async/queries?queries="
+urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
+urls.fortune = "/te-benchmark-um-pq-async/fortunes"
 approach = "Realistic"
 classification = "Fullstack"
-database = "None"
+database = "postgres"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
+orm = "Raw"
 platform = "None"
-webserver = "lithium"
+webserver = "ffead-cpp"
 versus = ""
 
-[drogon]
+[nginx]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
 classification = "Fullstack"
-database = "None"
-database_os = "Linux"
-os = "Linux"
-orm = "None"
-platform = "None"
-webserver = "drogon"
-versus = ""
-
-[mongo-raw]
-urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-mgr/json"
-urls.db = "/te-benchmark-um-mgr/db"
-urls.query = "/te-benchmark-um-mgr/queries?queries="
-urls.update = "/te-benchmark-um-mgr/updates?queries="
-urls.fortune = "/te-benchmark-um-mgr/fortunes"
-urls.cached_query = "/te-benchmark-um-mgr/cached-worlds?count="
-approach = "Realistic"
-classification = "Fullstack"
 database = "mongodb"
 database_os = "Linux"
 os = "Linux"
-orm = "Raw"
+orm = "Full"
 platform = "None"
-webserver = "ffead-cpp"
+webserver = "nginx"
 versus = ""
 
-[rust-thruster]
+[seastar]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
 classification = "Fullstack"
-database = "None"
+database = "mongodb"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
+orm = "Full"
 platform = "None"
-webserver = "thruster"
+webserver = "seastar-http"
 versus = ""
 
-[go-gnet]
+[apache]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -235,22 +261,22 @@ classification = "Fullstack"
 database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "None"
+orm = "Full"
 platform = "None"
-webserver = "gnet"
+webserver = "apache"
 versus = ""
 
-[postgresql-raw-async]
+[mongo-raw]
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-pq-async/json"
-urls.db = "/te-benchmark-um-pq-async/db"
-urls.query = "/te-benchmark-um-pq-async/queries?queries="
-urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
-urls.fortune = "/te-benchmark-um-pq-async/fortunes"
-urls.cached_query = "/te-benchmark-um-pq-async/cached-worlds?count="
+urls.json = "/te-benchmark-um-mgr/json"
+urls.db = "/te-benchmark-um-mgr/db"
+urls.query = "/te-benchmark-um-mgr/queries?queries="
+urls.update = "/te-benchmark-um-mgr/updates?queries="
+urls.fortune = "/te-benchmark-um-mgr/fortunes"
+urls.cached_query = "/te-benchmark-um-mgr/cached-worlds?count="
 approach = "Realistic"
 classification = "Fullstack"
-database = "postgres"
+database = "mongodb"
 database_os = "Linux"
 os = "Linux"
 orm = "Raw"
@@ -258,7 +284,7 @@ platform = "None"
 webserver = "ffead-cpp"
 versus = ""
 
-[rust-rocket]
+[lithium]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -268,23 +294,23 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "rocket"
+webserver = "lithium"
 versus = ""
 
-[nginx]
+[cinatra]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
 classification = "Fullstack"
-database = "mongodb"
+database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "Full"
+orm = "None"
 platform = "None"
-webserver = "nginx"
+webserver = "cinatra"
 versus = ""
 
-[apache]
+[drogon]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -292,27 +318,25 @@ classification = "Fullstack"
 database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "Full"
+orm = "None"
 platform = "None"
-webserver = "apache"
+webserver = "drogon"
 versus = ""
 
-[postgresql-raw-async-profiled]
-urls.db = "/te-benchmark-um-pq-async/db"
-urls.query = "/te-benchmark-um-pq-async/queries?queries="
-urls.update = "/te-benchmark-um-pq-async/bupdates?queries="
-urls.fortune = "/te-benchmark-um-pq-async/fortunes"
+[h2o]
+urls.plaintext = "/plaintext"
+urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
 classification = "Fullstack"
-database = "postgres"
+database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "Raw"
+orm = "None"
 platform = "None"
-webserver = "ffead-cpp"
+webserver = "h2o"
 versus = ""
 
-[v-vweb]
+[crystal-h2o]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -322,10 +346,10 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "vweb"
+webserver = "h2o.cr"
 versus = ""
 
-[postgresql]
+[mysql]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 urls.db = "/te-benchmark-um/db"
@@ -334,7 +358,7 @@ urls.update = "/te-benchmark-um/updates?queries="
 urls.fortune = "/te-benchmark-um/fortunes"
 approach = "Realistic"
 classification = "Fullstack"
-database = "postgres"
+database = "mysql"
 database_os = "Linux"
 os = "Linux"
 orm = "Full"
@@ -342,25 +366,20 @@ platform = "None"
 webserver = "ffead-cpp"
 versus = ""
 
-[postgresql-raw]
+[go-fasthttp]
 urls.plaintext = "/plaintext"
-urls.json = "/te-benchmark-um-pq/json"
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
-urls.cached_query = "/te-benchmark-um-pq/cached-worlds?count="
+urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
 classification = "Fullstack"
-database = "postgres"
+database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "Raw"
+orm = "None"
 platform = "None"
-webserver = "ffead-cpp"
+webserver = "fasthttp"
 versus = ""
 
-[swift-nio]
+[julia-http]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -370,27 +389,23 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "swift-nio"
+webserver = "julia-http"
 versus = ""
 
-[main]
+[swift-nio]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
-urls.db = "/te-benchmark-um/db"
-urls.query = "/te-benchmark-um/queries?queries="
-urls.update = "/te-benchmark-um/updates?queries="
-urls.fortune = "/te-benchmark-um/fortunes"
 approach = "Realistic"
 classification = "Fullstack"
-database = "mongodb"
+database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "Full"
+orm = "None"
 platform = "None"
-webserver = "ffead-cpp"
+webserver = "swift-nio"
 versus = ""
 
-[java-firenio]
+[rust-hyper]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -400,10 +415,10 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "firenio"
+webserver = "hyper"
 versus = ""
 
-[libreactor]
+[rust-thruster]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -413,25 +428,23 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "libreactor"
+webserver = "thruster"
 versus = ""
 
-[postgresql-raw-clibpqb-profiled]
-urls.db = "/te-benchmark-um-pq/db"
-urls.query = "/te-benchmark-um-pq/queries?queries="
-urls.update = "/te-benchmark-um-pq/updates?queries="
-urls.fortune = "/te-benchmark-um-pq/fortunes"
+[rust-rocket]
+urls.plaintext = "/plaintext"
+urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
 classification = "Fullstack"
-database = "postgres"
+database = "None"
 database_os = "Linux"
 os = "Linux"
-orm = "Raw"
+orm = "None"
 platform = "None"
-webserver = "ffead-cpp"
+webserver = "rocket"
 versus = ""
 
-[h2o]
+[v-vweb]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -441,10 +454,10 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "h2o"
+webserver = "vweb"
 versus = ""
 
-[crystal-http]
+[java-rapidoid]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -454,10 +467,10 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "crystal-http"
+webserver = "rapidoid"
 versus = ""
 
-[julia-http]
+[java-wizzardo-http]
 urls.plaintext = "/plaintext"
 urls.json = "/te-benchmark-um/json"
 approach = "Realistic"
@@ -467,5 +480,5 @@ database_os = "Linux"
 os = "Linux"
 orm = "None"
 platform = "None"
-webserver = "julia-http"
+webserver = "wizzardo-http"
 versus = ""

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-apache.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 apache mongo

+ 2 - 2
frameworks/C++/ffead-cpp/ffead-cpp-base-debug.dockerfile

@@ -1,6 +1,6 @@
 FROM ubuntu:20.04
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2-debug"
+LABEL version="5.3-debug"
 LABEL description="Base ffead-cpp docker image with commit id - master"
 
 ENV IROOT=/installs
@@ -13,7 +13,7 @@ RUN mkdir /installs
 COPY te-benchmark-um/ /installs/te-benchmark-um/
 COPY te-benchmark-um-pq/ /installs/te-benchmark-um-pq/
 COPY te-benchmark-um-mgr/ /installs/te-benchmark-um-mgr/
-COPY te-benchmark-um-pq-async /installs/te-benchmark-um-pq-async/
+COPY te-benchmark-um-pq-async/ /installs/te-benchmark-um-pq-async/
 
 WORKDIR ${IROOT}
 

+ 2 - 2
frameworks/C++/ffead-cpp/ffead-cpp-base.dockerfile

@@ -1,6 +1,6 @@
 FROM ubuntu:20.04
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="Base ffead-cpp docker image with commit id - master"
 
 ENV IROOT=/installs
@@ -13,7 +13,7 @@ RUN mkdir /installs
 COPY te-benchmark-um/ /installs/te-benchmark-um/
 COPY te-benchmark-um-pq/ /installs/te-benchmark-um-pq/
 COPY te-benchmark-um-mgr/ /installs/te-benchmark-um-mgr/
-COPY te-benchmark-um-pq-async /installs/te-benchmark-um-pq-async/
+COPY te-benchmark-um-pq-async/ /installs/te-benchmark-um-pq-async/
 
 WORKDIR ${IROOT}
 

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-cinatra.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 cinatra

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-crystal-h2o.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -21,6 +21,4 @@ RUN shards install && gcc -shared -O3 lib/h2o/src/ext/h2o.c -I/usr/include -fPIC
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 crystal-h2o

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-crystal-http.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -18,6 +18,4 @@ RUN crystal build --release --no-debug crystal-ffead-cpp.cr -o crystal-ffead-cpp
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 crystal-http

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-d-hunt.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -36,6 +36,4 @@ RUN dub upgrade --verbose && dub build --build=release --arch=x86_64 --compiler=
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 d-hunt

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-drogon.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 drogon

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-go-fasthttp.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -17,6 +17,4 @@ RUN make && cp fasthttp-ffead-cpp $IROOT/ && rm -rf ${IROOT}/lang-server-backend
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 go-fasthttp

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-go-gnet.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -17,6 +17,4 @@ RUN make && cp gnet-ffead-cpp $IROOT/ && rm -rf ${IROOT}/lang-server-backends
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 go-gnet

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-h2o.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -37,6 +37,4 @@ RUN chmod +x h2o.sh
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 h2o

+ 2 - 2
frameworks/C++/ffead-cpp/ffead-cpp-java-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="Base java docker image with master code"
 
 ENV IROOT=/installs

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-java-firenio.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-java-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-java-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 java-firenio

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-java-rapidoid.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-java-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-java-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 java-rapidoid

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-java-wizzardo-http.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-java-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-java-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 java-wizzardo-http

+ 1 - 4
frameworks/C++/ffead-cpp/ffead-cpp-julia-http.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -25,7 +25,4 @@ RUN julia -e 'import Pkg; Pkg.update()' && \
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 julia-http
-

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-libreactor.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -24,6 +24,4 @@ RUN make && cp libreactor-ffead-cpp $IROOT/ && rm -rf ${IROOT}/lang-server-backe
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 libreactor

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-lithium.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 lithium

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-mongo-raw.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 emb mongo-raw memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-mysql.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb mysql

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-nginx.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 nginx mongo

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-clibpqb-profiled.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-async-clibpqb-profiled-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-async-clibpqb-profiled-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb postgresql-raw-async memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async-profiled.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-async-profiled-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-async-profiled-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb postgresql-raw-async memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-async.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb postgresql-raw-async memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-clibpqb-profiled.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-clibpqb-profiled-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-clibpqb-profiled-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb postgresql-raw memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw-profiled.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-profiled-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-sql-raw-profiled-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb postgresql-raw memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql-raw.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb postgresql-raw memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-postgresql.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0-sql emb postgresql redis

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-rust-actix.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-rust-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-rust-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 rust-actix

+ 2 - 2
frameworks/C++/ffead-cpp/ffead-cpp-rust-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="Base rust docker image with ffead-cpp v4.0 - commit id - master"
 
 ENV IROOT=/installs

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-rust-hyper.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-rust-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-rust-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 rust-hyper

+ 2 - 2
frameworks/C++/ffead-cpp/ffead-cpp-rust-rocket-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="Base rust rocket docker image with ffead-cpp v5.0 - commit id - master"
 
 ENV IROOT=/installs

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-rust-rocket.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-rust-rocket-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-rust-rocket-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 rust-rocket

+ 0 - 2
frameworks/C++/ffead-cpp/ffead-cpp-rust-thruster.dockerfile

@@ -4,6 +4,4 @@ ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 rust-thruster

+ 59 - 0
frameworks/C++/ffead-cpp/ffead-cpp-seastar-base.dockerfile

@@ -0,0 +1,59 @@
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
+
+#seastar needs ubuntu 20 and boost >= 1.66
+WORKDIR ${IROOT}
+
+ENV DEBIAN_FRONTEND noninteractive
+
+RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/libinter.so /usr/local/lib/libdinter.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libte_benchmark_um_pq.so /usr/local/lib/libte_benchmark_um_pq.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libte_benchmark_um_mgr.so /usr/local/lib/libte_benchmark_um_mgr.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libte_benchmark_um_pq_async.so /usr/local/lib/libte_benchmark_um_pq_async.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libffead-modules.so /usr/local/lib/libffead-modules.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libffead-framework.so /usr/local/lib/libffead-framework.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libinter.so /usr/local/lib/libinter.so && \
+	ln -s ${IROOT}/ffead-cpp-5.0/lib/libdinter.so /usr/local/lib/libdinter.so && \
+	ldconfig
+
+ENV FFEAD_CPP_PATH=${IROOT}/ffead-cpp-5.0
+ENV LD_LIBRARY_PATH=${IROOT}/:${IROOT}/lib:${FFEAD_CPP_PATH}/lib:/usr/local/lib:$LD_LIBRARY_PATH
+
+#seastar need hwloc 2
+RUN cd /tmp && wget -q https://github.com/open-mpi/hwloc/releases/download/hwloc-2.1.0/hwloc-2.1.0.tar.gz && \
+	tar xvf hwloc-2.1.0.tar.gz && cd hwloc-2.1.0 && ./configure --prefix=/usr/local/ && make install
+RUN rm -rf /tmp/hwloc-2.1.0
+
+RUN apt update -y && apt install -y pkg-config liblzma-dev libunistring-dev libudev-dev bridge-utils \
+	net-tools iproute2 kmod sudo qemu-kvm libvirt-clients libvirt-daemon-system
+	
+RUN sudo adduser $(whoami) libvirt
+RUN sudo adduser $(whoami) kvm
+RUN sudo adduser $(whoami) libvirt-qemu
+RUN sudo adduser $(whoami) libvirt-dnsmasq
+#RUN sudo chown $(whoami) /dev/kvm
+#RUN sudo chmod 777 /dev/kvm
+
+#seastar needs gcc-10
+RUN git clone https://github.com/sumeetchhetri/seastar && cd seastar && git checkout for_ffead
+RUN cd seastar && chmod +x *.sh && apt update -y && ./install-dependencies.sh && apt remove -y libfmt-dev && \
+	./configure.py --mode=release --cook fmt && ./configure.py --mode=release --prefix=/usr/local
+RUN cd seastar && ninja -C build/release install && cp build/release/_cooking/installed/lib/libfmt.a /usr/local/lib/ && \
+	cp -rf build/release/_cooking/installed/include/fmt /usr/local/include/ && cp apps/lib/stop_signal.hh /${IROOT}/lang-server-backends/c++/seastar && \
+	cd ${IROOT} && rm -rf ${IROOT}/seastar && mkdir -p ${IROOT}/seastar/build/release/_cooking/installed/lib/ && \
+	cp /usr/local/lib/libfmt.a ${IROOT}/seastar/build/release/_cooking/installed/lib/
+
+WORKDIR ${IROOT}/lang-server-backends/c++/seastar
+
+#RUN g++ -g SeastarFfeadCpp.cpp -I/home/mavuser/ffead-cpp-5.0/include/ -I/usr/include/libmongoc-1.0 \
+#	-I/usr/include/libbson-1.0 -I. -I/usr/local/include $(pkg-config --libs --cflags --static seastar) -lffead-framework \
+#	-lffead-modules -o ffead-cpp-seastar
+
+RUN g++ SeastarFfeadCpp.cpp -O3 -I. $(pkg-config --libs --cflags --static seastar) -lffead-framework -o ffead-cpp-seastar
+
+RUN chmod +x run.sh
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-5.0 seastar
+

+ 5 - 0
frameworks/C++/ffead-cpp/ffead-cpp-seastar.dockerfile

@@ -0,0 +1,5 @@
+FROM sumeetchhetri/ffead-cpp-5.0-seastar:5.3
+
+WORKDIR /
+
+CMD ./run_ffead.sh ffead-cpp-5.0 seastar

+ 11 - 3
frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-clibpqb-profiled-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="SQL Raw Custom libpq batch patched Base ffead-cpp docker image with commit id - master"
 
 WORKDIR /tmp
@@ -79,7 +79,15 @@ ENV accept accept
 
 WORKDIR ${IROOT}
 
+COPY sql-profiled-util.sh ${IROOT}/
+RUN chmod 755 ${IROOT}/sql-profiled-util.sh
+RUN ./sql-profiled-util.sh batch clang async
+
+#COPY TeBkUmLpqAsync.cpp ${IROOT}/ffead-cpp-src/web/te-benchmark-um-pq-async/src/
+#COPY TeBkUmLpqAsync.h ${IROOT}/ffead-cpp-src/web/te-benchmark-um-pq-async/include/
+#COPY LibpqDataSourceImpl.cpp ${IROOT}/ffead-cpp-src/src/modules/sdorm/sql/libpq/
+#COPY LibpqDataSourceImpl.h ${IROOT}/ffead-cpp-src/src/modules/sdorm/sql/libpq/
+
 COPY sql-async-profiled-install-clang.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-async-profiled-install-clang.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
-
 RUN ./sql-async-profiled-install-clang.sh batch

+ 6 - 3
frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-async-profiled-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="SQL Raw Base ffead-cpp docker image with commit id - master"
 
 WORKDIR /tmp
@@ -79,7 +79,10 @@ ENV accept accept
 
 WORKDIR ${IROOT}
 
+COPY sql-profiled-util.sh ${IROOT}/
+RUN chmod 755 ${IROOT}/sql-profiled-util.sh
+RUN ./sql-profiled-util.sh nobatch noclang async
+
 COPY sql-async-profiled-install.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-async-profiled-install.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
-
 RUN ./sql-async-profiled-install.sh

+ 6 - 3
frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-clibpqb-profiled-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="SQL Raw Custom libpq batch patched Base ffead-cpp docker image with commit id - master"
 
 WORKDIR /tmp
@@ -79,7 +79,10 @@ ENV accept accept
 
 WORKDIR ${IROOT}
 
+COPY sql-profiled-util.sh ${IROOT}/
+RUN chmod 755 ${IROOT}/sql-profiled-util.sh
+RUN ./sql-profiled-util.sh batch clang noasync
+
 COPY sql-profiled-install-clang.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-profiled-install-clang.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
-
 RUN ./sql-profiled-install-clang.sh batch

+ 6 - 3
frameworks/C++/ffead-cpp/ffead-cpp-sql-raw-profiled-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="SQL Raw Base ffead-cpp docker image with commit id - master"
 
 WORKDIR /tmp
@@ -79,7 +79,10 @@ ENV accept accept
 
 WORKDIR ${IROOT}
 
+COPY sql-profiled-util.sh ${IROOT}/
+RUN chmod 755 ${IROOT}/sql-profiled-util.sh
+RUN ./sql-profiled-util.sh nobatch noclang noasync
+
 COPY sql-profiled-install.sh install_ffead-cpp-sql-raw-profiled.sh ${IROOT}/
 RUN chmod 755 ${IROOT}/sql-profiled-install.sh ${IROOT}/install_ffead-cpp-sql-raw-profiled.sh
-
 RUN ./sql-profiled-install.sh

+ 2 - 4
frameworks/C++/ffead-cpp/ffead-cpp-swift-nio.dockerfile

@@ -1,4 +1,4 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
@@ -14,7 +14,7 @@ RUN rm -f /usr/local/lib/libffead-* /usr/local/lib/libte_benc* /usr/local/lib/li
 WORKDIR ${IROOT}
 RUN apt-get update -y && apt-get install -y --no-install-recommends clang libicu-dev libpython2.7-dev libtinfo5 libncurses5 libz3-dev \
 	 && rm -rf /var/lib/apt/lists/*
-
+	 
 RUN wget -q https://swift.org/builds/swift-5.3-release/ubuntu2004/swift-5.3-RELEASE/swift-5.3-RELEASE-ubuntu20.04.tar.gz
 RUN tar -xzf swift-5.3-RELEASE-ubuntu20.04.tar.gz
 RUN mv swift-5.3-RELEASE-ubuntu20.04 /opt/ && rm -f swift-5.3-RELEASE-ubuntu20.04.tar.gz
@@ -28,6 +28,4 @@ RUN swift build --enable-test-discovery -c release -Xlinker "-L/usr/local/lib" -
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 swift-nio

+ 2 - 2
frameworks/C++/ffead-cpp/ffead-cpp-v-base.dockerfile

@@ -1,6 +1,6 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 LABEL maintainer="Sumeet Chhetri"
-LABEL version="5.2"
+LABEL version="5.3"
 LABEL description="Base v docker image with ffead-cpp v4.0 commit id - master"
 
 ENV IROOT=/installs

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-v-picov.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-v-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-v-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 v-picov postgresql-raw memory

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp-v-vweb.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-v-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-v-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 v-vweb

+ 1 - 3
frameworks/C++/ffead-cpp/ffead-cpp.dockerfile

@@ -1,9 +1,7 @@
-FROM sumeetchhetri/ffead-cpp-5.0-base:5.2
+FROM sumeetchhetri/ffead-cpp-5.0-base:5.3
 
 ENV IROOT=/installs
 
 WORKDIR /
 
-EXPOSE 8080
-
 CMD ./run_ffead.sh ffead-cpp-5.0 emb mongo redis

+ 31 - 11
frameworks/C++/ffead-cpp/install_ffead-cpp-backends.sh

@@ -4,7 +4,7 @@ cd $IROOT
 
 git clone https://github.com/sumeetchhetri/ffead-cpp
 cd ffead-cpp
-git checkout 4e98d8ba1a11505a0b7b450285b20ac0ad7a104f -b 5.0
+git checkout 75bba206221cb6a3595cb5f7ba75108964c19138 -b 5.0
 rm -rf .git
 cd ..
 mv ffead-cpp ffead-cpp-src
@@ -27,7 +27,6 @@ then
 	CINATRA_INC="-DCINATRA_INCLUDES=${IROOT}/cinatra/include"
 	git clone https://github.com/sumeetchhetri/cinatra.git
 	cd cinatra
-	git checkout b3871a074f6107f57acf42a15fa872d4076436ab -b works
 	rm -rf .git
 fi
 
@@ -40,7 +39,6 @@ then
 	SRV_TYPE=SRV_DROGON
 	git clone --recurse-submodules https://github.com/sumeetchhetri/drogon
 	cd  drogon
-	git checkout a10934f3f85f361cde58a891d3cf1f1df3a8ea8a -b works
 	mkdir build
 	cd build
 	cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_CTL=off -DBUILD_EXAMPLES=off -DBUILD_ORM=off ..
@@ -54,26 +52,26 @@ if [ "$CURR_TYPE" = "nghttp2" ]
 then
 	apt install --no-install-recommends -y libjansson-dev libc-ares-dev libboost-all-dev
 	cd $IROOT
-	wget -q https://github.com/nghttp2/nghttp2/releases/download/v1.41.0/nghttp2-1.41.0.tar.gz
-	tar xf nghttp2-1.41.0.tar.gz
-	cd nghttp2-1.41.0
+	wget -q https://github.com/nghttp2/nghttp2/releases/download/v1.42.0/nghttp2-1.42.0.tar.gz
+	tar xf nghttp2-1.42.0.tar.gz
+	cd nghttp2-1.42.0
 	cmake -DENABLE_ASIO_LIB=on -GNinja .
 	ninja install
 	cd $IROOT
-	rm -rf nghttp2-1.41.0 nghttp2-1.41.0.tar.gz
+	rm -rf nghttp2-1.42.0 nghttp2-1.42.0.tar.gz
 fi
 
 CURR_TYPE="mongols"
 if [ "$CURR_TYPE" = "mongols" ]
 then
 	cd $IROOT
-	wget -q https://github.com/webcpp/mongols/archive/release-1.8.4.9.tar.gz
-	tar xf release-1.8.4.9.tar.gz
-	cd mongols-release-1.8.4.9/
+	wget -q https://github.com/webcpp/mongols/archive/release-1.8.4.12.tar.gz
+	tar xf release-1.8.4.12.tar.gz
+	cd mongols-release-1.8.4.12/
 	make clean && make -j4 && make install && ldconfig
 	cp -rf inc/mongols/lib/* /usr/local/include/
 	cd $IROOT
-	rm -rf mongols-release-1.8.4.9/ release-1.8.4.9.tar.gz
+	rm -rf mongols-release-1.8.4.12/ release-1.8.4.12.tar.gz
 fi
 
 CURR_TYPE="uv-cpp"
@@ -111,4 +109,26 @@ then
 	rm -rf CppServer
 fi
 
+CURR_TYPE="lsquic-no"
+if [ "$CURR_TYPE" = "lsquic" ]
+then
+	apt install --no-install-recommends -y libunwind-dev golang libevent-dev
+	cd $IROOT
+	git clone https://boringssl.googlesource.com/boringssl
+	cd boringssl
+	git checkout b117a3a0b7bd11fe6ebd503ec6b45d6b910b41a1
+	sed -i "s/-Werror//g" CMakeLists.txt
+	cmake -DCMAKE_BUILD_TYPE=Release . && make -j4
+	cd $IROOT 
+	git clone https://github.com/litespeedtech/lsquic.git
+	cd lsquic
+	git submodule init
+	git submodule update
+	cmake -DBORINGSSL_DIR=${IROOT}/boringssl . && make install -j4
+	cd $IROOT
+	rm -rf lsquic boringssl
+	apt remove -y golang
+	apt autoremove -y
+fi
+
 rm -rf /var/lib/apt/lists/*

+ 44 - 4
frameworks/C++/ffead-cpp/install_ffead-cpp-framework.sh

@@ -92,14 +92,34 @@ cd ffead-cpp-5.0-bin
 #cache related dockerfiles will add the cache.xml accordingly whenever needed
 chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
 ./server.sh &
+COUNTER=0
 while [ ! -f lib/libinter.so ]
 do
-	sleep 1
+    sleep 1
+    COUNTER=$((COUNTER+1))
+    if [ "$COUNTER" = 120 ]
+    then
+    	cat logs/jobs.log
+    	echo "ffead-cpp exiting exiting due to failure...."
+    	exit 1
+    fi
 done
+COUNTER=0
 while [ ! -f lib/libdinter.so ]
 do
-	sleep 1
+    sleep 1
+    COUNTER=$((COUNTER+1))
+    if [ "$COUNTER" = 120 ]
+    then
+    	cat logs/jobs.log
+    	echo "ffead-cpp exiting exiting due to failure....ddlib"
+    	exit 1
+    fi
 done
+echo "ffead-cpp start successful"
+sleep 5
+cd tests && rm -f test.csv && cp ${IROOT}/ffead-cpp-src/tests/test-te.csv test.csv && chmod +x *.sh && ./runTests.sh
+echo "ffead-cpp normal shutdown"
 pkill ffead-cpp
 
 cd ${IROOT}/ffead-cpp-src/
@@ -131,14 +151,34 @@ cd ffead-cpp-5.0-bin
 #cache related dockerfiles will add the cache.xml accordingly whenever needed
 chmod 755 *.sh resources/*.sh rtdcf/autotools/*.sh
 ./server.sh &
+COUNTER=0
 while [ ! -f lib/libinter.so ]
 do
-	sleep 1
+    sleep 1
+    COUNTER=$((COUNTER+1))
+    if [ "$COUNTER" = 120 ]
+    then
+    	cat logs/jobs.log
+    	echo "ffead-cpp exiting exiting due to failure...."
+    	exit 1
+    fi
 done
+COUNTER=0
 while [ ! -f lib/libdinter.so ]
 do
-	sleep 1
+    sleep 1
+    COUNTER=$((COUNTER+1))
+    if [ "$COUNTER" = 120 ]
+    then
+    	cat logs/jobs.log
+    	echo "ffead-cpp exiting exiting due to failure....ddlib"
+    	exit 1
+    fi
 done
+echo "ffead-cpp start successful"
+sleep 5
+cd tests && rm -f test.csv && cp ${IROOT}/ffead-cpp-src/tests/test-te.csv test.csv && chmod +x *.sh && ./runTests.sh
+echo "ffead-cpp normal shutdown"
 pkill ffead-cpp
 
 cd ${IROOT}/ffead-cpp-src/

+ 8 - 2
frameworks/C++/ffead-cpp/install_ffead-cpp-sql-raw-profiled.sh

@@ -22,7 +22,7 @@ do
   then
   	cat ffead.log
   	cat logs/jobs.log
-    echo "exiting...."
+    echo "ffead-cpp exiting exiting due to failure...."
     exit 1
   fi
 done
@@ -35,10 +35,15 @@ do
   then
   	cat ffead.log
   	cat logs/jobs.log
-    echo "exiting....dlib"
+    echo "ffead-cpp exiting exiting due to failure....dlib"
     exit 1
   fi
 done
+echo "ffead-cpp start successful"
+sleep 5
+#cd tests && chmod +x *.sh && ./runTests.sh
+#echo "ffead-cpp normal shutdown"
+#cd -
 rm -f serv.ctrl
 pkill ffead-cpp
 
@@ -47,6 +52,7 @@ service postgresql start
 #For profiling/benchmarking
 
 sed -i 's|EVH_SINGLE=false|EVH_SINGLE=true|g' resources/server.prop
+#sed -i 's|LOGGING_ENABLED=false|LOGGING_ENABLED=true|g' resources/server.prop
 nohup bash -c "./server.sh > ffead.log &"
 sleep 10
 echo "ffead-cpp with sql-raw support launched"

+ 7 - 0
frameworks/C++/ffead-cpp/run_ffead.sh

@@ -8,6 +8,9 @@ rm -f /usr/local/lib/libdinter.so
 export FFEAD_CPP_PATH=${IROOT}/$1
 
 ln -s ${FFEAD_CPP_PATH}/lib/libte_benchmark_um.so /usr/local/lib/libte_benchmark_um.so
+ln -s ${FFEAD_CPP_PATH}/lib/libte_benchmark_um_pq.so /usr/local/lib/libte_benchmark_um_pq.so
+ln -s ${FFEAD_CPP_PATH}/lib/libte_benchmark_um_mgr.so /usr/local/lib/libte_benchmark_um_mgr.so
+ln -s ${FFEAD_CPP_PATH}/lib/libte_benchmark_um_pq_async.so /usr/local/lib/libte_benchmark_um_pq_async.so
 ln -s ${FFEAD_CPP_PATH}/lib/libffead-modules.so /usr/local/lib/libffead-modules.so
 ln -s ${FFEAD_CPP_PATH}/lib/libffead-framework.so /usr/local/lib/libffead-framework.so
 ln -s ${FFEAD_CPP_PATH}/lib/libinter.so /usr/local/lib/libinter.so
@@ -237,6 +240,10 @@ then
 	cd ${IROOT}
 	java -Xmx2G -Xms2G -server -XX:+UseNUMA -XX:+UseParallelGC -XX:+AggressiveOpts \
 		-jar wizzardo-ffead-cpp-all-1.0.jar $FFEAD_CPP_PATH 8080 env=prod
+elif [ "$2" = "seastar" ]
+then
+	cd ${IROOT}/lang-server-backends/c++/seastar
+	./ffead-cpp-seastar --port=8080 --address=0.0.0.0 --fcpdir=${FFEAD_CPP_PATH} -c$(nproc)
 fi
 
 wait

+ 21 - 0
frameworks/C++/ffead-cpp/sql-async-profiled-install-clang-dbg.sh

@@ -0,0 +1,21 @@
+cd $IROOT/ffead-cpp-src/
+
+rm -rf build
+mkdir build
+cd build
+CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -DSRV_EMB=on -DMOD_REDIS=on -DDEBUG=on ..
+make install && mv $IROOT/ffead-cpp-src/ffead-cpp-5.0-bin $IROOT/ffead-cpp-sql-raw
+
+#Start postgresql
+service postgresql stop
+#For profiling/benchmarking
+
+cd $IROOT/
+sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+#sed -i 's|-fprofile-instr-generate=/tmp/cprof.prof|-fprofile-instr-generate=/tmp/cprofdi.prof|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
+apt update -yqq && apt install -yqq vim gdb net-tools telnet iputils-ping
+./install_ffead-cpp-sql-raw-profiled.sh async
+
+#mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-5.0-sql
+#sed -i 's|localhost|tfb-database|g' $IROOT/ffead-cpp-5.0-sql/web/te-benchmark-um-pq-async/config/sdorm.xml
+

+ 3 - 33
frameworks/C++/ffead-cpp/sql-async-profiled-install-clang.sh

@@ -1,34 +1,4 @@
-mkdir /tmp/profile-data
-
-rm -rf $IROOT/ffead-cpp-5.0-sql
-
-if [ "$1" = "batch" ]
-then
-	apt remove -yqq libpq-dev
-	apt autoremove -yqq
-	apt update && apt install -y bison flex libreadline-dev
-	cd /tmp
-	wget -q https://github.com/an-tao/postgres/archive/batch_mode_ubuntu.tar.gz
-	tar -xzf batch_mode_ubuntu.tar.gz
-	cd postgres-batch_mode_ubuntu
-	./configure --prefix=/usr CFLAGS='-O2 -pipe -march=native'
-	make && make install
-fi
-
-apt update -yqq && apt install -yqq clang
-
 cd $IROOT/ffead-cpp-src/
-rm -rf CMakeCache.txt CMakeFiles
-rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq
-
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-mgr)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um/libte_benchmark_um${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-mgr/libte_benchmark_um_mgr${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq/libte_benchmark_um_pq${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-
-sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq-async/config/sdorm.xml
 
 rm -rf build
 mkdir build
@@ -41,7 +11,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-sed -i 's|cmake .|CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|-fprofile-instr-generate=/tmp/cprof.prof|-fprofile-instr-generate=/tmp/cprofdi.prof|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 ./install_ffead-cpp-sql-raw-profiled.sh async
 rm -rf $IROOT/ffead-cpp-sql-raw
@@ -53,7 +23,7 @@ cd build
 llvm-profdata-10 merge -output=/tmp/cprof.pgo  /tmp/cprof.prof
 #llvm-profdata-10 merge -output=/tmp/cprofdi.pgo  /tmp/cprofdi.prof
 ls -ltr /tmp/cprof*
-CC=/usr/bin/clang CXX=/usr/bin/clang++ CXXFLAGS="-march=native -flto -fprofile-instr-use=/tmp/cprof.pgo" cmake -DSRV_EMB=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on ..
+CC=/usr/bin/clang CXX=/usr/bin/clang++ CXXFLAGS="-march=native -flto -fprofile-instr-use=/tmp/cprof.pgo" cmake -DSRV_EMB=on -DMOD_REDIS=on ..
 make install && mv $IROOT/ffead-cpp-src/ffead-cpp-5.0-bin $IROOT/ffead-cpp-sql-raw
 
 #Start postgresql
@@ -61,7 +31,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-sed -i 's|cmake .|CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|-fprofile-instr-use=/tmp/cprof.pgo|-fprofile-instr-use=/tmp/cprofdi.pgo|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 ./install_ffead-cpp-sql-raw-profiled.sh async
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-5.0-sql

+ 3 - 31
frameworks/C++/ffead-cpp/sql-async-profiled-install.sh

@@ -1,32 +1,4 @@
-mkdir /tmp/profile-data
-
-rm -rf $IROOT/ffead-cpp-5.0-sql
-
-if [ "$1" = "batch" ]
-then
-	apt remove -yqq libpq-dev
-	apt autoremove -yqq
-	apt update && apt install -y bison flex libreadline-dev
-	cd /tmp
-	wget -q https://github.com/an-tao/postgres/archive/batch_mode_ubuntu.tar.gz
-	tar -xzf batch_mode_ubuntu.tar.gz
-	cd postgres-batch_mode_ubuntu
-	./configure --prefix=/usr CFLAGS='-O2 -pipe -march=native'
-	make && make install
-fi
-
 cd $IROOT/ffead-cpp-src/
-rm -rf CMakeCache.txt CMakeFiles
-rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq
-
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-mgr)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um/libte_benchmark_um${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-mgr/libte_benchmark_um_mgr${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq/libte_benchmark_um_pq${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-
-sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq-async/config/sdorm.xml
 
 rm -rf build
 mkdir build
@@ -39,7 +11,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-#sed -i 's|cmake .|cmake -DCMAKE_EXE_LINKER_FLAGS="-fprofile-dir=/tmp/profile-data -fprofile-generate" -DCMAKE_CXX_FLAGS="-march=native -fprofile-dir=/tmp/profile-data  -fprofile-generate" .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+#sed -i 's|cmake |cmake -DCMAKE_EXE_LINKER_FLAGS="-fprofile-dir=/tmp/profile-data -fprofile-generate" -DCMAKE_CXX_FLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-generate" |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 ./install_ffead-cpp-sql-raw-profiled.sh async
 rm -rf $IROOT/ffead-cpp-sql-raw
 
@@ -47,7 +19,7 @@ cd $IROOT/ffead-cpp-src
 rm -rf build
 mkdir build
 cd build
-CXXFLAGS="-march=native -flto -fprofile-dir=/tmp/profile-data -fprofile-use=/tmp/profile-data -fprofile-correction" cmake -DSRV_EMB=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on ..
+CXXFLAGS="-march=native -flto -fprofile-dir=/tmp/profile-data -fprofile-use=/tmp/profile-data -fprofile-correction" cmake -DSRV_EMB=on -DMOD_REDIS=on ..
 make install && mv $IROOT/ffead-cpp-src/ffead-cpp-5.0-bin $IROOT/ffead-cpp-sql-raw
 
 #Start postgresql
@@ -55,7 +27,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-#sed -i 's|cmake .|CXXFLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-use -fprofile-correction" cmake .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+#sed -i 's|cmake |CXXFLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-use -fprofile-correction" cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 ./install_ffead-cpp-sql-raw-profiled.sh async
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-5.0-sql
 

+ 3 - 33
frameworks/C++/ffead-cpp/sql-profiled-install-clang.sh

@@ -1,34 +1,4 @@
-mkdir /tmp/profile-data
-
-rm -rf $IROOT/ffead-cpp-5.0-sql
-
-if [ "$1" = "batch" ]
-then
-	apt remove -yqq libpq-dev
-	apt autoremove -yqq
-	apt update && apt install -y bison flex libreadline-dev
-	cd /tmp
-	wget -q https://github.com/an-tao/postgres/archive/batch_mode_ubuntu.tar.gz
-	tar -xzf batch_mode_ubuntu.tar.gz
-	cd postgres-batch_mode_ubuntu
-	./configure --prefix=/usr CFLAGS='-O2 -pipe -march=native'
-	make && make install
-fi
-
-apt update -yqq && apt install -yqq clang
-
 cd $IROOT/ffead-cpp-src/
-rm -rf CMakeCache.txt CMakeFiles
-rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq-async
-
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-mgr)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq-async)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um/libte_benchmark_um${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-mgr/libte_benchmark_um_mgr${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq-async/libte_benchmark_um_pq_async${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-
-sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq/config/sdorm.xml
 
 rm -rf build
 mkdir build
@@ -41,7 +11,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-sed -i 's|cmake .|CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|-fprofile-instr-generate=/tmp/cprof.prof|-fprofile-instr-generate=/tmp/cprofdi.prof|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 ./install_ffead-cpp-sql-raw-profiled.sh
 rm -rf $IROOT/ffead-cpp-sql-raw
@@ -53,7 +23,7 @@ cd build
 llvm-profdata-10 merge -output=/tmp/cprof.pgo  /tmp/cprof.prof
 #llvm-profdata-10 merge -output=/tmp/cprofdi.pgo  /tmp/cprofdi.prof
 ls -ltr /tmp/cprof*
-CC=/usr/bin/clang CXX=/usr/bin/clang++ CXXFLAGS="-march=native -flto -fprofile-instr-use=/tmp/cprof.pgo" cmake -DSRV_EMB=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on ..
+CC=/usr/bin/clang CXX=/usr/bin/clang++ CXXFLAGS="-march=native -flto -fprofile-instr-use=/tmp/cprof.pgo" cmake -DSRV_EMB=on -DMOD_REDIS=on ..
 make install && mv $IROOT/ffead-cpp-src/ffead-cpp-5.0-bin $IROOT/ffead-cpp-sql-raw
 
 #Start postgresql
@@ -61,7 +31,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-sed -i 's|cmake .|CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+sed -i 's|cmake |CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 #sed -i 's|-fprofile-instr-use=/tmp/cprof.pgo|-fprofile-instr-use=/tmp/cprofdi.pgo|g' $IROOT/ffead-cpp-sql-raw/rtdcf/CMakeLists.txt.template
 ./install_ffead-cpp-sql-raw-profiled.sh
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-5.0-sql

+ 3 - 31
frameworks/C++/ffead-cpp/sql-profiled-install.sh

@@ -1,32 +1,4 @@
-mkdir /tmp/profile-data
-
-rm -rf $IROOT/ffead-cpp-5.0-sql
-
-if [ "$1" = "batch" ]
-then
-	apt remove -yqq libpq-dev
-	apt autoremove -yqq
-	apt update && apt install -y bison flex libreadline-dev
-	cd /tmp
-	wget -q https://github.com/an-tao/postgres/archive/batch_mode_ubuntu.tar.gz
-	tar -xzf batch_mode_ubuntu.tar.gz
-	cd postgres-batch_mode_ubuntu
-	./configure --prefix=/usr CFLAGS='-O2 -pipe -march=native'
-	make && make install
-fi
-
 cd $IROOT/ffead-cpp-src/
-rm -rf CMakeCache.txt CMakeFiles
-rm -rf web/te-benchmark-um web/te-benchmark-um-mgr web/te-benchmark-um-pq-async
-
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-mgr)||g' CMakeLists.txt
-sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq-async)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um/libte_benchmark_um${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-mgr/libte_benchmark_um_mgr${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq-async/libte_benchmark_um_pq_async${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
-
-sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq/config/sdorm.xml
 
 rm -rf build
 mkdir build
@@ -39,7 +11,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-#sed -i 's|cmake .|cmake -DCMAKE_EXE_LINKER_FLAGS="-fprofile-dir=/tmp/profile-data -fprofile-generate" -DCMAKE_CXX_FLAGS="-march=native -fprofile-dir=/tmp/profile-data  -fprofile-generate" .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+#sed -i 's|cmake |cmake -DCMAKE_EXE_LINKER_FLAGS="-fprofile-dir=/tmp/profile-data -fprofile-generate" -DCMAKE_CXX_FLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-generate" |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 ./install_ffead-cpp-sql-raw-profiled.sh
 rm -rf $IROOT/ffead-cpp-sql-raw
 
@@ -47,7 +19,7 @@ cd $IROOT/ffead-cpp-src
 rm -rf build
 mkdir build
 cd build
-CXXFLAGS="-march=native -flto -fprofile-dir=/tmp/profile-data -fprofile-use=/tmp/profile-data -fprofile-correction" cmake -DSRV_EMB=on -DMOD_MEMCACHED=on -DMOD_REDIS=on -DMOD_SDORM_MONGO=on ..
+CXXFLAGS="-march=native -flto -fprofile-dir=/tmp/profile-data -fprofile-use=/tmp/profile-data -fprofile-correction" cmake -DSRV_EMB=on -DMOD_REDIS=on ..
 make install && mv $IROOT/ffead-cpp-src/ffead-cpp-5.0-bin $IROOT/ffead-cpp-sql-raw
 
 #Start postgresql
@@ -55,7 +27,7 @@ service postgresql stop
 #For profiling/benchmarking
 
 cd $IROOT/
-#sed -i 's|cmake .|CXXFLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-use -fprofile-correction" cmake .|g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
+#sed -i 's|cmake |CXXFLAGS="-march=native -fprofile-dir=/tmp/profile-data -fprofile-use -fprofile-correction" cmake |g' $IROOT/ffead-cpp-sql-raw/resources/rundyn-automake.sh
 ./install_ffead-cpp-sql-raw-profiled.sh
 mv $IROOT/ffead-cpp-sql-raw $IROOT/ffead-cpp-5.0-sql
 

+ 54 - 0
frameworks/C++/ffead-cpp/sql-profiled-util.sh

@@ -0,0 +1,54 @@
+mkdir /tmp/profile-data
+
+rm -rf $IROOT/ffead-cpp-5.0-sql
+
+if [ "$1" = "batch" ]
+then
+	apt remove -yqq libpq-dev
+	apt autoremove -yqq
+	rm -f /usr/lib/x86_64-linux-gnu/libpq.*
+	apt update && apt install -y bison flex libreadline-dev
+	cd /tmp
+	#wget -q https://github.com/an-tao/postgres/archive/batch_mode_ubuntu.tar.gz
+	#tar -xzf batch_mode_ubuntu.tar.gz
+	#cd postgres-batch_mode_ubuntu
+	#./configure --prefix=/usr CFLAGS='-O2 -pipe -march=native'
+	#make && make install
+	wget -nv https://github.com/postgres/postgres/archive/b787d4ce6d910080065025bcd5f968544997271f.zip
+	unzip -q b787d4ce6d910080065025bcd5f968544997271f.zip
+	cd postgres-b787d4ce6d910080065025bcd5f968544997271f
+	wget -nv https://www.postgresql.org/message-id/attachment/115223/v22-0001-libpq-batch.patch
+	git apply ./v22-0001-libpq-batch.patch
+	./configure --prefix=/usr CFLAGS='-O3 -march=native -flto'
+	cd src/interfaces/libpq
+	make all install -j4
+	cp ../../../src/include/postgres_ext.h ../../../src/include/pg_config_ext.h libpq-fe.h /usr/include
+fi
+
+if [ "$2" = "clang" ]
+then
+	apt update -yqq && apt install -yqq clang
+fi
+
+cd $IROOT/ffead-cpp-src/
+rm -rf $IROOT/ffead-cpp-sql-raw
+rm -rf CMakeCache.txt CMakeFiles
+rm -rf web/te-benchmark-um web/te-benchmark-um-mgr
+
+sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um)||g' CMakeLists.txt
+sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-mgr)||g' CMakeLists.txt
+sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um/libte_benchmark_um${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-mgr/libte_benchmark_um_mgr${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+
+if [ "$3" = "async" ]
+then
+	sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq)||g' CMakeLists.txt
+	sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq/libte_benchmark_um_pq${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+	sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq-async/config/sdorm.xml
+	rm -rf web/te-benchmark-um-pq
+else
+	sed -i 's|add_subdirectory(${PROJECT_SOURCE_DIR}/web/te-benchmark-um-pq-async)||g' CMakeLists.txt
+	sed -i 's|install(FILES ${PROJECT_BINARY_DIR}/web/te-benchmark-um-pq-async/libte_benchmark_um_pq_async${LIB_EXT} DESTINATION ${PROJECT_NAME}-bin/lib)||g' CMakeLists.txt
+	sed -i 's|tfb-database|localhost|g' $IROOT/ffead-cpp-src/web/te-benchmark-um-pq/config/sdorm.xml
+	rm -rf web/te-benchmark-um-pq-async
+fi

+ 1 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-mgr/src/TeBkUmMgr.cpp

@@ -214,6 +214,7 @@ void TeBkUmMgrRouter::updateCache() {
 			cchi->setRaw(CastUtil::fromNumber(w.getId()), str);
 		}
 		CacheManager::cleanImpl(cchi);
+		CacheManager::triggerAppInitCompletion();
 	} catch(const std::exception& e) {
 		CacheManager::cleanImpl(cchi);
 		throw e;

+ 8 - 5
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/include/TeBkUmLpqAsync.h

@@ -101,9 +101,7 @@ class TeBkUmLpqAsyncRouter : public Router {
 	static std::string APP_NAME;
 	static std::string TPE_FN_NAME;
 
-	std::atomic<bool> which = { false };
-
-	bool strToNum(const char* str, int len, int& ret);
+	static bool strToNum(const char* str, int len, int& ret);
 
 	void dbAsync(AsyncReq* req);
 	static void dbAsyncUtil(void* ctx, int rn, int cn, char * d);
@@ -113,6 +111,12 @@ class TeBkUmLpqAsyncRouter : public Router {
 	static void queriesAsyncUtil(void* ctx, int rn, int cn, char * d);
 	static void queriesAsyncCh(void* ctx, bool status, const std::string& q, int counter);
 
+#ifndef HAVE_LIBPQ_BATCH
+	void queriesMultiAsync(const char*, int, AsyncReq*);
+	static void queriesMultiAsyncUtil(void* ctx, int, int, char *, int);
+	static void queriesMultiAsyncCh(void* ctx, bool status, const std::string& q, int counter);
+#endif
+
 	void updatesAsync(const char* q, int ql, AsyncReq* req);
 	static void updatesAsyncChQ(void* ctx, bool status, const std::string& q, int counter);
 	static void updatesAsyncChU(void* ctx, bool status, const std::string& q, int counter);
@@ -133,13 +137,12 @@ class TeBkUmLpqAsyncRouter : public Router {
 	static std::map<int, std::string> _qC;
 	LibpqDataSourceImpl* sqli;
 	LibpqDataSourceImpl* getDb();
+	//static Logger logger;
 public:
 	TeBkUmLpqAsyncRouter& operator=(const TeBkUmLpqAsyncRouter& a) {
-		which = false;
 		return *this;
 	}
 	TeBkUmLpqAsyncRouter(const TeBkUmLpqAsyncRouter& a) {
-		which = false;
 		sqli = NULL;
 	}
 	TeBkUmLpqAsyncRouter();

+ 73 - 3
frameworks/C++/ffead-cpp/te-benchmark-um-pq-async/src/TeBkUmLpqAsync.cpp

@@ -88,6 +88,7 @@ std::string TeBkUmLpqAsyncRouter::WORLD = "world";
 std::string TeBkUmLpqAsyncRouter::WORLD_ONE_QUERY = "select id, randomnumber from world where id = $1";
 std::string TeBkUmLpqAsyncRouter::WORLD_ALL_QUERY = "select id, randomnumber from world";
 std::string TeBkUmLpqAsyncRouter::FORTUNE_ALL_QUERY = "select id, message from fortune";
+//Logger TeBkUmLpqAsyncRouter::logger = LoggerFactory::getLogger("TeBkUmLpqAsync");
 std::map<int, std::string> TeBkUmLpqAsyncRouter::_qC;
 
 void TeBkUmLpqAsyncRouter::dbAsync(AsyncReq* req) {
@@ -98,6 +99,7 @@ void TeBkUmLpqAsyncRouter::dbAsync(AsyncReq* req) {
 		std::vector<LibpqParam> pars;
 		LibpqDataSourceImpl::ADD_INT4(pars, rid);
 		void* areq = sqli->executeQueryAsync(WORLD_ONE_QUERY, std::move(pars), req, &TeBkUmLpqAsyncRouter::dbAsyncUtil, &TeBkUmLpqAsyncRouter::dbAsyncCh, NULL);
+		//logger << ("in API /db added to PG\n");
 		sqli->completeAsync(areq);
 	} catch(const std::exception& e) {
 		throw e;
@@ -108,6 +110,7 @@ void TeBkUmLpqAsyncRouter::dbAsyncUtil(void* ctx, int rn, int cn, char * d) {
 	TeBkUmLpqAsyncWorld* w = (TeBkUmLpqAsyncWorld*)req->d;
 	if(cn==0)w->setId(ntohl(*((uint32_t *) d)));
 	if(cn==1)w->setRandomNumber(ntohl(*((uint32_t *) d)));
+	//logger << ("in API /db received row from PG\n");
 }
 void TeBkUmLpqAsyncRouter::dbAsyncCh(void* ctx, bool status, const std::string& q, int counter) {
 	AsyncReq* req = (AsyncReq*)ctx;
@@ -117,8 +120,10 @@ void TeBkUmLpqAsyncRouter::dbAsyncCh(void* ctx, bool status, const std::string&
 	JSONSerialize::serializeUnknown(w, 0, "TeBkUmLpqAsyncWorld", &c, APP_NAME);
 	std::string d;
 	req->r.generateHeadResponse(d, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, (int)c.length());
-	req->sif->writeDirect(d);
-	req->sif->writeDirect(c);
+	int st = req->sif->writeDirect(d);
+	//logger.write("in API /db completion writeDirect headers to sock %d\n", st);
+	st = req->sif->writeDirect(c);
+	//logger.write("in API /db completion writeDirect data to sock %d\n", st);
 	req->sif->unUse();
 	delete w;
 	delete req;
@@ -174,6 +179,59 @@ void TeBkUmLpqAsyncRouter::queriesAsyncCh(void* ctx, bool status, const std::str
 }
 
 
+#ifndef HAVE_LIBPQ_BATCH
+void TeBkUmLpqAsyncRouter::queriesMultiAsync(const char* q, int ql, AsyncReq* req) {
+	req->d = new std::vector<TeBkUmLpqAsyncWorld>;
+
+	int queryCount = 0;
+	strToNum(q, ql, queryCount);
+	if(queryCount<1)queryCount=1;
+	else if(queryCount>500)queryCount=500;
+
+	LibpqDataSourceImpl* sqli = getDb();
+
+	try {
+		std::stringstream ss;
+		for (int c = 0; c < queryCount; ++c) {
+			int rid = rand() % 10000 + 1;
+			ss << "select id, randomnumber from world where id = " << rid << ";";
+		}
+		void* areq = sqli->executeMultiQueryAsync(ss.str(), req, &TeBkUmLpqAsyncRouter::queriesMultiAsyncUtil, &TeBkUmLpqAsyncRouter::queriesMultiAsyncCh);
+		sqli->completeAsync(areq, queryCount);
+	} catch(const std::exception& e) {
+		throw e;
+	}
+}
+void TeBkUmLpqAsyncRouter::queriesMultiAsyncUtil(void* ctx, int rn, int cn, char * d, int l) {
+	AsyncReq* req = (AsyncReq*)ctx;
+	std::vector<TeBkUmLpqAsyncWorld>* vec = (std::vector<TeBkUmLpqAsyncWorld>*)req->d;
+	if(cn==0) {
+		vec->push_back(TeBkUmLpqAsyncWorld());
+	}
+	TeBkUmLpqAsyncWorld& w = vec->at(vec->size()-1);
+	int tmp = 0;
+	strToNum(d, l, tmp);
+	if(cn==0)w.setId(tmp);
+	if(cn==1)w.setRandomNumber(tmp);
+}
+void TeBkUmLpqAsyncRouter::queriesMultiAsyncCh(void* ctx, bool status, const std::string& q, int counter) {
+	AsyncReq* req = (AsyncReq*)ctx;
+	std::vector<TeBkUmLpqAsyncWorld>* vec = (std::vector<TeBkUmLpqAsyncWorld>*)req->d;
+	req->r.setHTTPResponseStatus(HTTPResponseStatus::Ok);
+	std::string c;
+	JSONSerialize::serializeUnknown(vec, 100, "std::vector<TeBkUmLpqAsyncWorld>", &c, APP_NAME);
+	std::string d;
+	req->r.generateHeadResponse(d, ContentTypes::CONTENT_TYPE_APPLICATION_JSON, (int)c.length());
+	req->sif->writeDirect(d);
+	req->sif->writeDirect(c);
+	req->sif->unUse();
+	delete vec;
+	delete req;
+}
+#endif
+
+
+
 std::string& TeBkUmLpqAsyncRouter::getUpdQuery(int count) {
 	std::map<int, std::string>::iterator it = _qC.find(count);
 	if(it!=_qC.end()) {
@@ -409,6 +467,7 @@ void TeBkUmLpqAsyncRouter::updateCacheAsyncCh(void* ctx, bool status, const std:
 		delete wlist;
 		CacheManager::cleanImpl(cchi);
 		delete req;
+		CacheManager::triggerAppInitCompletion("te-benchmark-um-pq-async");
 	} catch(const std::exception& e) {
 		delete wlist;
 		CacheManager::cleanImpl(cchi);
@@ -556,7 +615,18 @@ bool TeBkUmLpqAsyncRouter::route(HttpRequest* req, HttpResponse* res, void* dlib
 		ar->sif = sif;
 		ar->r.update(req);
 		queriesAsync(params[0].val, params[0].val_len, ar);
-	} else if(StringUtil::endsWith(path, "/fortunes")) {
+	}
+#ifndef HAVE_LIBPQ_BATCH
+	else if(StringUtil::endsWith(path, "/queriem")) {
+		struct yuarel_param params[1];
+		yuarel_parse_query((char*)req->getQueryStr().data(), req->getQueryStr().size(), params, 1);
+		AsyncReq* ar = new AsyncReq;
+		ar->sif = sif;
+		ar->r.update(req);
+		queriesMultiAsync(params[0].val, params[0].val_len, ar);
+	}
+#endif
+	else if(StringUtil::endsWith(path, "/fortunes")) {
 		AsyncReq* ar = new AsyncReq;
 		ar->sif = sif;
 		ar->ddlib = ddlib;

+ 1 - 0
frameworks/C++/ffead-cpp/te-benchmark-um-pq/src/TeBkUmLpq.cpp

@@ -330,6 +330,7 @@ void TeBkUmLpqRouter::updateCache() {
 			cchi->setRaw(CastUtil::fromNumber(w.getId()), str);
 		}
 		CacheManager::cleanImpl(cchi);
+		CacheManager::triggerAppInitCompletion();
 	} catch(const std::exception& e) {
 		CacheManager::cleanImpl(cchi);
 		throw e;

+ 1 - 0
frameworks/C++/ffead-cpp/te-benchmark-um/src/TeBkUm.cpp

@@ -153,6 +153,7 @@ void TeBkUmRouter::updateCache() {
 		}
 		DataSourceManager::cleanImpl(sqli);
 		CacheManager::cleanImpl(cchi);
+		CacheManager::triggerAppInitCompletion();
 	} catch(const std::exception& e) {
 		DataSourceManager::cleanImpl(sqli);
 		CacheManager::cleanImpl(cchi);