Preserve the message order 07/3507/2 v0.4.9
authorMohamed Abukar <abukar.mohamed@nokia.com>
Tue, 28 Apr 2020 14:11:33 +0000 (17:11 +0300)
committerMohamed Abukar <abukar.mohamed@nokia.com>
Tue, 28 Apr 2020 14:27:36 +0000 (17:27 +0300)
Change-Id: I12c3034f4fceb869bba24c5c38546bcca087445d
Signed-off-by: Mohamed Abukar <abukar.mohamed@nokia.com>
pkg/xapp/restapi.go [changed mode: 0644->0755]
pkg/xapp/rmr.go
pkg/xapp/types.go [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 291a874..1eab7b6
@@ -53,7 +53,7 @@ func NewRouter() *Router {
 func (r *Router) serviceChecker(inner http.HandlerFunc) http.HandlerFunc {
        return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
                Logger.Info("restapi: method=%s url=%s", req.Method, req.URL.RequestURI())
-               if req.URL.RequestURI() == AliveURL || (Rmr.IsReady() && r.CheckStatus()) {
+               if req.URL.RequestURI() == AliveURL || r.CheckStatus() {
                        inner.ServeHTTP(w, req)
                } else {
                        respondWithJSON(w, http.StatusServiceUnavailable, nil)
index 9a3116d..d310b3a 100755 (executable)
@@ -155,11 +155,14 @@ func (m *RMRClient) Worker(taskName string, msgSize int) {
                }
                m.UpdateStatCounter("Received")
 
+               m.msgWg.Add(1)
                go m.parseMessage(rxBuffer)
+               m.msgWg.Wait()
        }
 }
 
 func (m *RMRClient) parseMessage(rxBuffer *C.rmr_mbuf_t) {
+       defer m.msgWg.Done()
        if len(m.consumers) == 0 {
                Logger.Info("rmrClient: No message handlers defined, message discarded!")
                return
old mode 100644 (file)
new mode 100755 (executable)
index 2e1eb09..251dae5
@@ -32,6 +32,7 @@ type RMRClient struct {
        context       unsafe.Pointer
        ready         int
        wg            sync.WaitGroup
+       msgWg         sync.WaitGroup
        mux           sync.Mutex
        stat          map[string]Counter
        consumers     []MessageConsumer