Log filename and line number

Both stdlib package log and many other logging frameworks are supporting this (e.g. https://github.com/inconshreveable/log15). Am I missing how to enable it or is it not supported?

I solve this in a performant manner by doing the following:
var log *logrus.Logger

func init() {
	log = mylog.NewLogger()
}

func NewLogger() *logrus.Logger {
	_, file, _, ok := runtime.Caller(1)
	if !ok {
		file = "unknown"
	}
	inst := &logInstance{
		innerLogger: ret,
		file:        filepath.Base(file),
	}
	ret.Hooks.Add(inst)
    return ret
}

logInstance is a hook that adds "file" to the log entry.  This saves me calling runtime.Caller each time I log a message while still having code that does
  log.WithField()....Info()

+1 it's a MUST-HAVE, and saying "completely API compatible with the standard library logger" in the README is wrong as we have that feature in the standard Go logger (SetFlags) http://golang.org/pkg/log/#SetFlags

+1

Perhaps someone take a closer look at SetFlags implementation and port it to logrus? Currently all the implementations I've seen rely on hardcoding number of stack frames which is not very portable and doesn't work in some cases.

@Sirupsen,  I can definitely have a look :)

@chreble awesome, let me know what you find!

@Sirupsen unfortunately, the SetFlags implementation in the standard library uses a (sort of) hardcoded number of stack frames: http://golang.org/src/log/log.go#L130.  Each exported output function, such as Println, passes callDepth like this: http://golang.org/src/log/log.go#L169.
Is this such a big deal to implement in logrus?

@dmlyons no it's not, I've just not needed this myself and haven't seen an implementation that hasn't failed on different platforms.

Has anyone resolved this in a reasonable way?  I just want the filename and line number.  I'd also prefer to be able to configure it to only print on specific levels (e.g. err, panic, warn)

We have wrapped the stuff we most use from logrus with the file information, i don't know if you will find it useful or not but here you are https://gist.github.com/gonzaloserrano/d360c1b195f7313b6d19

+1

+1

I will try to take a swing at it, as @dmlyons said it is pretty straightforward to implement.

+1

+1

My solution was to use https://github.com/inconshreveable/log15

+1

Thanks @davisford.  That's what I did as well.

I'm kind of confused why you couldn't just make your formatter, or wrap a formatter you already use, accomplish this. I do this for our production systems. The only downside is if logrus' internals change, it could possibly change the callstack. But, you can catch this early if you make a testcase for your formatter.
I would rather logrus not implement this by default because it has performance implications. Unless you provide a way for people to disable it if they don't need it, which just adds another API.

The cleanest solution I came up with was just to mimic the standard logger with my own logging interface. Since the caller info is registered there, there should be no issues with the call stack changing. Other than that I tried to keep the interface exactly the same as Sirupsen/logrus/logger.go so applications can easily switch back to this logger.
https://github.com/jeffizhungry/logrus

Hi, this might help
https://github.com/facebookgo/stack

+1

Why not using the runtime package
import (
"runtime"
log "github.com/Sirupsen/logrus"
)
func main() {
pc, file, line, ok := runtime.Caller(0)
log.WithFields(log.Fields{
"Program Counter": pc,
"File":            file,
"Line":            line,
"Recoverable":     ok,
}).Debug("Some logging info")
}

I proposed a merge that can log file name and line numbers. It is located in the show-file-line branch of the clone https://github.com/omidnikta/logrus
One can use ShowFileLine(bool) to enable/disable logging file-line.

we need this ASAP, anyone working on this?

+1

@omidnikta where is that PR?

+1
Sent from my iPhone

On 09 Mar 2016, at 00:17, Boyan Dimitrov<EMAIL_ADDRESS>wrote:
+1
—
Reply to this email directly or view it on GitHub.

+1

@apriendeau The clone is in https://github.com/omidnikta/logrus, but when I checked correctly the source of logrus, it is not thread safe at all, but the pull request is OK anyway. That is why I started https://github.com/omidnikta/nlog which is a minimal thread safe logger.

@apriendeau The pull request is
#312
But when I checked correctly the source of logrus, it is not thread safe at all, but the pull request is OK anyway. That is why I started https://github.com/omidnikta/nlog which is a minimal thread safe logger.

+1

+1

+1

+1

To avoid any more +1 comments (which BTW GitHub implemented reactions to avoid this) @apriendeau has this work done in a PR that is being reviewed right now.
https://github.com/Sirupsen/logrus/pull/349

-_-...... 2016.7.21 this feature remains fail..

I am using this as workaround while developing
type ContextHook struct {
}

func (hook ContextHook) Levels() []log.Level {
	return log.AllLevels
}

func (hook ContextHook) Fire(entry *log.Entry) error {
	if pc, file, line, ok := runtime.Caller(8); ok {
		funcName := runtime.FuncForPC(pc).Name()

		entry.Data["file"] = path.Base(file)
		entry.Data["func"] = path.Base(funcName)
		entry.Data["line"] = line
	}

	return nil
}

func main() {
	log.AddHook(ContextHook{})
        …
}

@renke seems can work

Modified @renke's workaround a bit so it works for WithField.
type ContextHook struct{}

func (hook ContextHook) Levels() []logrus.Level {
	return logrus.AllLevels
}

func (hook ContextHook) Fire(entry *logrus.Entry) error {
	pc := make([]uintptr, 3, 3)
	cnt := runtime.Callers(6, pc)

	for i := 0; i < cnt; i++ {
		fu := runtime.FuncForPC(pc[i] - 1)
		name := fu.Name()
		if !strings.Contains(name, "github.com/Sirupsen/logrus") {
			file, line := fu.FileLine(pc[i] - 1)
			entry.Data["file"] = path.Base(file)
			entry.Data["func"] = path.Base(name)
			entry.Data["line"] = line
			break
		}
	}
	return nil
}

func main() {
	logrus.AddHook(ContextHook{})
....
}

It's more expensive however since it allocates memory every time.

My solution is to call a function on each logging instance.
That way you can take it out for entries that are performance sensitive.
func Locate(fields logrus.Fields) logrus.Fields {
	_, path, line, ok := runtime.Caller(1)
	if ok {
		_, file := filepath.Split(path)
		fields["file"] = file
		fields["line"] = line
	}
	return fields
}
...
	log.WithFields(Locate(logrus.Fields{
		"url": url,
	})).Info("Bound management service")

Is it still not printing the stacktrace? Any way to get output like in std error stacktrace?

+1

my slotion is add a hook
github.com/zhl11b/logrus-hook-caller
`// CallerHook 需要的钩子
type CallerHook struct {
}
// Fire 实现
func (hook *CallerHook) Fire(entry *logrus.Entry) error {
if len(entry.Data) == 0 {

	entry.Data["caller"] = hook.caller2()

} else {

	entry.Data["caller"] = hook.caller()

}

return nil

}`
check entry.data make sure get a right caller

In case no one has seen the Go 1.7 release notes yet, a new function was added to the runtime package which has performance improvements over FuncForPC:

The new function CallersFrames translates a PC slice obtained from Callers into a sequence of frames corresponding to the call stack. This new API should be preferred instead of direct use of FuncForPC, because the frame sequence can more accurately describe call stacks with inlined function calls.
Go 1.7 release notes

Here's the godoc: https://golang.org/pkg/runtime/#CallersFrames

With cues from here and facebookgo/stack's structs combining file, line and func name, I've written a hook that is working well for me (and I don't see why it wouldn't for anyone else): https://github.com/Gurpartap/logrus-stack 🎯. You can get the last caller as well as the full stack trace.
There wasn't a solution that worked in all (most?) cases, so I wrote it. You have to skip frames differently when there's WithField, and then you have to filter out logrus's own frames. And then there's the formatting. Hope the hook helps others.

A race condition occurs when writing to entry.Data inside the hook.
Possible to prevent the race condition from occurring?
Race condition point:
// Inside hook.
entry.Data["xxx"] = "xxx"
// https://github.com/Sirupsen/logrus/blob/a437dfd2463eaedbec3dfe443e477d3b0a810b3f/text_formatter.go#L61
var keys []string = make([]string, 0, len(entry.Data))

+1

+1

I was able to make my own functionality with what they have currently and borrowing code from others that have solved their own issues with this. I didn't like having to deorate each caller with a wrapped function, so I made my own Decorate(logger *logrus.Entry) func() *logrus.Entry that works for me.
package logger

import (
	"fmt"
	"net/http"
	"runtime"
	"strings"

	"github.com/Sirupsen/logrus"
)

/* truncated */

// Decorate appends line, file and function context to the logger and returns a function to call before
// each log
func Decorate(logger *logrus.Entry) func() *logrus.Entry {
	return func() *logrus.Entry {
		if pc, f, line, ok := runtime.Caller(1); ok {
			fnName := runtime.FuncForPC(pc).Name()
			file := strings.Split(f, "mobilebid")[1]
			caller := fmt.Sprintf("%s:%v %s", file, line, fnName)

			return logrus.WithField("caller", caller)
		}
		return logger
	}
}

// Log appends line, file and function context to the logger
func Log() *logrus.Entry {
	if pc, f, line, ok := runtime.Caller(1); ok {
		fnName := runtime.FuncForPC(pc).Name()
		file := strings.Split(f, "mobilebid")[1]
		caller := fmt.Sprintf("%s:%v %s", file, line, fnName)

		return logrus.WithField("caller", caller)
	}
	return &logrus.Entry{}
}

In use:
// Using context
logctx := logger.Decorate(WithField("remote_address", conn.RemoteAddr()))
logctx().WithField("test", "works").Info("it works fine")

// Standard logging
logger.Log().WithError(err).Error("error upgrading websocket")

// With multiple fields
logger.Log().WithFields(logrus.Fields{
    "field":  "something",
    "field2": "something else",
}).WithError(err).Error("error upgrading websocket")

will this function to be added

after three years, still doesn't have this functionality?

+1

Same question as @lnshi , just tell me why:)

Looks like there were multiple PRs aiming to fix this issue https://github.com/sirupsen/logrus/pull/349, https://github.com/sirupsen/logrus/pull/388
Looking at the PRs looks like they went nowhere even after repeated requests from authors for feedback and the authors seem to have closed the PRs themselves - probably out of frustration.

Since this is probably never going to be added or merged, it would be great if the authors could give their blessing to a plugin or a workaround to achieve this.
ps. Thank you for the awesome library!

Any news on this ? 😃

It's very important to log filename and line number. This can make it easier for engineers to debug.
Could you please let us know whether this feature will be implemented?
Thanks a lot.

I don't know if that's helpful but the prometheus team did it like this

+1

is there a solution merged to this ?

Actually I found a workaround not full but something for this, using package:
github.com/x-cray/logrus-prefixed-formatter
And in code it looks like:
`var log = logrus.WithFields(logrus.Fields{"prefix": "main"})
func init() {
logrus.SetFormatter(&prefixed.TextFormatter{})
logrus.SetLevel(logrus.DebugLevel)
}`
After that you just need to add in each package somethink like:
var log = logrus.WithFields(logrus.Fields{"prefix": "package"})
In logs it looks like:
[0000]  INFO cmds: Sending ping to server: <IP_ADDRESS> [0000] DEBUG client: Establishing grpc connection with: <IP_ADDRESS>
Hopefully it helps :)

@damekr How does that solve the issue of logging the file name and line number?

@mihaitodor Instead of {"prefix": "main"} you can use filename. It is not a full solution as I said, but can help a bit to solve the problem.

Ah, I see. Thanks!

@damekr I'm using  filename. When you say that is not a full solution, what do you mean ?
filenameHook := filename.NewHook()
filenameHook.Field = filenameField
log.AddHook(filenameHook)
{"level":"info","message":"test","origem":"mobileServer/server.go:65","time":"2017-12-07T09:54:28.449479945-02:00"}
It works fine for me. Should I be aware of something ?

@RenathoAzevedo No, it's just another way to do that :)

@damekr Thank you, I'm still wating for 'native' solution from logrus.

+1

package main
import (
"encoding/json"
"runtime"
log "github.com/sirupsen/logrus"

)
type MyJSONFormatter struct {
Level string json:"level"
Info  string json:"info"
Msg   string json:"msg"
Time  string json:"time"
File  string json:"file"
Line  int    json:"line"
}
func (f *MyJSONFormatter) Format(entry *log.Entry) ([]byte, error) {
logrusJF := &(log.JSONFormatter{})
bytes, _ := logrusJF.Format(entry)

myF := MyJSONFormatter{}
json.Unmarshal(bytes, &myF)
_, file, no, _ := runtime.Caller(7)
myF.File = file
myF.Line = no

return json.Marshal(myF)

}
func main() {
log.SetFormatter(&MyJSONFormatter{})
log.Infoln("fire")
}

So any updated on this feature? Is this available now? I walk through comments, it seems nothing is official yet?

@RenathoAzevedo in the example where you mention filename, where is that package? If possible could you post a full example of your solution?

Hello @andytsnowden, I'm using  filename hook from https://github.com/onrik/logrus, It's quite simple to use.
filenameHook.Field = "source"
logrus.AddHook(filenameHook) ```

Jesus Christ, it is still doesn't supports a common feature after four years..

Jesus Christ, it still doesn't supports a common feature after four years.

Please keep it civil. I think the maintainers voiced valid concerns and
I have reviewed one or two PRs that propose adding this feature and most seemed to add a cost whether your using it or not. If there is a PR with this functionality, that doesn't create a performance cost, point me to and I'll have a look.
I think https://github.com/sirupsen/logrus/pull/450/ was looking promising, although it may need the additional file and line number.

I am using https://github.com/onrik/logrus as well for printing file names and lines:
package main

import (
	"github.com/onrik/logrus/filename"
	log "github.com/sirupsen/logrus"
)

func main(){
	log.AddHook(filename.NewHook())
        ...
        log.Println(something)

logs look like this:
INFO[0000] 404 Not Found                                 source="scraper/main.go:46"
INFO[0000] 404 Not Found                                 source="scraper/main.go:46"

#450 shouldn't add a cost unless the flag is set to enable the extra data.  There's some cost in gathering the data, but we've been working from my fork in production for over a year now with no issues seen.  I am looking forward to getting back on mainline Logrus someday, though :)
If there's more data desired than what I've added there, we can of course continue to evolve...
@stevvooe I've resolved the merge conflict in that PR, FYI.

I would also appreciate this feature (as everybody else does) there are so many proposals and pull requests. Whats actually blocking this issue?
Are you just afraid of cross platform bugs?

I will have a look at this pr soon.

4 year open-issues ~~~

+1, any update here?  I check the solutions in the comments. I want to get the official answer about the hook, is there some other concern? Like performance issues?

@Jing-Li I've been using the solution posted here: https://github.com/sirupsen/logrus/issues/63#issuecomment-365334562 in production for about 6 months now and haven't really had any issues at all.  In my use-case we emit about 10m lines of logging daily and I really haven't seen logging be a "slow" point.

up

Yay, but please do provide instructions here (or in docs) on how #850 gives us file and line number. It's certainly not apparent from a quick view.

Here's how to have logrus log the filename and line number with the latest release. Basically just add log.SetReportCaller(true) when initializing.
Example:
package main

import (
	log "github.com/sirupsen/logrus"
)

func main() {
        // Add this line for logging filename and line number!
	log.SetReportCaller(true)

	log.Println("hello world")
}

Output:
INFO[0000]/Users/bob/go/src/github.com/bob/test/main.go:17 main.main() hello world

@rfay the pull request contains a change in the readme which describes how to enable this feature.

This feature is contained in v1.2.0

Here's how to have logrus log the filename and line number with the latest release. Basically just add log.SetReportCaller(true) when initializing.
Example:
package main

import (
	log "github.com/sirupsen/logrus"
)

func main() {
        // Add this line for logging filename and line number!
	log.SetReportCaller(true)

	log.Println("hello world")
}

Output:
INFO[0000]/Users/bob/go/src/github.com/bob/test/main.go:17 main.main() hello world

Hi all, is there a way to cut the longest file path? like just to display the
test/main.go:17

Thanks...QQ

@andytsnowden ,

@Jing-Li I've been using the solution posted here: #63 (comment) in production for about 6 months now and haven't really had any issues at all. In my use-case we emit about 10m lines of logging daily and I really haven't seen logging be a "slow" point.

@andytsnowden , this help a lot, thanks.

Here's how to have logrus log the filename and line number with the latest release. Basically just add log.SetReportCaller(true) when initializing.
Example:
package main

import (
	log "github.com/sirupsen/logrus"
)

func main() {
        // Add this line for logging filename and line number!
	log.SetReportCaller(true)

	log.Println("hello world")
}

Output:
INFO[0000]/Users/bob/go/src/github.com/bob/test/main.go:17 main.main() hello world

Hi all, is there a way to cut the longest file path? like just to display the
INFO[0000]/test/main.go:17 main.main() hello world

Thanks...QQ

any idea on how to cut file name ?

@Wamani please don't comment on closed issue, because it's kind of hard to find it back.
The basic filter on the github interface doesn't show closed issues whatever how recently they have been updated. The next time open a new one, it will be easier for the maintainer to provide feedback and guidance.
That said if you want to customiza the output of the caller field you can give a specific formatting function in the CallerPrettyfier field of the JSONFormatter (https://godoc.org/github.com/sirupsen/logrus#JSONFormatter) or of the TextFormatter (https://godoc.org/github.com/sirupsen/logrus#TextFormatter).
You also have an example in the logrus repository on how to use that with the JSONFormatter here
https://github.com/sirupsen/logrus/blob/master/example_custom_caller_test.go

@wesgt @Wamani
Here's how to cut the longest file path:
package main

import (
	"fmt"
	"os"
	"runtime"
	"strings"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			repopath := fmt.Sprintf("%s/src/github.com/bob", os.Getenv("GOPATH"))
			filename := strings.Replace(f.File, repopath, "", -1)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}

Output:
INFO[0000]/test/main.go:23 main.main() hello world

@wesgt @Wamani
Here's how to cut the longest file path:
package main

import (
	"fmt"
	"os"
	"runtime"
	"strings"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			repopath := fmt.Sprintf("%s/src/github.com/bob", os.Getenv("GOPATH"))
			filename := strings.Replace(f.File, repopath, "", -1)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}

Output:
INFO[0000]/test/main.go:23 main.main() hello world

thanks it works

package main

import (
	"fmt"
	"os"
	"runtime"
	"strings"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			repopath := fmt.Sprintf("%s/src/github.com/bob", os.Getenv("GOPATH"))
			filename := strings.Replace(f.File, repopath, "", -1)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}

Thank a lot of!
I am using path.Base, this is more universal, I think ;-)
package main

import (
	"fmt"
	"path"
	"runtime"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			filename := path.Base(f.File)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}
`

@art-frela great suggestion on using path.Base!

@miguelmota why i not see CallerPrettyfier
unknown field 'CallerPrettyfier' in struct literal of type logrus.TextFormatter

Worth mentioning that if you are using logrus JSONFormatter and you need filename and line support, there is a handy example in the codebase which adds funcname and filename. - https://github.com/sirupsen/logrus/blob/master/example_custom_caller_test.go
l.Formatter = &logrus.JSONFormatter{
		DisableTimestamp: true,
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			s := strings.Split(f.Function, ".")
			funcname := s[len(s)-1]
			_, filename := path.Split(f.File)
			return funcname, filename
		},
	}

A slight modification to it can return line number also
return funcname, filename + ":" + strconv.Itoa(f.Line)

Worth mentioning that if you are using logrus JSONFormatter and you need filename and line support, there is a handy example in the codebase which adds funcname and filename. - https://github.com/sirupsen/logrus/blob/master/example_custom_caller_test.go

My code ended up looking a little like this:
logrus.SetReportCaller(true)
formatter = &logrus.JSONFormatter{
    CallerPrettyfier: func(f *runtime.Frame) (string, string) {
        s := strings.Split(f.Function, ".")
        funcName := s[len(s)-1]
        return funcName, fmt.Sprintf("%s:%d", path.Base(f.File), f.Line)
    },
}

Which logs source file name, function name, and line number.

I can't reproduce this in logrus 1.4.2 using Go 1.14, I tried @art-frela snippet, and I can't reproduce it. This is my output:
INFO[0000]entry.go:359 github.com/sirupsen/logrus.(*Entry).Logln() hello world

Any ideas?

related to #1096

Yep it's Go 1.14 thanks @dgsb I thought I was going crazy for the last hour :+1:

formatter := runtime.Formatter{ChildFormatter: &log.TextFormatter{
	FullTimestamp: true,
}}
formatter.Line = true
log.SetFormatter(&formatter)
log.SetOutput(os.Stdout)
log.SetLevel(log.InfoLevel)
log.WithFields(log.Fields{
	"file": "main.go",
}).Info("Server is running...")

Note: import ( 	runtime "github.com/banzaicloud/logrus-runtime-formatter"
log "github.com/sirupsen/logrus")

package main

import (
	"fmt"
	"os"
	"runtime"
	"strings"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			repopath := fmt.Sprintf("%s/src/github.com/bob", os.Getenv("GOPATH"))
			filename := strings.Replace(f.File, repopath, "", -1)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}

Thank a lot of!
I am using path.Base, this is more universal, I think ;-)
package main

import (
	"fmt"
	"path"
	"runtime"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			filename := path.Base(f.File)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}
`

This lose coloring on console.

Just for reference I came up with this to show filename:line. It's little bit cleaner than f.Function IMO.
log.SetFormatter(&log.TextFormatter{
    FullTimestamp: true,
    CallerPrettyfier: func(f *runtime.Frame) (second string, first string) {
        _, b, _, _ := runtime.Caller(0)
        basepath := filepath.Dir(b)
        rel, err := filepath.Rel(basepath, f.File)
        if err != nil {
            log.Error("Couldn't determine file path\n", err)
        }
        return "", fmt.Sprintf("%s:%d", rel, f.Line)
    },
})
log.SetReportCaller(true)

INFO[2022-11-27T03:16:16-08:00]database/setup.go:31 Connected to database.
INFO[2022-11-27T03:16:16-08:00]database/setup.go:32 Running migrations.
INFO[2022-11-27T03:16:16-08:00]scheduler/task.go:17 Doing something.

您的邮件已收到，我会尽快查看&回复:)

package main

import (
	"fmt"
	"os"
	"runtime"
	"strings"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			repopath := fmt.Sprintf("%s/src/github.com/bob", os.Getenv("GOPATH"))
			filename := strings.Replace(f.File, repopath, "", -1)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}

Thank a lot of!
I am using path.Base, this is more universal, I think ;-)
package main

import (
	"fmt"
	"path"
	"runtime"

	"github.com/sirupsen/logrus"
)

func main() {
	log := logrus.New()
	log.SetReportCaller(true)
	log.Formatter = &logrus.TextFormatter{
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			filename := path.Base(f.File)
			return fmt.Sprintf("%s()", f.Function), fmt.Sprintf("%s:%d", filename, f.Line)
		},
	}

	log.Println("hello world")
}
`

This lose coloring on console.

You're right.. Using &log.TextFormatter loses all the colors..
log.SetFormatter(&log.TextFormatter{
    FullTimestamp: true,
})

Is there a way to do this with the file and line number added as separate fields?

您的邮件已收到，我会尽快查看&回复:)

Is there a way to do this with the file and line number added as separate fields?

I think the best way would be to create an instance per package and pass a custom string (package) to the formatter. At least that way you know which package the error took place in. It just adds some context instead of a spontaneous error message.

After set log.SetReportCaller(true)
The log looks like this:
time="2024-02-06T13:12:16+08:00" level=info msg="Server exit, bye." func=github.com/xxx/xxx/util/main_util.gracefulShutdown file="/home/eric/go/src/gitlab.com/xxx/xxx/util/main_util/main_util.go:108"

2 problems:

It contains func and file part,  we only want file part usually.
and call log.SetFormatter(..) as suggested above, doesn't make the file part shorter.

您的邮件已收到，我会尽快查看&回复:)


Object rest operator with indexer throws error when indexing

I am not sure if this is a bug or just me not being able to find the correct info.
In a React component I have a prop getter function. I do not want to type every possible prop that can go on an input and I am trying to index some props to check if they exist:
class N {
    getInputProps = ({ onChange, ...props }: any = {}): {
        [name: string]: any
    } => {
        // ....
        return {
            'aria-disabled': props['disabled'] ? 'true' : null,
             ...props
        };
    };
}

If I use anything but any to type the incoming parameter Flow throws and says that disabled does not exist on the object. I tried to type it as an indexer like:
getInputProps = ({ onChange, ...props }: {[name:string}: any} = {})

Any help would be appreciated if this isn't an issue.

Simpler reproduction:
//@flow

function a({ foo, ...props }: { [name: string]: string } = {}) {
  props.bar;
  foo;
};

no longer errors


Can't reach archive

Hey all,
i set up tweetnext and it works, but when i click on the right site for the archive:
The requested URL /2016/12 was not found on this server.
I renamed the .htaccess files, but it does't work.

Is there anything in your web server logs that would help with diagnosing the issue? Possibly a file inside /var/log/apache2?

I have the same problem. When I click on an archive link in the right sidebar this happens:
https://playground.fletcher.de/fletcher/tweetnest/2017/06
Somehow /public_htm/ comes in the way.


Getting tweets for locked accounts that you follow

Example scenario: I follow a user on twitter but their account is locked. Therefore I can see their tweets but cannot use the TweetManager to export them. Do you have any strategies to allow TweetManager to authenticate into my account before getting the JsonResponse?

Hello, in this moment I don't have, some tweets are not indexed by twitter so you can't see in advanced search but you can see if you directly at a user's timeline


Debugger RAM pane shows unmapped ET-3400 range

v0.2 Beta -- The Debugger, Disassembly, RAM display shows $0000 to $03FF but only $0000 to $01FF is in the ET-3400 memory map. It seems the RAM display should stop at $01FF. Or if it is because the emulator is meant to allow more memory than the real ET-3400 perhaps add a built-in label at $0200 saying "; BEYOND ET-3400 RAM" or similar to warn users that use beyond that point can't be run in a real ET-3400.
A related suggestion: Built-in Disassembly labels at $0000 "; ET-3400 USER RAM (197 BYTES)", $00C5 "ET-3400 MONITOR RAM (59 BYTES)", $0100 "ET-3400 OPTIONAL RAM (256 BYTES)".

A thought regarding the built-in RAM labels I suggested above -- If there ever is a user-provided label whose range overlaps one of the built-in labels, the user-provided label should hide the built-in label.


Change: remove AsyncSeek trait from snapshot

Snapshots don't really need to be AsyncSeek. Simplifying the trait bounds for a snapshot.
Checklist

[ ] Updated guide with pertinent info (may not always apply).
[x] Squash down commits to one or two logical commits which clearly describe the work you've done.
[x] Unittest is a friend:)

This change is

Noting here the test that failed works intermittently locally. Looking into why that is.

For whatever reason, when adding a break point here https://github.com/datafuselabs/openraft/pull/605/files#diff-8b339b0849f15c6768e79376c23e1d627a78bf1fff6be0693cf8b7767196e23eL692 the unit test works. when it fails it's because the snapshot that is trying to be loaded is 0 size so serde errors out.

I'm not sure I follow why. If that's the case then the receiving end might get a message with done == true before the snapshot has finished even in the current implementation. Would you mind explaining the scenario where that is possible?

I'm not sure I follow why. If that's the case then the receiving end might get a message with done == true before the snapshot has finished even in the current implementation. Would you mind explaining the scenario where that is possible?

You are right the current implementation does not need AsyncSeek.
In the future, several snapshot segments may be transmitted simultaneously and received in arbitrary orders to speed up snapshot transfer.
Since it is a usual way for optimization thus, for now, it would be better not to assume segments are received in order.
make sense? :D

If the project's plan is to send chunks of the same snapshot in parallel then that makes sense. IMO that also seems like the kind of optimization that the user of the api should be making or let them be exposed to that option. Keeping AsyncSeek to me feels like it forces the underlying snapshot to be a single file or something that can fit in memory. Which severely limits what the users of the lib can do.

@schreter I'm pretty sure I'm in the same boat as you (Rocksdb with large files). I was also looking at doing that approach or similar, but it alway seemed odd to have a massive timeout on sending the snapshot part (I'm still doing it anyways though). My original thought was to just let the user do whatever they want https://github.com/datafuselabs/openraft/pull/600 but it sounds like that exposes to much of the raft logic to the user to worry about/implement.

Looks like there are two options:

1, C::SD(the snapshot data type) is the snapshot data.
2, C::SD is just a manifest of snapshot segments.

For option 1, either treat the snapshot as a sequence of bytes, as it does now, by making it seekable, or an application must define how snapshot data is organized, e.g., a list of rocksdb SSTable plus the level and key space of every SSTable.
For option 2, the RaftStorage implementation will take some time to download the segments. RaftCore has to block until it finishes installing the snapshot. If we want RaftCore not to block on this operation, before installing a snapshot, RaftStorage has to check the vote to determine whether the snapshot is still legal to install.

If the project's plan is to send chunks of the same snapshot in parallel then that makes sense.

:D

IMO that also seems like the kind of optimization that the user of the api should be making or let them be exposed to that option. Keeping AsyncSeek to me feels like it forces the underlying snapshot to be a single file or something that can fit in memory. Which severely limits what the users of the lib can do.

IMHO, a trait such as AsyncSeek defines the internal structure of a snapshot. To remove this trait bound, RaftStorage has to provide several additional API for sending and receiving segments, e.g.:
read_snapshot_segment<SegmentId, Segment>(snapshot_id: SnapshotId, segment_id: SegmentId) -> Segment;

// Return true if all segments are received.
save_snapshot_segment<SegmentId, Segment>(snapshot_id: SnapshotId, segment_id: SegmentId, s: Segment) -> bool;

For @schreter 's need, save_snapshot_segment() will download snapshot data in another tokio task.
Finally, when save_snapshot_segment() returns true, RaftCore checks vote again and then decides if to install the snapshot to the state machine.

Sorry I keep asking what feels like the same question, but for:

If we want RaftCore not to block on this operation, before installing a snapshot, RaftStorage has to check the vote to determine whether the snapshot is still legal to install.

What is the downside to relying on this? Was it that the snapshot streaming would require too much raft state management?

Sorry I keep asking what feels like the same question, but

Is OK:)

If we want RaftCore not to block on this operation, before installing a snapshot, RaftStorage has to check the vote to
determine
whether the snapshot is still
legal
to install.

What is the downside to relying on this? Was it that the snapshot streaming would require too much raft state management ?

RaftStorage is implemented by an application developer. Openraft has no control on how it implements a method.
There is no way to force the implementation to check the vote before installing a snapshot.
Even without checking the vote, the application may still be able to pass all its tests too. But there is actually a bug there.
Thus the safe way as it does now,  is to let RaftCore check vote first, and then call RaftStorage::instal_snapshot() in a blocking mode, so that before instal_snapshot() returns the vote won't change.

I finally see where my confusion and the disconnect on this is! I thought for Option 2 above, the downloading of the segments and building of the local (remote) snapshot would be done before the install_snapshot call to the RaftNode, not in the RaftStorage implementation. Interesting idea about not having to persist the vote.
I like the idea of having exposing more API abstractions around the snapshot. Maybe something that would combine RaftSnapshotBuilder and the RaftStorage::begin_receiving_snapshot?
With something like this for the sending side:

build: build the snapshot
send: start sending the snapshot
finish: finalize the snapshot
cancel: cancel sending the snapshot (also use for snapshot cleanup)
The receiving side would implement the endpoint RPC's for the sender to send too. And would call the RaftNode::install_snapshot on finalize.
With the goals being:
RaftCore does all the raft logic around snapshot state management, and can cancel a snapshot that is being sent
Receiver node doesn't have to block RaftCore and doesn't have to implement Raft logic. Just whatever they need for consolidating the snapshot in order to call RaftNode::install_snapshot on in the finish call.

@zach-schoenberger
Building a snapshot is simple. There won't be any change AFAIK. :)
To send a snapshot, first, the C::SD(SnapshotData) on the leader provides an API that returns an iterator of snapshot segments, e.g.: SnapshotData::segments() -> (SegmentId, SegmentData).
Then let each InstallSnapshot RPC transmit a segment.
On the receiving node, RaftStorage should provide an API to initiate a customized snapshot receiving, e.g., RaftStorage::begin_receiving_snapshot() -> impl SnapshotReceive.
For every received segment, RaftCore checks vote and then pass the segment to a user-defined receiving API: <T as SnapshotReceive>::receive(SegmentId, Segment).
When all segments are transmitted, the sending node sends another InstallSnapshot RPC to inform the receiving node to finalize and then install the snapshot.
The receiving node then calls <T as SnapshotReceive>::finalize() -> C::SD to rebuild a snapshot from segments. If the application barely transmits a tiny descriptor of a snapshot, in this step the actual snapshot data should be downloaded. Because this step does not modify any raft data, it does not block RaftCore.
The final step is RaftCore checks vote and then installs snapshot data to replace the state machine.
I skipped some non-critical parts such as canceling a snapshot transmission.
Any opinions? :)

I think the above would solve most of issues I've run into!

When all segments are transmitted, the sending node sends another InstallSnapshot RPC to inform the receiving node to finalize and then install the snapshot.
The receiving node then calls <T as SnapshotReceive>::finalize() -> C::SD to rebuild a snapshot from segments. If the application barely transmits a tiny descriptor of a snapshot, in this step the actual snapshot data should be downloaded. Because this step does not modify any raft data, it does not block RaftCore.
The final step is RaftCore checks vote and then installs snapshot data to replace the state machine.

I just want to make sure I understand the difference between this and what is currently being done. By following this pattern, <T as SnapshotReceive>::finalize() -> C::SD would be called by the user directly to generate the snapshot data to install and passed to the RaftCore? If it is, I would say my only issue is that it seems a bit odd to be passing the individual segments into the RaftCore and then need still need access to the SnapshotReceive external to RaftCore to pass the finalize results. I guess one  option there would be to have RaftCore expose a finalize call to invoke the SnapshotReceive call in it's own task. But that also seems a bit odd looking.

I'd like an application just handle RPCs by simply forwarding them to Raft, the control handle of RaftCore. Raft then passes the RPC request to RaftCore. And RaftCore should be the only component that accesses RaftStorage and SnapshotReceive.

I just want to make sure I understand the difference between this and what is currently being done. By following this pattern , <T as SnapshotReceive>::finalize() -> C::SD would be called by the user directly to generate the snapshot data to install and passed to the RaftCore?

By my design, it should be called by RaftCore, when RaftCore receives an InstallSnapshot RPC indicating a finalize action.
You gave me a good point: whether a receiving snapshot process finishes can be returned by <T as SnapshotReceive>::receive(). The final RPC can be gotten rid of, I think.

If it is, I would say my only issue is that it seems a bit odd to be passing the individual segments into the RaftCore and then need still need access to the SnapshotReceive external to RaftCore to pass the finalize results.

Right, it's weird.

I guess one option there would be to have RaftCore expose a finalize call to invoke the SnapshotReceive call in it's own task. But that also seems a bit odd looking.

Yes, the application calls Raft and Raft calls RaftCore, and then RaftCore calls RaftStorage.
If I didn't explain something clearly, just let me know:)

Got it. So <T as SnapshotReceive>::receive() -> C::SD would be the only method then? It would still need to be in it's own task to not block the RaftCore if I'm not mistaken.

Got it. So <T as SnapshotReceive>::receive() -> C::SD would be the only method then? It would still need to be in it's own tokio task to not block the RaftCore if I'm not mistaken.

One of the options is to provide two APIs:
<T as SnapshotReceive>::receive() -> bool /* finished or not */ and <T as SnapshotReceive>::finalize() so that finalize() can run in another tokio-task.
:S

One of the options is to provide two APIs: <T as SnapshotReceive>::receive() -> bool /* finished or not */ and <T as SnapshotReceive>::finalize() so that finalize() can run in another tokio-task.

Thinking about it a bit more, <T as SnapshotReceive>::finalize() -> C::SD is probably always necessary, as is the the explicit finalize API call. Since the goal is to send the segments in parallel, you can't rely on the done field since it can come in out of order. Having the <T as SnapshotReceive>::finalize() -> C::SD be run in another task sounds good. It's an expensive thing to do but snapshots themselves are much more expensive so it shouldn't be noticeable.

PR summary(by Claude):

I think we resolved this.


Hilltop Crawler

Changes for the Prototype of Hilltop crawler to make it more production ready.

More configuration for Hilltop source, rather than hard coded
Changes to send "observation" records to downstream consumers, rather than the consumers parsing Hilltop XML
Restructure to (hopefully) simplify the handling of different message types
More error handling, logging of requests
More Tests

* Do we fetch data for each Measurement for each month repeatedly, in case past data has changed?

Yes that, just fetch it every once in a while to make sure it hasn't been changed by someone in Hilltop (life would be so much easier if there was a "whats changed since XYZ")

* If so, where do we extend this window of data for when new data is checked for?

Doh, I think you've spotted an issue! ... the window will move when the MEASUREMENTS_LIST refresh call is made and data is now in the new month. But the issue is that refresh might not happen very timely after the month switch over. I had thought I'd catered for this because it will always get the entirety of the current month ... but thats not enough


Add Linux variants

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

Dependencies:

https://github.com/conda-forge/ms-gsl-feedstock/pull/2
https://github.com/conda-forge/sophus-feedstock/pull/4

@conda-forge-admin, please rerender

@conda-forge-admin, please rerender

@conda-forge-admin, please restart ci

@conda-forge-admin, please restart ci


ARROW-6366: [Java] Make field vectors final explicitly

According to the discussion in<EMAIL_ADDRESS>field vectors should not be extended, so they should be made final explicitly.

This needs rebasing, but looks good on principle.

@lihalite Rebased. Thanks for your comments.

Codecov Report

Merging #5204 into master will increase coverage by 1.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #5204      +/-   ##
==========================================
+ Coverage   88.72%   89.74%   +1.01%
==========================================
  Files         945      696     -249
  Lines      124009   105095   -18914
  Branches     1437        0    -1437
==========================================
- Hits       110026    94316   -15710
+ Misses      13621    10779    -2842
+ Partials      362        0     -362

Impacted Files
Coverage Δ

cpp/src/arrow/filesystem/s3_internal.h
90.74% <0%> (-3.71%)
:arrow_down:

cpp/src/arrow/json/converter.cc
90.05% <0%> (-1.76%)
:arrow_down:

cpp/src/arrow/json/chunked_builder.cc
79.91% <0%> (-1.68%)
:arrow_down:

r/src/recordbatch.cpp

r/R/Table.R

go/arrow/math/uint64_amd64.go

r/src/symbols.cpp

r/R/Column.R

go/arrow/ipc/file_reader.go

js/src/builder/index.ts

... and 244 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d7ef11f...a8f4abb. Read the comment docs.

@lihalite Can this be merged?

@emkornfield yes, this is good. (Sorry, haven't yet set everything up...need to do it from home.)

+1, thank you.


S6. Reviewing others' annotations

Epic:
Description
User: Lead scientist on the same project with scientists from Use Case 1 #98 .
Use Case: Annotations are in good shape for AIT99, and I want to review, comment, or dispute them.
What I have:

AIT99 in the appropriate format
TDT installed correctly on my computer (see Use Case 2 #99 )

What I need to know:

Specifically what file do I need to perform this task? Is this the same as for Use Case 3 #100 ?
How do I comment on or dispute an existing annotation?  How do a approve, or add support for an existing annotation?
(How) can we make these comments private to the team (e.g., for internal review) or public (e.g., to allow public commentary on our cell sets)?

Tasks

[ ] Task1
[ ] Task2
[ ] Task3

(How) can we make these comments private to the team (e.g., for internal review) or public (e.g., to allow public commentary on our cell sets)?

Under current plans all comments will be visible to anyone with access.  We could potentially add a field that indicates comments should be deleted on public release + programatic support for deleting.  As public visibility is outside of the control of TDT (it is controlled via GitHub) deleting would have to be part of some SOP for public release.  Alternatively, we could just encourage anyone preparing a release to manually review all comments to decide if they should be deleted or released to the public.  Note - in either case, comments will remain in the history (Git forgets nothing unless your do really radical things to rewrite git history - something I strongly recommend against).


Add pgtap to enable unit testing PostgreSQL databases

Tool information

Tool name: pgtap
Add or update? Add
Desired version: Latest
Approximate size: ~310kb zip from Github
If this is an add request:

Brief description of tool: "pgTAP is a suite of database functions that make it easy to write TAP-emitting unit tests in psql scripts or xUnit-style test functions."
URL for tool's homepage: https://pgtap.org

Area for Triage:
Databases
Testing and code coverage
Virtual environments affected

[x] macOS 10.15
[x] Ubuntu 16.04 LTS
[x] Ubuntu 18.04 LTS
[ ] Windows Server 2016 R2
[ ] Windows Server 2019

Can this tool be installed during the build?
Unknown
Are you willing to submit a PR?
Unsure how to get started, but will look into it.

Hello, this tool can be installed in runtime using the following commands:
# Ubuntu
sudo apt-get install -y pgtap
# macOS
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/3c66798c39fdb6a7c8b15630035125cac63c3fa2/Formula/pgtap.rb

Installation takes about ~15 seconds

Thanks for your suggestion 🙏. Considering how easy it is to install during your run, this is not something we will add to the image at this time.

Thank you, @maxim-lobanov!


switch to standard js linting

use standard.js instead of eslint

standard --fix does not work recursively. you have to specify a filename to auto-fix
standard --fix bla.js
so install standard globaly npm i -g standard and use it directly for dev work.


Added resource video links and some changes!

Description
Hi myself Yuhesh. I added some changes to this repository which might help you I guess so.
The changes are the following :

added resource Youtube video links to the README of the following folders

Basic Python
Competitive Programming
DSA
Django
Flask
GUI
Game Development
Intermediate
Web Scrapping

Mentioned whether it is a playlist or video in the Tables

Added a new folder called Automation and added resource video links in its README.md

Added a new folder named Learner's Roadmap and added a roadmap to learn python in its README.md

Type of change

[x] New feature (non-breaking change which adds functionality)
[ ] Documentation Update

Checklist:

[x] I have named my files and folder, according to this project's guidelines.
[x] My Pull Request has a descriptive title. (not a vague title like Update index.md)

Request
Hope you like these changes. I also have a small but unique idea that I'd like see in this project. If you like my work please look at my projects and give me a follow. You could also contribute in my projects I would love it. Also comment your opinions and contact me if you want to develop this repository further more.
** Thank You**

kindly comment your opinions


Remove version: Google.Chrome.Canary version 128.0.6542.0

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

URL: https://dl.google.com/release2/chrome/acsk7v36t2wimkkjynxrnokgzlbq_128.0.6542.0/128.0.6542.0_chrome_installer.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 912)


Upgrade to Helm v3

Zeebe on Kubernetes deployment is based on Helm v2 which is end-of-life as of November 2020.

@daghb it is.. have you found any issues using the charts with Helm 3?

this is done already


Schema issues with APPE data

Found during regression testing in ecmps-tst.app.cloud.gov v2.0.90.
Logged in as saber_ds (Submitter) and imported Appendix E test from historical. Exported test to json file, re-imported/ re-evaluated and received APPE-42-A, APPE-43-E, and AETB-10-A (5985) errors.
The json file includes "appendixECorrelationTestSummary Data" and "appECorrelationTestSummaryData" fields. The data is in the latter so most of the test data is missing after the import.
Schema only includes "appECorrelationTestSummary".
Per 12/14/2023 regression testing review meeting with EPA, update the schema to "appendixECorrelationTestSummaryData". The export should only include "appendixECorrelationTestSummaryData".
QA reporting instructions needed updates added to EC-3959.

Found during regression testing in ecmps-tst.app.cloud.gov v2.0.90.
Logged in as saber_ds (Submitter) and imported RATA test from historical. Exported test to json file, re-imported and re-evaluated and received a critical 2 AETB-10-A error.
The exported data has "airEmissionTestingData" and "airEmissionTestData" fields with the AETB data located in "airEmissionTestingData".
The schema includes "airEmissionTestData". "airEmissionTestingData" is also defined in the MP Reporting Instructions.
Per 12/14/2023 regression testing review meeting with EPA, update the schema to "airEmissionTestingData". The export should only include "airEmissionTestingData".
The export of submitted AETB data also includes the following database fields. Is there a reason for this?
id
testSumId
userId
addDate
updateDate
This affects APPE, RATA, and UNITDEF QA test exports.

Are the extra database fields in the scope of this issue, or are those being addressed in #6182?

Verified schema change on dev using ORIS 6137, unit 3 APPE test #13. JSON export of test only contains "appendixECorrelationTestSummaryData" and "airEmissionTestingData". Currently not able to test evaluations on dev due to bypass

@maxdiebold-erg Not sure if this was changed with the typeORM updates, but when importing the test from my comment above for ORIS 6137, unit 3 from historical data and exporting the test, a componentId is added in the testSummaryData record. Trying to reimport this test results in an IMPORT-18-C error.

@lgiannini1 That doesn't sound like a TypeORM issue, were you able to re-import it previously? Again, that sounds like the issue being addressed in #6182.

@maxdiebold-erg Yes, previously this componentId field was null in the exports and I was able to reimport the test.

My mistake, I had the fields mixed up, componentId is in the schema. I'll look into that issue more.

@lgiannini1 Good call! I looked more into this issue, and found that the problem is due to the issue described here. null values in queries are simply dropped by TypeORM unless the IsNull helper is used. I could not find this behavior documented, but it doesn't look like there is a plan to fix it. In this case, the test summary is assigned a component with:
testSumRecord.component = await this.componentWorkspaceRepository.findOne({
  where: {
    componentID: testSummary.componentId,
    locationId,
  },
});

which, in the case of a null componentId value, is translated by TypeORM to:
SELECT
    component_id,
    mon_loc_id,
    component_identifier,
    component_type_cd
FROM
    camdecmpswks.component
WHERE (mon_loc_id = $1)
LIMIT 1

which will return multiple rows. In this case, we should check for a null componentId before performing the query.

@maxdiebold-erg - this also affects component-level QA tests. A monitoringSystemId appears to be added on export when it should be null. Linearity tests are an example where only componentId is reported.

@maxdiebold-erg Was this componentId issue fixed on dev? I'm still seeing a componentId for APPE and RATA tests. Linearities also have a monitoringSystemId when they shouldn't.

@lgiannini1 I am working on the underlying fix for that across all repositories, and I'll have those fixes in code review today.

ComponentId issue has been resolved on dev.

Verified in the test environment with ORIS 6137, Location 3.

In the QA module, I imported from historical, exported and imported with no imports errors. Then, I evaluated with no errors.
Also, airEmissiontestData has been removed and airEmissionTestingData is now available in the exported json file.
Lastly, in the exported file, the componentID field is null again.


Suggested companies

OLX Group: https://www.olxgroup.com/search/engineering/portugal-lisbon/all-brands

Pipedrive:  CRM to make sales people more efficient
Jobs: https://www.pipedrive.com/jobs/portugal
Link: https://www.pipedrive.com
Location: Lisbon

Hi @nancruz and @nunoas,
Can you please check CONTRIBUTING.md and contribute with pull requests?
Let me know if you have any trouble.
Thanks!

@marmelo done 👍

Thanks @nancruz!

Hi @nunoas, do you need some help?
I bet @claudiaalves is ready to come to the rescue! :)

Hi @nunoas @claudiaalves, I am closing this issue.
Feel free to open a pull request for Pipedrive.
Thanks!


Add a testcase for Encoder and Decoder.

I've added tests for MessageDecode and MessageEncode.

This build failure is caused by clippy...


adr-002 lite client

Lite client ADR. A bit backwards because we've already got WIPs for the implementation, but trying to get this written up before we make much more progress there.
Link for nicer reading: https://github.com/interchainio/tendermint-rs/blob/bucky/adr-lite/docs/architecture/adr-002-lite-client.md

Ok I addressed all the feedback. Also updated it to match the latest version of the code and included some notes about that. Added a proper image too.

I don't understand why this is failing. The latest master has been merged in and it passes locally ...

Ok we should update this per https://github.com/interchainio/tendermint-rs/pull/105 ... removed the Validator trait!

Ok thanks to @jibrown we actually have a really nice diagram of the data flow for the whole thing now! Might need a few updates to the text to align with the new image though.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@3018cf0). Click here to learn what that means.
The diff coverage is 54.73%.

@@            Coverage Diff            @@
##             master      #54   +/-   ##
=========================================
  Coverage          ?   36.08%
=========================================
  Files             ?       90
  Lines             ?     3140
  Branches          ?      490
=========================================
  Hits              ?     1133
  Misses            ?     1750
  Partials          ?      257

Impacted Files
Coverage Δ

tendermint/src/amino_types/block_id.rs
13.79% <ø> (ø)

tendermint/src/rpc/client.rs
0% <ø> (ø)

tendermint/src/amino_types/signature.rs
35.71% <ø> (ø)

tendermint/src/amino_types/remote_error.rs
0% <ø> (ø)

tendermint/src/amino_types/time.rs
35.29% <ø> (ø)

tendermint/src/block.rs
0% <ø> (ø)

tendermint/src/amino_types/version.rs
62.5% <ø> (ø)

tendermint/src/amino_types/message.rs
100% <ø> (ø)

tendermint/src/error.rs
12.3% <0%> (ø)

tendermint/src/amino_types.rs
0% <0%> (ø)

... and 19 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3018cf0...ce03b67. Read the comment docs.

Ok, I think this is finally done. It's been realigned with the latest code and describes only what's already been implemented in the lite and lite_impl. Let's merge.


Add Additional QoL Patches

We should make it easier to add additional QoL Patches and add some extras from VARIA and other places.
Here are some possibilities we should look at for some to add for Super Metroid at least:

Aim any button (https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/ips/AimAnyButton.ips)
Nerfed default charge beam (https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/ips/nerfed_charge.ips)
Save stations refill (https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/ips/refill_before_save.ips)
Fast Doors (https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/ips/fast_doors.ips)
Fast Elevators (https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/ips/elevators_speed.ips)
Speed Keep (https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/ips/rando_speed.ips)
Colorblind friendly doors (https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/ips/color_blind.ips)

It might be good to see if we can find the original .asm source for these on metroidconstruction.com.

Aim anything (Kejardon): https://metroidconstruction.com/resource.php?id=234
Nerfed default charge beam (Smiley/Flo): https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/src/nerfed_charge.asm
Save stations refill (adamf): https://metroidconstruction.com/resource.php?id=19
Fast Doors (kazuto): https://github.com/theonlydude/RandomMetroidSolver/blob/master/patches/common/src/fast_doors.asm
Fast Elevators (Lioran): https://metroidconstruction.com/resource.php?id=104
Speed Keep (Scyzer and others): https://metroidconstruction.com/resource.php?id=368
Colorblind friendly doors (?): ?

Other patches we talked about that would fit the same theme:
Symmetrical green gate glitch (Oi27): https://metroidconstruction.com/resource.php?id=572
Fix Bomb Torizo trigger (P.JBoy): https://metroidconstruction.com/resource.php?id=491

Whatever else we mentioned on Discord

So the colorblind friendly doors didn't seem to work well for SMZ3 unfortunately, but all of the other original ips patches I was able to get integrated seemingly with no issues. Main one I'm still a bit concerned about is the fast doors one because of the transition between world. It seemed to work okay, but that may be something that may cause more subtle issues with transitioning games that aren't easy to immediately see.
For the last two posted ASM patches, I'll need to see if I can figure out how to get those added into the base patch. I don't think we'd really need options for those. Bozo would possibly be good to have it be an option, but I don't like the soft lock potential as is, and it's an easy fight anyway, so I think it's probably fine to make that change.


iOS Device - Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://<IP_ADDRESS>:1024/7El8EVb7r60=/ws

Steps to Reproduce

Create a new flutter project with the command "flutter create myproject
Enter myproject directory "cd myproject"
Run VS Code "code ."
Start debugging on my iPhone device, pressing F5
White screen on iPhone, and this error on the debug console:

Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://<IP_ADDRESS>:1024/kzLI1UZIOJQ=/ws
I read all the issues here (duplicates and non duplicates) and all the solutions are worthless for my case.
What I have tried:

Disconnect/Reconnect the device (iPhone) - no difference, still issue
Export "export no_proxy=localhost,<IP_ADDRESS>/8,::1" and all the other variances - no difference, still issue
iTunes "Sync with this iPhone over Wi-Fi" UNSET - no difference, still issue
XCode Devices - "Connect via network"UNSET - no difference, still issue
Turn Wifi to OFF on device - no difference, still issue
Turn Tether to OFF on device - no difference, still issue
Tested on different USB ports - no difference, still issue
Reboot computer/device - no difference, still issue
Replaced the device (got an iPad) - no difference, still issue
Switched channel DEV to MASTER - no difference, still issue
Switched channel MASTER to STABLE - no difference, still issue
Switched channel STABLE to BETA - no difference, still issue

So, I am running out of ideas. I need to have iOS device access on development because I am developing an app that uses camera to take photos and qr-code reader. It is very frustrating to have this kind of issues on a such great tool. From what I saw in the web, this is a MAJOR BREAKING issue that happens on some people but not to others. I hope the Flutter team fixes this on the next version.
On IOS Simulator, it works perfectly.
On Android Simulator, it works perfectly.
On Android Device, it works perfectly.
Logs
debug console:
Launching lib/main.dart on iPhone Mauro in debug mode...
Signing iOS app for device deployment using developer identity: "iPhone Developer: ..."
Xcode build done.                                            3.5s
Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://<IP_ADDRESS>:1024/kzLI1UZIOJQ=/ws
Exited (sigterm)

flutter doctor -v
[✓] Flutter (Channel dev, v1.5.8, on Mac OS X 10.14.4 18E226, locale en-BR)
• Flutter version 1.5.8 at /Users/mauro/development/flutter
• Framework revision 0ba67226ee (3 weeks ago), 2019-04-24 17:18:28 -0700
• Engine revision c63d1cf9c9
• Dart version 2.3.0 (build 2.3.0-dev.0.1 1f1592edce)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /Users/mauro/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = /Users/mauro/Library/Android/sdk
• ANDROID_SDK_ROOT = /Users/mauro/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.2.1, Build version 10E1001
• ios-deploy 1.9.4
• CocoaPods version 1.7.0.beta.1
[✓] Android Studio (version 3.4)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 35.3.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
[✓] VS Code (version 1.33.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.0.2
[✓] Connected device (1 available)
• iPhone Mauro • e1216cebac409d83bc8d37bde15f8af53564c933 • ios • iOS 12.3
• No issues found!

Just to note: This issue wasn't happening a few months ago, then it started to happen randomly and now it is a constant, making it impossible to debug on an iOS device.

Some more info:
When I run from command line "flutter run", I get this error:
Error connecting to the service protocol: HttpException: , uri =
http://<IP_ADDRESS>:1024/DnwOPTSB0MQ=/ws
And the app is running on the device - I can see the main screen.
When I run from VS Code - F5 or ctrl-F5, I get a white screen with the same error:
Error connecting to the service protocol: HttpException: , uri = http://<IP_ADDRESS>:1024/bLcFaTaqJBQ=/ws
Before, when I didn't had this error permanently, just randomly, I saw that the port number was auto-incrementing (1023, 1024, 1025, ...) to find a port that wasn't blocked or being used. I believe that this can be solved changing the port number, but I don't have any idea or skills to reprogram a port change on flutter.

On android studio, the app launches but I have this on the Console:
Launching lib/main.dart on iPhone Mauro in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: 3F9J2TRCP3
Running Xcode build...
Xcode build done.                                            7.0s
Installing and launching...
Error connecting to the service protocol: HttpException: , uri = http://<IP_ADDRESS>:1024/vac7B3cmyMo=/ws

Finally got it to work.
Steps I made:

Get in terminal
Command: "lsof -nP -i4TCP:1024"
This command will return:
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME mobiledev 18230 mauro    7u  IPv4 0xbea54bcdd5cea723      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)
Kill the mobiledev with the ommand "kill 18230" (the number PID from the process)
Hit the F5/Ctrl-F5 or Start Debugging/Start Without Debuggin on VS Code or Android Studio
You have it working with hot reload and DevTools working perfectly.

The real issue is that I have to find the PID and kill it everytime I stop the app.

Here is a short command that finds the PID and kills the process using the port 1024:
lsof -n -i4TCP:1024 | grep LISTEN | awk '{ print $2 }' | xargs kill

I had this running Q. Changing to Pie helped

I am using iPhone.

I was opened 12 days ago and no review from the Flutter team.
What is the strategy here, wait and let it die by itself?

I'm getting the same error. I'm completely not sure, but can it be related with CocoaPods version? Mine is also 1.7.0

The same problem but how do you use your iPhone. Because my android sim is not working.

@knissophiliac Usually, killing the process that is using the 1024 port with the line from my previous comment, it works. If not I disconnect/reconnect the iPhone and keep killing the port (if it is being used) and then it works.
I also found out that if I have another device (android) connected to the dev machine, it will not work until I disconnect the other device.

@c0h1b4 I change my CocaPods version to 1.5.0. I'm getting this error rarely. If I get it, I unplug my device and replug it. That's a temporary solution but it works for me :)

Not working for me :( And no help from Flutter team.

Still waiting for some help of the Flutter team.

@c0h1b4 am I understanding this correctly?

The first time you run everything is fine
After you stop the debug session, it leaves a process (mobiledev) hanging around
Subsequent runs will fail with the error above
Terminating the mobiledev process fixes things (back to the start, where you can run once, but then you see the issue again)?

If so, does this repro from the command line (with WiFi debugging disabled)? If so, could you capture a full verbose log (using flutter run -v) for the sample flutter app (created with flutter create) and paste it into a Gist and paste the link here?
If it doesn't happen at the terminal (only VS Code) and you have IntelliJ or Android Studio available, could you see if the issue reproduces there?

@c0h1b4 am I understanding this correctly?

The first time you run everything is fine
After you stop the debug session, it leaves a process (mobiledev) hanging around
Subsequent runs will fail with the error above
Terminating the mobiledev process fixes things (back to the start, where you can run once, but then you see the issue again)?

If so, does this repro from the command line (with WiFi debugging disabled)? If so, could you capture a full verbose log (using flutter run -v) for the sample flutter app (created with flutter create) and paste it into a Gist and paste the link here?
If it doesn't happen at the terminal (only VS Code) and you have IntelliJ or Android Studio available, could you see if the issue reproduces there?

Let me clear the questions:

No, the first time I run the app on iOS, it launches the app and halts on the splash screen, after waiting a little, the HttpException appears. Then I need to unplug the device/kill the mobiledev process;
If I check the 1024 port before running the app, I can see that no process is using it, with a clean answer from lsof -n -i4TCP:1024. After running, I see the following:

lsof -n -i4TCP:1024
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
dart      39063 mauro    8u  IPv4 0x4099351af82f3a65      0t0  TCP <IP_ADDRESS>:61924-><IP_ADDRESS>:1024 (ESTABLISHED)
dart      39063 mauro   24u  IPv4 0x4099351afe10a465      0t0  TCP <IP_ADDRESS>:61930-><IP_ADDRESS>:1024 (ESTABLISHED)
mobiledev 39817 mauro    7u  IPv4 0x4099351aff101465      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)
mobiledev 39817 mauro    8u  IPv4 0x4099351b13c52de5      0t0  TCP <IP_ADDRESS>:1024-><IP_ADDRESS>:61924 (ESTABLISHED)
mobiledev 39817 mauro   17u  IPv4 0x4099351b026d6a65      0t0  TCP <IP_ADDRESS>:1024-><IP_ADDRESS>:61930 (ESTABLISHED)
and the app is halted on the splash screen and VS Code is stuck on "Syncing files to device iPhone ..."
Then I press the STOP button on VS Code that stops the process that is waiting, but if I run lsof to check the ports I can see that a single process is still stuck.
lsof -n -i4TCP:1024
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mobiledev 39817 mauro    7u  IPv4 0x4099351aff101465      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)
Now, I need to stop the app on the iOS device (iPhone) to exit the splash screen, and kill the process that is blocking 1024 port, unplug/plug de iOS device and run again (F5). Now everything works, hot reload, devTools, restart (shift-cmd-F5). BUT, if I stop the app (shift-F5 or stop button), after the app stops on the device and shows on the VS Code that it is stopped I see that mobiledev is still holding the port:
lsof -n -i4TCP:1024
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mobiledev 47765 mauro    7u  IPv4 0x4099351b00bbfde5      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)
If I try run again, I get the "Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://<IP_ADDRESS>:1024/is-7bqXvKkI=/ws" error with the splash screen frozen.
Fix, I need to kill the process that is stucking the port/unplug&plug the device and press F5 again.
The only way to run without unplugging/plugging the device is to kill the process before running the app.
Also, if there is any other device (Android) connected to the computer, it will never work, al

Yes, exactly, So if I need to start a new debug session I need to kill the mobiledev
Yes, if I don't kil the mobiledev, I get the error.
Yes, it fixes IF I don't try to run the app with the process using the 1024 port. If I run with the process running, I need to kill the process and unplug/plug the device.

WiFi debug is disabled.
Gist with the port 1024 being used by mobiledev: https://gist.github.com/c0h1b4/684a678e411a56ae20208f80a4a26930
that shows the error
Gist with the mobiledev process killed before running:
https://gist.github.com/c0h1b4/ea8faf74c5a844a3380d294d4348a640
with no error and everything works ok!
On Android Studio I was having the same issues, but today to check your questions, I just saw that I don't have this issue after I stop the app. So it looks like the issue is only with the VS Code.
I will do a test after rebooting the computer to see if the issue appears on Android Studio on the first run and post here in a few minutes.
Also, here is my flutter doctor -v:
[✓] Flutter (Channel dev, v1.7.9, on Mac OS X 10.14.5 18F132, locale en-BR)
• Flutter version 1.7.9 at /Users/mauro/development/flutter
• Framework revision 8dbfc82bc7 (26 hours ago), 2019-06-24 11:41:02 +0100
• Engine revision 4444c9cb6c
• Dart version 2.4.0
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /Users/mauro/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = /Users/mauro/Library/Android/sdk
• ANDROID_SDK_ROOT = /Users/mauro/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.2.1, Build version 10E1001
• CocoaPods version 1.7.1
[✓] iOS tools - develop for iOS devices
• ios-deploy 1.9.4
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 3.4)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 36.1.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
[✓] VS Code (version 1.35.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.1.0
[✓] Connected device (3 available)
• iPhone Mauro • e1216cebac409d83bc8d37bde15f8af53564c933 • ios            • iOS 12.3.2
• macOS        • macOS                                    • darwin-x64     • Mac OS X 10.14.5 18F132
• web          • web                                      • web-javascript • Google Chrome 75.0.3770.100
• No issues found!

Just checked on Android Studio after reboot and with 2 Android devices connected and the issue is gone on Android Studio. It seems to be isolated to VS Code and terminal 'flutter run' only, by now.

Just stopped the app on Android Studio, quit Android Studio, checked the 1024 port (it is clean), started VS Code and run the app:
Stuck on splash screen.
Launching lib/main.dart on iPhone Mauro in debug mode...
Automatically signing iOS for device deployment using specified development team in Xcode project: 3F9J2TRCP3
Xcode build done.                                            5.9s
Error connecting to the service protocol: HttpException: , uri = http://<IP_ADDRESS>:1024/pg7WezLBzlc=/ws
Exited (sigterm)
lsof -n -i4TCP:1024
COMMAND    PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mobiledev 2974 mauro    7u  IPv4 0x759c0207e61031bb      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)

Thanks for the info - I was thinking that VS Code might be terminating Flutter in a way that it's not cleaning up properly, but that doesn't explain why it wouldn't work the very first time or why it happens from the terminal.
I don't have an iPhone unfortunately to test here (and if I understand correctly, it only happens with a physical iOS device?). I'm curious about the mobiledev process - do you know where that's from? Is it part of our one Flutter's dependencies or part of the iOS toolchain (I can't find anything online)?

Can you get a tree of process that includes mobiledev? (For ex. does it show in the tree when running code --status). Also, when you open VS Code does the mobiledev process show up before you press F5 to run, or only once you try running?

Ok, I got your advice and followed the white rabbit on "mobiledev".
This is where it comes from:
https://github.com/imkira/mobiledevice
It looks like it is installed by homebrew on the Mac.
I will try uninstalling it and check if Flutter still works.
And the mobiledev process does not show up before F5.

Ok, after uninstalling mobiledevice, flutter stopped to work. So it is an essential part of it.
I reinstalled and it got back to the same issues.
So after checking again on Android Studio and VS Code, I confirmed that on Android Studio, all the mobiledev processes are killed and on VS Code, one is left:
before stop (vs code):
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Code\x20H  6991 mauro   61u  IPv4 0xf443635abe1ddffd      0t0  TCP <IP_ADDRESS>:50279-><IP_ADDRESS>:1024 (ESTABLISHED)
dart      10072 mauro    8u  IPv4 0xf443635aa804367d      0t0  TCP <IP_ADDRESS>:50272-><IP_ADDRESS>:1024 (ESTABLISHED)
dart      10072 mauro   11u  IPv4 0xf443635aacff4ffd      0t0  TCP <IP_ADDRESS>:50304-><IP_ADDRESS>:1024 (ESTABLISHED)
mobiledev 10528 mauro    7u  IPv4 0xf443635aab6199fd      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)
mobiledev 10528 mauro    8u  IPv4 0xf443635abdb8037d      0t0  TCP <IP_ADDRESS>:1024-><IP_ADDRESS>:50272 (ESTABLISHED)
mobiledev 10528 mauro   11u  IPv4 0xf443635abdeadffd      0t0  TCP <IP_ADDRESS>:1024-><IP_ADDRESS>:50304 (ESTABLISHED)
mobiledev 10528 mauro   23u  IPv4 0xf443635aa5aad37d      0t0  TCP <IP_ADDRESS>:1024-><IP_ADDRESS>:50279 (ESTABLISHED)
after stop (vs code):
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mobiledev 10528 mauro    7u  IPv4 0xf443635aab6199fd      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)
So I believe that the cleanup after stopping on VS Code must be missing something.

@c0h1b4 thanks, this helps! Could you capture a verbose log from VS Code?

Run the Dart: Capture Logs command
Tick just the Debugger/Observartory and Flutter Run categories
Run your project (with F5)
Click Stop
Wait until the debug toolbar has disappeared, then a further few seconds
Click Stop Logging on the logging notification (which has probably collapsed into the bell icon in the status bar by now)
Paste the log into a Gist

When logs are being captured, it'll run Flutter in verbose mode (same as -v from the terminal), and the Observatory logging will include the termination signals VS Code is sending when trying to shut down (and whether it aggressively terminated the process for not responding correctly).
If you can repro this from the terminal, the same log running flutter run -v will be useful too (since then it might be easily debuggable by someone else - who has an iOS device available!).

@DanTup
Here are the log gists:
Running the project with F5:
https://gist.github.com/c0h1b4/44ebd97c1d031a7cfb470467ffdbd7d0
Running the project from terminal:
https://gist.github.com/c0h1b4/c0759274aa895999c97e438a2422f4df
On both actions, I get the mobiledev process stuck on port 1024 after stopping the app.
COMMAND     PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mobiledev 88414 mauro    9u  IPv4 0xd8824c81cb8e5ca7      0t0  TCP <IP_ADDRESS>:1024 (LISTEN)
PS: I killed the 1024 port process before running.

@c0h1b4 thanks! There's something a little weird in those logs - looks like we tell the app to stop twice, and the first one doesn't get a response. I don't know if that's contributing to the issue, but it feels wrong. I can repro that locally so I'll have a go at fixing and then you can test if it makes any difference.

@c0h1b4 could you see if this build makes any difference?
https://github.com/Dart-Code/Dart-Code/releases/tag/v3.3.0-alpha.2
Download the .vsix file somewhere, then run Extensions: Install from VSIX from the VS Code command palette and browse to that file, then click the Reload button.
We were previously sending app.stop multiple times and then also assuming that when the Observatory connection closed, Flutter had quit (but it hasn't, which resulted in us then also sending a SIGINT too). Now we should only send one, and we'll wait for the app to quit (up to 3 seconds) before sending any SIGINTs.
Be aware that clicking the Stop button a second time during shutdown will perform a SIGTERM which could definitely leave processes around, that's somewhat unavoidable (VS Code only gives us two chances to stop.. one cleanly, one aggressively).

I'm facing the same problem.
This is my flutter doctor
/Users/antoninobajeli/Documents/FlutterSDK/flutter/bin/flutter doctor --verbose
[✓] Flutter (Channel stable, v1.5.4-hotfix.2, on Mac OS X 10.14.5 18F132, locale it-IT)
• Flutter version 1.5.4-hotfix.2 at /Users/antoninobajeli/Documents/FlutterSDK/flutter
• Framework revision 7a4c33425d (3 months ago), 2019-04-29 11:05:24 -0700
• Engine revision 52c7a1e849
• Dart version 2.3.0 (build 2.3.0-dev.0.5 a1668566e5)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /Users/antoninobajeli/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = /Users/antoninobajeli/Library/Android/sdk
• Java binary at: /Applications/Android Studio 3.1 Preview.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.2.1, Build version 10E1001
• ios-deploy 1.9.4
• CocoaPods version 1.7.3
[✓] Android Studio (version 3.4)
• Android Studio at /Applications/Android Studio 3.1 Preview.app/Contents
• Flutter plugin version 37.0.1
• Dart plugin version 183.6270
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
[✓] IntelliJ IDEA Community Edition (version 2017.2.6)
• IntelliJ at /Applications/IntelliJ IDEA CE.app
• Flutter plugin version 21.0.2
• Dart plugin version 172.4343.25
[✓] Connected device (2 available)
• TA 1021                   • PLEGAR17A1802749                         • android-arm64 • Android 9 (API 28)
• iPhone di Antonino Bajeli • 1dc32573e1ee148d13ae7c8cee583152725b9185 • ios           • iOS 12.3.1
• No issues found!

@antoninobajeli I posted a build of the VS Code extension above with some tweaks but haven't had any feedback. There's a newer version at https://github.com/Dart-Code/Dart-Code/releases/tag/v3.3.0-beta.2 now. I'm still interested to hear if it improves things for anyone (or even if it makes things worse).

Hello. On the latest version the issue is solved!
I have no issues about it now.

@c0h1b4 excellent! Thanks for confirming. I'll close this, but if anyone comes here with similar issues - please try the latest v3.3 build from https://github.com/Dart-Code/Dart-Code/releases and if you still see issues, open a new issue with a log attached.

@DanTup I see the problem in the beta channel. How can I switch just Dart to version 3.3?


Integrate kubernetes/ingress-nginx 0.10.2 to Kubespray

When compare with istio ingress controller HTTPS support, Nginx ingress controller could natively support multiple TLS secret in the ingress.
This patch integrate https://github.com/kubernetes/ingress-nginx with Kubespray. It provide a DaemonSet nginx-ingress-controller-ds.yml.j2 which mapping with hostPort (default to 80 and 443), in order to simplify external LB port mapping.
For testing, change nginx_ingress_enabled as true under inventory/mycluster/group_vars/k8s-cluster.yml and deploy with --tags nginx-ingress.

I was looking into this and here is a few comments:
Running 1 replica of the ingress seems to be a bad idea if you try to build a "HA" setup?
Further, do you bind the ingress to the masters or the nodes?
A lot of people, my self inclusive, uses the ingress as a DaemonSet and using a hostPort / nodePort. I see you've put in a Loadbalancer in front of it. Should work pretty nicely with MetalLB I see.

@woopstar thanks for review and idea ;-)
First of all, the ReplicaSet is for nginx-ingress-default-backend-rs.yml.j2 is just a simple health check backend as mentioned in original inline comment, which don't do real ingress duty so replicas: 1 should be good enough:
          # Any image is permissible as long as:
          # 1. It serves a 404 page at /
          # 2. It serves 200 on a /healthz endpoint

Secondly, I am also keep on finding a way to running these ingress controller pod on every node (which I forget that we could use DaemonSet...). The implementation now update as DaemonSet nginx-ingress-controller-ds.yml.j2 + hostPort, so it should running on every node as what we expected for HA ;-)

Can you resolve conflicts ?

can you squash commits? then i will merge this

@Atoms thank you very much ;-)

Nice work, however I think this feature is lacking in documentation. It's not mentioned anywhere in the docs


aur-build --pkgver --syncdeps fails with a custom dlagent in makedepends

aur-build --pkgver as per manual runs makepkg --noprepare -od, but if the PKGBUILD contains a custom DLAGENT, also listed correctly in makepends, it won't be fetched since the --syncdeps flag is not passed to makepkg
example of a failing PKGBUILD:
pkgname=soundfont-nice-keys-ultimate
pkgver=2.3
pkgrel=1
pkgdesc="Yamaha C5 Grand plus a full compliment of performance sounds to cover all your needs from pads, strings, EPs, orchestra, synth, organs, guitars and many other instruments"
arch=('any')
license=("CC-BY-ND")
url="https://sites.google.com/site/soundfonts4u/"
DLAGENTS=('https::/usr/bin/gdown')
makedepends=('gdown')
groups=('soundfonts')
source=("Nice-Keys-Ultimate-V${pkgver}.sf2::https://drive.google.com/uc?id=0B3zFERJ2rMQpeDF3cTBlQWJXdHc&export=download")
sha256sums=('0b1ae0af5ee8aa8e183924b86e88976f84a6a36d38d49d9fc1a8e290ae38b8a6')

package() {
  cd "${srcdir}"
  install -D -m644 Nice-Keys-Ultimate-V$pkgver.sf2 "$pkgdir/usr/share/soundfonts/Nice-Keys-Ultimate.sf2"
}

launch it with
aur build --pkgver --syncdeps --rmdeps and it'll fail on aurutils version check ( I am aware it's unnecessary, but I am using it in a script and it'd be extremely annoying to toggle the flag for vcs packages where it's truly needed )

On 27/04/2020 17:35, BrainDamage wrote:

aur-build --pkgver as per manual runs makepkg --noprepare -od, but if
the PKGBUILD contains a custom DLAGENT, also listed correctly in
makepends, it won't be fetched since the --syncdeps flag is not passed
to makepkg
example of a failing PKGBUILD:
|pkgname=soundfont-nice-keys-ultimate pkgver=2.3 pkgrel=1
pkgdesc="Yamaha C5 Grand plus a full compliment of performance sounds
to cover all your needs from pads, strings, EPs, orchestra, synth,
organs, guitars and many other instruments" arch=('any')
license=("CC-BY-ND") url="https://sites.google.com/site/soundfonts4u/"
DLAGENTS=('https::/usr/bin/gdown') makedepends=('gdown')
groups=('soundfonts')
source=("Nice-Keys-Ultimate-V${pkgver}.sf2::https://drive.google.com/uc?id=0B3zFERJ2rMQpeDF3cTBlQWJXdHc&export=download")
sha256sums=('0b1ae0af5ee8aa8e183924b86e88976f84a6a36d38d49d9fc1a8e290ae38b8a6')
package() { cd "${srcdir}" install -D -m644
Nice-Keys-Ultimate-V$pkgver.sf2
"$pkgdir/usr/share/soundfonts/Nice-Keys-Ultimate.sf2" } |
launch it with
|aur build --pkgver --syncdeps --rmdeps| and it'll fail on aurutils
version check ( I am aware it's unnecessary, but I am using it in a
script and it'd be extremely annoying to toggle the flag for vcs
packages where it's truly needed )
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/AladW/aurutils/issues/716, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABKASJB2P4KHSN2CV7ZWOG3ROWQ2TANCNFSM4MSA4VSA.

Adding --syncdeps to the makepkg -od command-line, if aur-build
--syncdeps is specified, should solve the issue. I don't see any
drawbacks in doing that.

Would that work with --rmdeps specified too? As far as I know --rmdeps only removes deps that are installed by current launch of makepkg, so when makepkg is launched again to execute the build, it wouldn't remove them. So I'd guess both would have to be passed.

I wonder if it makes a difference to simply append all makepkg arguments to makepkg -od. If it does, we can just add those relevant (--rmdeps, --syncdeps) to a seperate array.

Please test if #720 works as intended.


cstyle fixes in istgt_integration_test.c

fmt(cstyle): cstyle fixes in istgt_integration_test.c
Fixes: #2035
Signed-off-by: Siva<EMAIL_ADDRESS>

thanks @rsiva911 for the PR, and, @akshayupendran for review


Python3 compatibility

- What I did

Improve python3 compatibility
An adjustment of https://github.com/ethereum/pyethereum/commit/91342a0430119d3884ac7d6bf4078fcf38e401fa because I found pyethapp can’t run on the old code, hope @joeykrug could help to check if this patch works for your case too.

- How I did it

Using to_string(data) instead most str(data) function. Note that to_string(data) returns bytes for both Python2 and Python3.
Added the missing b before binary string
Modified the assertion of state.block_number and state.prev_headers[0].number

Related issue: https://github.com/ethereum/pyethereum/issues/442
- Cute Animal Picture

Thanks! @hwwhww
Just one comment. I suggest to modify this line db.put(b'GENESIS_NUMBER', str(genesis.header.number)) to ``db.put(b'GENESIS_NUMBER', to_string(genesis.header.number))`.
https://github.com/hwwhww/pyethereum/blob/254a30152f2606bfeb769a27a628cff5b7d13d85/ethereum/genesis_helpers.py#L77


Uncaught Error: dlopen(/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/...

[Enter steps to reproduce:]

...Opened Preferences, clicked on Packages in the sidebar.
...Typed "GitHub" in search bar.

Atom: 1.39.1 x64
Electron: 3.1.10
OS: Mac OS X 10.13.6
Thrown From: Atom Core
Stack Trace
Uncaught Error: dlopen(/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app.asar.unpacked/node_modules/keyboard-layout/build/Release/keyboard-layout-manager.node, 1): image not found
At ELECTRON_ASAR.js:166

Error: dlopen(/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app.asar.unpacked/node_modules/keyboard-layout/build/Release/keyboard-layout-manager.node, 1): image not found
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:166:20)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:740:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:180:18)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:559:12)
    at Function.Module._load (internal/modules/cjs/loader.js:551:3)
    at Module.require (/app.asar/static/index.js:71:46)
    at require (internal/modules/cjs/helpers.js:20:18)
    at customRequire (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:1:686763)
    at get_KeyboardLayoutManager (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:14:2698718)
    at get_manager (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:14:2698820)
    at Object.getCurrentKeyboardLayout (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:14:2698946)
    at e.keystrokeForKeyboardEvent (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:14:1086055)
    at KeymapManager.keystrokeForKeyboardEvent (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:11:1245252)
    at KeymapManager.handleKeyboardEvent (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:11:1243237)
    at WindowEventHandler.handleDocumentKeyEvent (/private/var/folders/wt/pkcdlzmj1bd1d1ffxqfhfv180000gn/T/AppTranslocation/5DF855E0-C352-4880-A70A-E0F05585CC7C/d/Atom.app/Contents/Resources/app/static/<embedded>:11:283942)

Commands

Non-Core Packages
import 1.7.0

Thanks for the report!
We noticed that this looks like a duplicate of #14461 so you can subscribe there for updates if you'd like.   To get past the error, I'd recommend running through the installation again but if you still have trouble let me know.

Because we treat our issues list as the Atom team's backlog, we close duplicates to focus our work and not have to touch the same chunk of code for the same reason multiple times. This is also why we may mark something as duplicate that isn't an exact duplicate but is closely related.
For information on how to use GitHub's search feature to find out if something is a duplicate before filing, see the How Can I Contribute? section of the Atom CONTRIBUTING guide.


dlrs:Too many query rows: 50001 in realtime

When I bulk re-parent more than 85 childs  in real time I have this exception  dlrs:Too many query rows: 50001 in realtime
I have like 5 rollups with the same parent-child.
I suppose I have a lot of rollups isn't it?

Well its more like you have a lot of child records related to the parents, although your only updating 85, the aggregate query functionality the tool uses recalculates with all child records. You have two options, de-activate the rollups temporarily, perform your re-parent, then re-activate and click the Calculate buttons to catchup. Or switch some or all of your rollups to schedule mode. For more information see the Readme file for limitations of the tool (which mostly stem from the platform limits).


Meetup Suggestion: Bitcoin Saigon Meetup

Thanks for making a suggestion for a new meetup.
Please note: Only suggest bitcoin-only meetups.
Meetups which promote any coin or token other than Bitcoin are not suitable for listing.
Altcoin's are only mentioned in the context of warnings or lessons learnt for bitcoin.
Required:

Name of Meetup: Bitcoin Saigon
Location Of Meetup: Saigon (Ho Chi Minh City) - Vietnam
At least one of the following:

Meetup Page (or similar): www.twitter.com/BitcoinSaigon
Telegram Group (or similar): https://t.me/BitcoinSaigon_public
Website: www.bitcoinsaigon.org

Optional

Name of Organiser(s) & Twitter Handle: www.twitter.com/BitcoinSaigon
Links showing public support: >>>  example
Tweet your commitment

As the organiser of [>>>XXX<<<] Meetup I can confirm that the meetup is bitcoin-only
-The meetup is bitcoin focused.
-'Altcoins' are scams and are not promoted in talks/presentations at our meetups.
#bitcoinonlymeetups @bitcoinonly_

ACK - I've attended this meetup a few timesand it's legit


feat(autoware_launch): change pose initialization

Signed-off-by: Takagi, Isamu<EMAIL_ADDRESS>Description

Related links

Tests performed

Notes for reviewers

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[ ] I've confirmed the contribution guidelines.
[ ] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.
[ ] The PR has been properly tested.
[ ] The PR has been reviewed by the code owners.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.
[ ] The PR is ready for merge.

After all checkboxes are checked, anyone who has write access can merge the PR.

Duplicates https://github.com/autowarefoundation/autoware_launch/pull/72.


Mapping doesn't deactivate correctly when changing states

In the current example trackpaddown is defined for vive-controls on default state, but if we change to task1 it's still working.

Actually I just notice that it's a feature (yep on my own code :angel:): https://github.com/fernandojsg/aframe-input-mapping-component/blob/master/index.js#L121
I'm going to remove it and propose a change https://github.com/fernandojsg/aframe-input-mapping-component/issues/11


Does TensorFlow1.x support CUDA11? And how can i compile tensorflow 1.x with cuda11?

This template is for miscellaneous issues not covered by the other issue categories.
For questions on how to work with TensorFlow, or support for problems that are not verified bugs in TensorFlow, please go to StackOverflow.
If you are reporting a vulnerability, please use the dedicated reporting process.
For high-level discussions about TensorFlow, please post to<EMAIL_ADDRESS>for questions about the development or internal workings of TensorFlow, or if you would like to know how to contribute to TensorFlow, please post to<EMAIL_ADDRESS>

I don't think it will be officially supported for TF 1.x. Please ask at https://github.com/tensorflow/tensorflow/issues/42047

No. Each CUDA support is tied with a version of TF and is impossible to backport to older releases.
I would say community can create builds with newer CUDA and older TF, but it is likely that the compile process will fail, since we also change TF code to be in sync with CUDA specs. Hence, even backporting some patches to the release branches is impossible.