text:
Extend searchTraits to include genus, species, study type (GWAS or QTLStudy), publication, and author

This is in order to provide search capability for the new trait search web component, in https://github.com/legumeinfo/web-components/pull/212.
@That-Thing note: I'm adding some GWAS and QTLStudy collections to MiniMine 5.1.0.3, as well as the corresponding markers and maps, so that we can test your web component a bit better against multiple genus and species and the same trait ("Pod length") from various studies. Here's what it will have for genetic data:
    <source name="Cerinza_x_G24404.qtl.Blair_Iriarte_2006" type="lis-qtl" dump="true">
    <source name="DOR364_x_BAT477.qtl.Blair_Galeano_2012" type="lis-qtl" dump="true">
    <source name="ZN016_x_Zhijiang282.qtl.Xu_Wu_2017" type="lis-qtl" dump="true">

    <source name="mixed.gwas.Jain_Poromarto_2019" type="lis-gwas" dump="true">
    <source name="mixed.gwas.Myers_Wallace_2019" type="lis-gwas" dump="true">
    <source name="mixed.gwas.Raggi_Caproni_2019" type="lis-gwas" dump="true">
    <source name="ZN016_x_Zhijiang282.gwas.Xu_Wu_2017" type="lis-gwas" dump="true">

    <source name="G19833.gnm1.mrk.BARCBean6K" type="lis-markers" dump="true">
    <source name="G19833.gnm1.mrk.Gaitan-Solis_Duque_2002" type="lis-markers" dump="true">
    <source name="IT97K-499-35.gnm1.mrk.Cowpea1MSelectedSNPs" type="lis-markers" dump="true">

    <source name="Cerinza_x_G24404.map.Blair_Iriarte_2006" type="lis-map" dump="true">
    <source name="DOR364_x_BAT477.map.Blair_Galeano_2012" type="lis-map" dump="true">
    <source name="ZN016_x_Zhijiang282.map.Xu_Wu_2017" type="lis-map" dump="true">

You've probably been coding against the dev GlycineMine 5.1.0.3 which has tons of this stuff, but I like to code against MiniMine, so I add stuff to it when appropriate.

I noticed that specifying a genus in the query parameters doesn't remove results from other genuses (genera?).
For example, specifying "Glycine" (or any random string) returns a result for "Days to Flowering" for Phaseolus vulgaris.
Query:
query Traits($pageSize: Int, $page: Int, $name: String, $genus: String, $species: String, $studyType: String, $publicationId: String, $author: String) {
  traits(pageSize: $pageSize, page: $page, name: $name, genus: $genus, species: $species, studyType: $studyType, publicationId: $publicationId, author: $author) {
    results {
      name
      gwas {
        organism {
          genus
          name
          species
        }
      }
      qtlStudy {
        organism {
          genus
          name
          species
        }
      }
    }
  }
}

{
  "genus": "Any string",
  "species": "123",
  "publicationId": "",
  "studyType": "",
  "author": "",
  "name": "",
  "page": 1,
  "pageSize": 10
}

Correct. As I said, the genus/species filters do not currently work, unless you specify the study type as well. We'll get that particular situation fixed in graphql-server in the future - just assume for now that it works correctly as you update your web component.

So, @alancleary I thought a bit about implementing a UNION of sorts on the traits resolver. I have no idea how to do it in the resolver, being pretty lost when it comes to this stuff. And I don't see how to do it in the API method, either.
Bottom line is this stuff is abstracted far enough from what I'm used to that I can't move this issue forward viz a viz querying traits per genus/species without specifying the study type. (Other than updating the mine model with a Trait.organism reference, in which case this is all easy, but it would be some months before that model reaches production.)
I don't think there's anything wrong with this being on a back burner for a while since the UI spec asks for something that isn't straightforward. And I'd be happy to punch that data model update into 5.1.0.4 and just move on. It does seem likely that folks would like to know "what are the measured traits for a given species?" without any further specification, even in the mines.

@sammyjava I think it may actually be possible to build the query using an outer join. We would just use the constraint logic to group the constraints by GWAS or study:
<query name="" model="genomic" view="Trait.primaryIdentifier" longDescription="" sortOrder="Trait.primaryIdentifier asc" constraintLogic="((A and B) or (C and D)) and E">
    <join path="Trait.qtlStudy" style="OUTER"/>
    <join path="Trait.gwas" style="OUTER"/>
    <constraint path="Trait.qtlStudy.organism.genus" code="A" op="=" value="Phaseolus"/>
    <constraint path="Trait.qtls.qtlStudy.organism.species" code="B" op="=" value="vulgaris"/>
    <constraint path="Trait.gwas.organism.genus" code="C" op="=" value="Phaseolus"/>
    <constraint path="Trait.gwas.organism.species" code="D" op="=" value="vulgaris"/>
    <constraint path="Trait.publications.doi" code="E" op="=" value="10.1093/nar/gkv1159"/>
</query>

Well, now you've become an advanced pathquerista! (Caminoquerista?) But that particular XML fails loading with:
Import of query(ies) failed. Invalid format of query: "Logic expression is not compatible with outer join status: Cannot split node (A and B) or (C and D)"

But I'll ponder this further, I didn't give it more time since I was latched onto wanting a UNION, could be we can pull it off.
But I'm also more inclined to add Trait.organism to the next data model as I'm beginning to think that's an appropriate thing since Trait is now tied to a single organism (unlike earlier models). We do repeat things in the data model for ease of querying and display. (You can't have a table do a fancy join on a report page, it's got to be all attributes, either direct or via reference.)

Yeah, I vaguely recall reading some Intermine documentation last week that you can't use OR in your constraint logic when using an outer join...
Interestingly, if you omit the constraint logic altogether then you get results. Perhaps the constraints on outer joined (sub)fields aren't considered when the joined field is null?

Yeah, I'm not sure why that is the case. But another angle on this is to craft the query to get null for GWAS and QTLStudy attributes in cases where the genus doesn't meet the constraint. Here I add Trait.gwas.primaryIdentifier and Trait.qtlStudy.primaryIdentifier to the regular old outer join query:
<query name="" model="genomic" view="Trait.primaryIdentifier Trait.gwas.primaryIdentifier Trait.qtlStudy.primaryIdentifier" longDescription="" sortOrder="Trait.primaryIdentifier asc" constraintLogic="A and B">
  <join path="Trait.gwas" style="OUTER"/>
  <join path="Trait.qtlStudy" style="OUTER"/>
  <constraint path="Trait.gwas.organism.genus" code="A" op="=" value="Vigna"/>
  <constraint path="Trait.qtlStudy.organism.genus" code="B" op="=" value="Vigna"/>
</query>

In this case, the JSON results contain "null" for BOTH the GWAS and QTLStudy attributes when genus != "Vigna":
{"modelName":"genomic","columnHeaders":["Trait > Identifier","Trait > GWAS","Trait > QTL Study"],"rootClass":"Trait","start":0,"views":["Trait.primaryIdentifier","Trait.gwas.primaryIdentifier","Trait.qtlStudy.primaryIdentifier"],
"results":[
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Days_to_flowering",null,null],
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Days_to_maturity",null,null],
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Plant_height",null,null],
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Plant_width",null,null],
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Pods_per_plant",null,null],
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Seed_weight",null,null],
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Seeds_per_plant",null,null],
["Cerinza_x_G24404.qtl.Blair_Iriarte_2006:Yield",null,null],
["DOR364_x_BAT477.qtl.Blair_Galeano_2012:Days_to_flowering",null,null],
["DOR364_x_BAT477.qtl.Blair_Galeano_2012:Days_to_maturity",null,null],
["DOR364_x_BAT477.qtl.Blair_Galeano_2012:Seed_weight",null,null],
["DOR364_x_BAT477.qtl.Blair_Galeano_2012:Yield",null,null],
["DOR364_x_BAT477.qtl.Blair_Galeano_2012:Yield_per_day",null,null],
["ZN016_x_Zhijiang282.gwas.Xu_Wu_2017:Pod_length","ZN016_x_Zhijiang282.gwas.Xu_Wu_2017",null],
["ZN016_x_Zhijiang282.qtl.Xu_Wu_2017:Pod_length",null,"ZN016_x_Zhijiang282.qtl.Xu_Wu_2017"],
["mixed.gwas.Jain_Poromarto_2019:Soybean_cyst_nematode",null,null],
["mixed.gwas.Myers_Wallace_2019:Flower_color",null,null],
["mixed.gwas.Myers_Wallace_2019:Immature_pod_color__blue_to_yellow",null,null],
["mixed.gwas.Myers_Wallace_2019:Immature_pod_color__green_to_red",null,null],
["mixed.gwas.Myers_Wallace_2019:Immature_pod_color__lightness",null,null],
["mixed.gwas.Myers_Wallace_2019:Pod_phenol",null,null],
["mixed.gwas.Raggi_Caproni_2019:Days_to_flowering",null,null]
],"executionTime":"2023.10.25 10:42::50","wasSuccessful":true,"error":null,"statusCode":200}

We could, in principle, execute a query like this but only pass on the results that contain a non-null Trait.gwas.primaryIdentifier or Trait.qtlStudy.primaryIdentifier. (Or Trait.gwas.id and Trait.qtlStudy.id, whatever.)

That appears to have the same effect as just leaving out the constraint logic. Either way, this seems like a potential solution, although we're paginating our results so there's a whole other headache to deal with.

Yeah, I was using the web app in which case you cannot leave out the constraint logic, which I think defaults to AND anyway. So we can't do this filtering in the API method before the results hit pagination? Although this business with promises completely mystifies me. In any case, just an idea. I'm not sure it's worth spending time on this when I can just add Trait.organism and claim victory.

Yup, this one's well justified. I'll do so in 5.1.0.4, which is already underway. I'll move these updates to a new  5.1.0.4-model-changes branch. @That-Thing I think you're done with the web component, but it'll be a while before this mine model update reaches production, typically a half year or so. It'll be in MiniMine 5.1.0.4 soon, though, where I'll test the graphql update with Trait.organism in the model. I'll let you know.

That all sounds good.
And thanks for the reminder about the web component. I'll continue reviewing the PR today.

As per today's meeting, I'll re-implement search on studyType, publication, and author in the 5.1.0.3-model-changes branch. The web component can "freeze" genus and species on the user form and not send them to the graphql server (since they won't be supported until 5.1.0.4).

This is done in commit fea48fd59e8068bbae36b46345e4f4dcbc93bfa5 to the 5.1.0.3-model-changes branch.

authors: That-Thing alancleary sammyjava

repo: legumeinfo/graphql-server


text:
Translate services to all supported languages

Translate services description.
Translated using GPT4, so it may not be exactly accurate but should be good enough, at least for languages I can verify.
Feel free to submit corrections if you notice any.

cc @pschneider87, @leoledmag, @heehoo59, @jumping2000, @petrepa, @emile-bodin, @GaworskiRafal, @LeandroIssa, @mdiazgoncalves, @misa1515, @denysdovhan as you initially added one of these translations.

@DurgNomis-drol  @ArnyminerZ, you guys spoke Danish and Spanish if i m not mistaken, care to review as well? :)

Can update translations in the next PR if any comments arise.

source: gharchive/pull-request

authors: KapJI leikoilja

repo: leikoilja/ha-google-home

license: MIT

license_type: permissive

license_source: github-api


text:
Add an option to download all tracks

First of all, thanks for that amazing app - it's the best I've seen so far.
Can you add an option to download all the tracks from collection to listen offline, not just from one album or playlist?
P.S. It would make sense to implement track view for the whole collection and place download button there.

Thanks! That sounds like a definite possibility, although I agree I would need to implement track view first. There might be some performance issues for rendering larger libraries there, so I need to take a look at how I can make that work. I would also need to take a look at making the downloader a bit more resilient when it has to possibly handle a couple of thousand simultaneous downloads. And of course a huge whopping warning that it's going to destroy your data bill and phone performance ;)

Also I would suggest moving download button to the top of the album/playlist view. Because currently you have to scroll through all tracks to find it.

This is a fair remark! Right now, I've chosen to prioritise the playing button and the tracklist as they are in more continuous use as opposed to the single download event. This is kind of cumbersome with long albums and playlists, so I maybe need to reshuffle some of the ideas around playlist/album interactions. Thanks for the feedback!

I've tried bypassing that by creating a playlist with all my tracks (~450). When I click download, app becomes unresponsive, the only thing that works is scrolling and no buttons work. So it seems like downloading needs to be improved as well.

Yeah this figures, it tries to download all the files at once and this causes so many updates that it blocks the app. That's something that needs to be fixed.

Have added a PR for this, but note that it does not address the issue that occurs when downloading too many files.
The PR is primarily for viewing all tracks, since singles which were not in albums were not appearing for me.
It seemed relevant to add a "Download All" button to that view.

This is a must needed for me. I just want to use jellyfin so sync my MP3s instead of manually doing it, so I use offline mode all the time. It would also be nice if it somehow notified you if your offline music and playlists are not synced with the most recent version on the server.

Hey thanks for all the input on this, I hear all of you. I'll try to prioritise this whenever I get around to writing some code, but I have a full schedule for the foreseeable future.

source: gharchive/issue

authors: Cj1m Flygrounder NoSadBeHappy leinelissen

repo: leinelissen/jellyfin-audio-player


text:
Add parser.load()

This does several important things:

Adds parser.load() and parser.load_many(), which parse from disk (they don't really take advantage of this for performance, but we can make it do so now).
Adds document::load(), which mirrors document::parse() and shortens examples nicely
Adds padded_string::load() to read from disk, for those who want to keep the corpus around
Makes padded_string::load() return error codes instead of throwing (uses the result pattern becoming pervasive across our API)
Deprecates get_corpus and replaces all examples
Documents padded_string and moves its implementation into include/simdjson/inline/padded_string.h

You'll notice the line count getting smaller in a lot of the get_corpus uses, because they had to do a lot work and weird swap()s to handle things with exceptions, and with padded_string::load() it can use the auto [p, error] pattern.
Along with the auto-allocation patch this builds on, this makes the simple case look like this:
document doc = document::load("jsonexamples/twitter.json");

Or this:
document::parser parser;
const document &doc = parser.load("jsonexamples/twitter.json");

As always, error chaining, and the choice of error codes vs. exceptions, are entirely within the user's choice.
Fixes #522.

I also went ahead and added error tests to test for IO_ERROR as well as CAPACITY, as well as error chaining. Error chaining (which is worth making pervasive IMO) lets you write several statements before checking the error--and still doesn't require exceptions. Sort of a middle ground when you are running without exceptions, allowing you not to check the error on every single operation:
    document::parser parser;
    auto [val, error] = parser.load(file)["foo"].as_uint64_t();
    if (error) { cerr << error << endl; exit(1); } // Will report file not found, invalid  JSON, nonexistent field "foo", or incorrect type for "foo"

I did not make error chaining work on document::load(), because I'm dreadfully frightened that C++ is going to free the document here (someone convince me otherwise!):
// Will the result of document::load() live through ["foo"] and .as_uint64_t()?
auto [val, error] = document::load(file)["foo"].as_uint64_t();

I did not make error chaining work on document::load(), because I'm dreadfully frightened that C++ is going to free the document here (someone convince me otherwise!):

Let me quote the reference:
"All temporary objects are destroyed as the last step in evaluating the full-expression that (lexically) contains the point where they were created, and if multiple temporary objects were created, they are destroyed in the order opposite to the order of creation. This is true even if that evaluation ends in throwing an exception."
So if a temporary value is created byte document.load when calling "document::load(file)["foo"].as_uint64_t()", it will get destroyed after the as_uint64_t called is finished.

In that case, it's probably not introducing any worse issues than we currently have. I'll add it before checkin.

Added the feature, and this test:
document::parser parser;
auto [val, error] = parser.load(NONEXISTENT_FILE)["foo"].as_uint64_t();
ASSERT_ERROR(error, IO_ERROR);

authors: jkeiser lemire

repo: lemire/simdjson

license_source: bigquery


text:
Write initial parser + lexer

We need to set up sedlex + menhir to bootstrap our parser.

Concluded :D

authors: algebraic-dev davisuga

repo: lemonadic/lang


text:
object_type и demolished_in_moscow_programm

Приветствую!
Пытаюсь передать additional_settings = "object_type[0]": 1 (в ссылке он "object_type%5B0%5D=1") - признак вторички/новостройки.  Попробовал разные вариации.
Либо я что-то делаю не так, либо оно и не должно было работать.
В readme вроде заявлен как новое. Буду очень признателен, если добавите.
Хочу поблагодарить Вас за столь полезную библиотеку! Очень помогает в выборе собственного жилья.

Для инфо остальным пользователям:
Пока можно ограничить годом постройки

Добрый день!
Рад, что библиотека оказалась полезной
Вы правы, на тот момент данная настройка для поиска не была реализована в фунцкционале
Добавил в версии 1.0.0, в котором проект был существенным образом проработан (прежде всего в отрефакторен, но не только)
Прошу обновить
Пример запуска (object_type, возможные значения "new" и "secondary"):
import cianparser

moscow_parser = cianparser.CianParser(location="Москва")
data = moscow_parser.get_flats(
    deal_type="sale",
    rooms=(1, 2),
    with_saving_csv=True,
    with_extra_data=True,
    additional_settings={"object_type": "new", "start_page": 1, "end_page": 1},
)

print(data[0])

authors: Psymtb lenarsaitov

repo: lenarsaitov/cianparser


text:
useCreatePost with timed collects causes an error on CreatePostTypedData

Describe the bug
setting endTimestamp when creating a post causes an api error on the CreatePostTypedData endpoint when the dispatcher is not allowed and we're trying to do a self funded fallback. The error is:
UnspecifiedError: invalid BigNumber string (argument="value", value="NaN", code=INVALID_ARGUMENT, version=bignumber/5.6.2)
the endTimestamp value i'm providing is a number as required by the sdk, example: 1692201833189
I noticed that the sdk is sending the endTimestamp to the api as a string, for example: "1692201833189", so as a workaround i tried to provide an ISO string for the endTimestamp like "2023-08-16T16:33:02.277Z" like i do in the mobile app, and that seems to work for simple collects, but for multi recipient collects, i get another error from the sdk and not from the api:
error InvariantError: fix the following issues
· "collect" expected to match one of the following groups:
		· "collect.recipient": Required
	OR:
		· "collect.endTimestamp": Expected number, received string
	OR:
		· "collect.recipient": Required
		· "collect.vault": Required
		· "collect.endTimestamp": Expected number, received string
	OR:
		· "collect.recipient": Required
		· "collect.depositToAave": Invalid literal value, expected true
		· "collect.endTimestamp": Expected number, received string
	OR:
		· "collect.type": Invalid literal value, expected "FREE"
	OR:
		· "collect.type": Invalid literal value, expected "NO_COLLECT"

Version of the packages you are using
react-web 1.3 next.9

hey @moesalih this is an interesting one.
There has been some inconsistencies in the way Lens API ingest/produce Date and timestamps across different queries/mutations so cannot exclude the SDK got caught up in one of these and is asking for date in the wrong format.
Let me run some tests and get back to you on this one.

This is all being rewritten in v2. What used to be timestamps are all now date times. Closing this issue for now.

authors: cesarenaldi moesalih

repo: lens-protocol/lens-sdk


text:
Using Metrics in Lens without Prometheus Operator

https://github.com/lensapp/lens/blob/33c405bdcf86ff755069ce50a21efbf10985810e/troubleshooting/custom-prometheus.md describes the scrape configuration for Prometheus Operator in conjunction with ServiceMonitors.
Could we extend the docs with the scrape configuration when using a plain Prometheus installation?
Has anybody got the scrape configuration right?

These are a sample of the queries that we use (https://github.com/lensapp/lens/blob/master/src/main/prometheus/lens.ts) are you able to align your prometheus with them?

Hi Nokel81, thanks for the hint! I have not been successful so far. I tried all the queries from lens.ts file and all returned valid results in the Prometheus GUI. But Lens is somehow not able to query them.

repo: lensapp/lens


text:
fix cluster page integration test

Signed-off-by: Jim Ehrismann jehrismann@mirantis.com
Can't figure out why this doesn't work. It appears the test fails (times out) before waitUntilTextExists() gets called for the new selector. It also causes the subsequent test to fail.

How about checking Cluster overview page opening this way:
expectedSelector: "div.label",
expectedText: "Master"

How about checking Cluster overview page opening this way:
expectedSelector: "div.label",
expectedText: "Master"

Thanks, I missed that one, though it's not as robust as what I was trying to do. I'll implement this for now and come back to the idea of using a marker selector for integration testing

authors: jim-docker nevalla


text:
Update zio to 1.0.6

Updates dev.zio:zio from 1.0.3 to 1.0.6.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "dev.zio", artifactId = "zio" } ]

labels: library-update, semver-patch

Superseded by #117.

repo: leobenkel/ZparkIO


text:
🛑 Tetrio is down

In 5ec6b6d, Tetrio (https://tetr.io/) was down:

HTTP code: 403
Response time: 208 ms

Resolved: Tetrio is back up in e8e03a7 after 3 hours, 15 minutes.

repo: leofabro/upptimeLeoMonitoreo


text:
ElasticSearchQuery gets the total number of records

Hello, how do I get the total number of records for a paged query using ElasticSearchQuery?

I made some changes.  #fa93923
Now just update to version 0.1.4 and use Count() to get the total number of records.

authors: leonardosimoura xueandfeng

repo: leonardosimoura/ElasticSearchQuery


text:
Fixed issue with window.MSStream, updated docs.

I was having trouble getting an example to work, but as suggested by @eemaano, changing one line the in compat function seems to get things working again.

I also updated the activateAR example in the docs:

import { activateAR } from "@leoncvlt/ar-button";

// trigger on an user interaction, like a click
activateAR({
  src: "https://github.com/leoncvlt/ar-button/raw/master/assets/Astronaut.glb"
  ios-src: "https://github.com/leoncvlt/ar-button/raw/master/assets/Astronaut.usdz"
  link: "https://www.nasa.gov/"
  title: "A 3D model of an astronaut
})

The code in the docs (shown above) doesn't seem to work, because the hyphenated ios-src key being destructured returns undefined. Using iosSrc instead will allow the model to load correctly.

@mtdmali does your IOS call to action banner work with a link

@mtdmali does your IOS call to action banner work with a link

@eemaano I can get the Call to Action banner to show text correctly, but tapping on the link simply exits Quick Look – returning to the page I was on previously – instead of navigating to https://www.nasa.gov/ as expected:
<ar-button
  src="/assets/ar-button/Astronaut.glb"
  ios-src="/assets/ar-button/Astronaut.usdz"
  link="https://www.nasa.gov/"
  title="A 3D model of an astronaut"
  checkout-title="Checkout Title"
  checkout-subtitle="Checkout Subtitle"
  price="Price"
  call-to-action="Call to Action">
  🚀 Launch AR
</ar-button>

@eemaano I made another update, you can now click the link in the CTA banner and it will fire the quick-look-button-tapped event as expected:
const arButton = document.querySelector('ar-button')

arButton.addEventListener('quick-look-button-tapped', (e) => {
  // Do whatever you want here, like getting the `link` value and navigating to that page...
  const link = e.target.getAttribute('link')
  if (link) window.location.href = link
})

<ar-button
  src="https://github.com/leoncvlt/ar-button/raw/master/assets/Astronaut.glb"
  ios-src="/assets/ar-button/Astronaut.usdz"
  link="https://www.nasa.gov/"
  title="A 3D model of an astronaut"
  checkout-title="Checkout Title"
  checkout-subtitle="Checkout Subtitle"
  price="Price"
  call-to-action="Call to Action">
  🚀 Launch AR
</ar-button>

@leoncvlt  Note the absolute url value for src, and a local file for ios-src.
Scene Viewer wasn't loading the model correctly on an Android device with a local file as the src value, and Quick Look wasn't behaving correctly with an absolute URL for the ios-src value. Might be worth making a separate issue for that?

Hey, that looks like it will work. Going to test it soon. I appreciate your work on this.

authors: eemaano mtdmali

repo: leoncvlt/ar-button


text:
🛑 Mini (A literal Mac Mini) is down

In a488c72, Mini (A literal Mac Mini) ($MINISERVER_URL) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Mini (A literal Mac Mini) is back up in c2b14b6 after 9 minutes.

repo: lerndmina/uptime


text:
添加时间无法读取时的异常处理，或修复对于 ps 导出文件的时间处理

https://github.com/leslievan/semi-utils/blob/627289321abfd376987efca423a57daa4b0c93c4/utils.py#L9

Please refer to my pull request
Happy-Alex99:main

repo: leslievan/semi-utils


text:
Flow rates postprocessing

Description of the problem

The previous flow rate post processing tool would add a line to the .dat file for each defined boundary (in the boundary condition subsection of the .prm file) for every time iteration. This is not the expected output as one would expect a single line to be added for each time step with the flow rates of every boundary.
Also, the values of the flow rates were added with a 12 digits precision. Instead, a 4 digits precision in scientific notation was chosen, which seems like a reasonable precision.

Description of the solution

The value of time is now added outside of the loop on the boundary conditions.

Comments

At the moment there is no unified output format : with/without scientific notation, different numbers of digits. This could be the work of a future PR.

@PierreLaurentinCS please also suggest two other reviewers

@PierreLaurentinCS Can you rebase for the changelog? Then I will be able to merge

authors: PierreLaurentinCS blaisb

repo: lethe-cfd/lethe


text:
Added python postprocessing files for 2D-Backward-facing-step example

This PR adds 3 files to the 2D-backward-facing-step example in order to let the users reproduce the analysis described in the example on their own.
The following files have been added :

Bisection.py : Computes the reattachment length with a bisection algorithm for a specified number of meshes
velocity_distribution.py :  Computes the velocity distribution at inlet and outlet and compares it with analytical solution (Poiseuille)
benchmark_data.txt : Contains the benchmark data used in the example to validate the reattachment length

The requested changes has been added.


text:
Add flags for Keyrock permission

Proposed changes
This PR adds flags for Keyrock permission.
ngsi applications permissions create
ngsi applications permissions update

   --regex, -R                      use resource with regex (default: false)
   --serviceHeader VALUE, -S VALUE  set authorization service header

Types of changes
What types of changes does your code introduce to the project: Put an x in the boxes that apply

[ ] Bugfix (non-breaking change which fixes an issue)
[X] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Update only documentation, not any source code.

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of
them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before
merging your code.

[X] I have read the CONTRIBUTING doc
[ ] I have signed the CLA
[X] I have added tests that prove my fix is effective or that my feature works
[X] I have added necessary documentation (if appropriate)
[ ] Any dependent changes have been merged and published in downstream modules

Further comments
N/A

coverage: 100.0%. remained the same when pulling 7ccd191a9cc02c35630fd9176056c0f29fd9546a on fisuda:feature/permission_flags into b6c7be6b5624d50ad16cc3ebfe2561ed5c12e026 on lets-fiware:main.

authors: coveralls fisuda

repo: lets-fiware/ngsi-go


text:
Keyboard shortcuts for switching between tools

Hello, thank you for this app,
I (and a lot of users I am sure) would like to have shortcuts to switch between the tools, for example e to choose the eraser, a for for arrow, etc... that will save time searching in the toolbar for the keyboard-fan users.

Agreed, I've often found myself wishing for the same :)

Accidentaly found CTRL + Drag can move the background paper. It would be very useful to have a list of keyboard combinations.

@mort3za The ctrl + drag is explained in the top right when you click on the ? button :)

List of keyboard shortcuts now exists in the new version.
Still no shortcuts for the tools, will keep this open for that.

I tried adding shortcuts for the drawing tools. Here is the PR for the interested parties.
After quick local testing, it seems to be working.

Is this issue intended to still be open?
I also noticed a bug: MacOS uses alt codes for alt + numbers. These shortcuts don't work for me on AsciiFlow, as a result. For example, alt + 2 is ™.
If I press alt and use my numpad, they work though.

+100. Having keyboard shortcuts for tool would make ascii super awesome, and productive.
Ideally, the shortcuts would be kept to the left hand keyboard (touch typing), so that users can use the right hand to manipulate the mouse, and left hand to switch tool.
Coincidentally, excalidraw seems to do exactly just this. Finding it super effective, and allows us to draw much quicker. Here are the shortcuts, for reference.
https://imgur.com/a/GOTlMjN

+100. Having keyboard shortcuts for tool would make ascii super awesome, and productive.
Ideally, the shortcuts would be kept to the left hand keyboard (touch typing), so that users can use the right hand to manipulate the mouse, and left hand to switch tool.
Coincidentally, excalidraw seems to do exactly just this. Finding it super effective, and allows us to draw much quicker. Here are the shortcuts, for reference.
https://imgur.com/a/GOTlMjN

Shortcuts have been implemented and deployed.
The in-app documentation has been updated as well :tada:.
View shortcuts by pressing alt.
Each functionality is bound to alt-1, alt-2, etc...
Shortcuts with my left hand and drawing on a graphic tablet is exactly how I work with all the whiteboard apps I use :wink:.

Is this issue intended to still be open?

I think it should be closed, and further improvement / bug fixing should be moved to other tickets. But I don't really know what's been done so far in term of project management.
WDYT @lewish ?
Maybe you can create a new ticket for this issue, and worst case scenario someone tells us we shouldn't have :see_no_evil:

I also noticed a bug: MacOS uses alt codes for alt + numbers. These shortcuts don't work for me on AsciiFlow, as a result. For example, alt + 2 is ™.
If I press alt and use my numpad, they work though.

Sorry about that.
I run Linux and don't have a MacOS machine available for testing, so I didn't.
From the documentation you linked and your comment, I am not sure how to correctly flag the right input for alt-<n> on Mac.
Do you have an idea on what the condition would look like ?
Here's the commit that enabled the feature for reference: https://github.com/lewish/asciiflow/commit/d69aab7bb2459ab590cd30e2f6658944a88736df
One additional question:
Does the cmd chip display correctly on all shortcut related text ?

The alt codes bug is fixed in https://github.com/lewish/asciiflow/pull/224

authors: MohammedNoureldin Qix- ade-sede lewish mort3za theicfire wiwo192

repo: lewish/asciiflow


text:
Event Handlers

Has this renderer support for adding event handlers?
Example in JS:
let div = document.createElement("div");
document.body.appendNode(div);

div.addEventListener("click", () => {
  console.log("It's working");
})

There is no javascript support.

authors: lixcode-rep rushter

repo: lexbor/lexbor


text:
Towards pylexibank 2.0

See https://github.com/lexibank/diacl/commit/b43368a9d74a0c6640cb1d6929a10f5c4b7204dc
Still working on the code (imports, tqdm, concept lists) but could someone please check the way I handle the forms & whether this makes sense? This uses replacements as proposed in https://github.com/lexibank/pylexibank/issues/142. Specifically:
@attr.s
class FormSpec(object):
    brackets = attr.ib(
        default={"(": ")"},
        validator=attr.validators.instance_of(dict))
    separators = attr.ib(default=";/,")
    missing_data = attr.ib(
        default=('?', '-'),
        validator=attr.validators.instance_of((tuple, list)))
    strip_inside_brackets = attr.ib(
        default=True,
        validator=attr.validators.instance_of(bool))
    replacements = attr.ib(default={}, validator=attr.validators.instance_of(dict))

    def clean(self, form, item=None):
        """
        Called when a row is added to a CLDF dataset.

        :param form:
        :return: None to skip the form, or the cleaned form as string.
        """
        for s, t in sorted(self.replacements.items(), key=lambda x: len(x[0]), reverse=True):
            form = form.replace(s, t)

        if form not in self.missing_data:
            if self.strip_inside_brackets:
                return text.strip_brackets(form, brackets=self.brackets)
            return form

And I put the replacements in FormSpec as proposed by @SimonGreenhill.

But that would require a release of pylexibank 2.0.1, right? Or did you just add this FormSpecCode to the diacl-script?

Sorry, yeah, just modified my local environment/pylexibank until we can talk with @xrotwang next week to see if this makes it into pylexibank proper.

Alright! So you also use a FormOnlySpec there, right? Then you could add the "ffirst_form_only" = True/False attribute there as well, right?

Yup, updated the class definition above. Call is then:
    form_spec = FormSpec(
        separators=";,", strip_inside_brackets=False, replacements=replacements, first_form_only=True
    )

Depends on https://github.com/lexibank/pylexibank/issues/145.

@LinguList I'd aim at releasing pylexibank 2.1 tomorrow - and then do the final releasable runs makecldf.

Yes, this sounds reasonable.

Mapped now with concept lists from Concepticon & new replacements.

authors: LinguList chrzyki xrotwang

repo: lexibank/diacl


text:
getting 401 error when authenticating

I use Synfony 5.0 and "lexik/jwt-authentication-bundle": "^2.6".
displays the following message:
{"code":401,"message":"Authentication request could not be processed due to a system problem."}
This error only occurs with postgres. When I switch to mysql it works.
How can I solve this?
Below is my security.yaml:
security:
encoders:
    App\Entity\User:
        algorithm: bcrypt

providers:
    # used to reload user from session & other features (e.g. switch_user)
    app_user_provider:
        entity:
            class: App\Entity\User
            property: username
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false

    login:
        pattern:  ^/api/login
        stateless: true
        anonymous: true
        json_login:
            check_path:               /api/login_check
            success_handler:          lexik_jwt_authentication.handler.authentication_success
            failure_handler:          lexik_jwt_authentication.handler.authentication_failure
    api:
        pattern:   ^/api
        stateless: true
        guard:
            authenticators:
                - lexik_jwt_authentication.jwt_token_authenticator

    main:
        anonymous: lazy
        provider: app_user_provider

# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
    - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY  }
    - { path: ^/api, roles: IS_AUTHENTICATED_FULLY  }`

in the log:
Mar 30 10:19:51 |WARN | SERVER POST (401) /api/login_check host="127.0.0.1:8004" ip="127.0.0.1" scheme="https"
[2020-03-30T10:19:51.769724-03:00] request.INFO: Matched route "api_login_check". {"route":"api_login_check","route_parameters":{"_route":"api_login_check"},"request_uri":"http://127.0.0.1:8000/api/login_check","method":"POST"} []
[2020-03-30T10:19:51.888870-03:00] security.INFO: Authentication request failed. {"exception":"[object] (Symfony\Component\Security\Core\Exception\AuthenticationServiceException(code: 0): An exception occurred while executing 'SELECT t0.id AS id_1, t0.username AS username_2, t0.roles AS roles_3, t0.password AS password_4 FROM user t0 WHERE t0.username = ? LIMIT 1' with params ["my_username"]:\n\nSQLSTATE[42703]: Undefined column: 7 ERROR:  column t0.id does not exist\nLINE 1: SELECT t0.id AS id_1, t0.username AS username_2, t0.roles AS...\n               ^ at C:\Projetos\Projetos\mp\vendor\symfony\security-core\Authentication\Provider\DaoAuthenticationProvider.php:96)\n[previous exception] [object] (Doctrine\DBAL\Exception\InvalidFieldNameException(code: 0): An exception occurred while executing 'SELECT t0.id AS id_1, t0.username AS username_2, t0.roles AS roles_3, t0.password AS password_4 FROM user t0 WHERE t0.username = ? LIMIT 1' with params ["wagner"]:\n\nSQLSTATE[42703]: Undefined column: 7 ERROR:  column t0.id does not exist\nLINE 1: SELECT t0.id AS id_1, t0.username AS username_2, t0.roles AS...\n               ^ at C:\Projetos\Projetos\mp\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\AbstractPostgreSQLDriver.php:60)\n[previous exception]
[object] (Doctrine\DBAL\Driver\PDOException(code: 42703): SQLSTATE[42703]: Undefined column: 7 ERROR:  column t0.id does not exist\nLINE 1: SELECT t0.id AS id_1, t0.username AS username_2, t0.roles AS...\n               ^ at C:\Projetos\Projetos\mp\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOStatement.php:123)\n[previous exception] [object] (PDOException(code: 42703): SQLSTATE[42703]: Undefined column: 7 ERROR:  column t0.id does not exist\nLINE 1: SELECT t0.id AS id_1, t0.username AS username_2, t0.roles AS...\n               ^ at C:\Projetos\Projetos\mp\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOStatement.php:121)"} []

What i saw in your error is ERROR: column t0.id does not exist
Check your entity if the id column is exist or not.

I was able to solve the problem by modifying the name of my User entity, because the name user is part of the list of reserved words in postgresql and using it as a table name gives error when assembling the query.

Works nice, but not with custom errors instead of 401. My issue:
https://github.com/lexik/LexikJWTAuthenticationBundle/issues/739

Resolved!

authors: fd6130 playerro wagnerjfreitas

repo: lexik/LexikJWTAuthenticationBundle

license: mit


text:
Migrate to new NetworkChannel interface

Closes #83
Closes #88

Okay this should be finished now.
I am not sure why these tests fail. It seems my unit test cannot find the tcp_ip_channel.c file, but locally it compiles and runs on my computer.
The client and server seem to be non blocking now I added tests for this also.
The way the test works is a bit rough for now: If the tcp_ip_channel blocks even though not allowed, the test will probably never finish. I am not sure if the CI has timeouts for that.
But as long as everything finishes running at least we know it is non-blocking. :) 🤓

Okay I added some comments to explain some important code parts

About the test name:
I named it network channel test because except the setup function the test is implementation independent.
In theory once we have more channels we could run these tests all in one place and share the code.
We only need to call the correct constructors accordingly in setup
But it is okay to call it tcp for now. Maybe we can revisit once we have more channels

This looks great to me. A good first step towards stabilizing the NetworkChannel!

authors: LasseRosenow erlingrj

repo: lf-lang/reactor-uc


text:
Edit password page

Frontend:

[x] HTML/CSS page

Backend:

[x] Read data from database + inject into template
[x] Save data to database

done

repo: lheinrichde/secpass

license: ISC


text:
bug in flatten array code of build function

While reviewing the mithril code, I believe to have encountered a bug in the mithril build function (diff/key alg).
If the data arg of the build function is an array, then the array needs to to be recursively flattened before entering the array diff algorithm (including keys alg). The current implementation (see below):
for (var i = 0, len = data.length; i < len; i++) {
				if (type.call(data[i]) === ARRAY) {
					data = data.concat.apply([], data);
					i-- //check current index again and flatten until there are no more nested arrays at that index
				}
			}

transforms
['a', ['b', ['c']]] into [ 'a', 'b', [ 'c' ] ] instead of [ 'a', 'b', 'c'  ]

because the temporary 'len' variable is not updated to the new length of the concatenated data array.
The bug only surfaces in a very specific edge case where an array that is nested at least multiple levels down increases the length of the final concatenated array. It appears to me that this may lead to very strange/inconsistent behavior of the array/key diff algorithm.
The issue can be fixed by adding one line of code (see below):
for (var i = 0, len = data.length; i < len; i++) {
				if (type.call(data[i]) === ARRAY) {
					data = data.concat.apply([], data);
					i-- //check current index again and flatten until there are no more nested arrays at that index
                    len = data.length; // THIS LINE WAS ADDED
				}
			}

Or simply remove these unused var and check for "i < data.length" :)
(Though I only read this ticket and did not check the issue.)

No, doing data.length is not a good idea. It will need to access length
property in each iteration.
On 9 Feb 2015 00:49, "Christoph" notifications@github.com wrote:

Or simply remove these unused var and check for "i < data.length" :)
(Though I only read this ticket and did not check the issue.)
—
Reply to this email directly or view it on GitHub
https://github.com/lhorie/mithril.js/issues/448#issuecomment-73426445.

Not really. All modern browsers optimise the the loops and cash the .length
property. There are numerous jsperf tests showing this. Having temp data to
store the length used to be marginally faster, now it is actually slower.
On 9 Feb 2015 18:53, "vivek poddar" notifications@github.com wrote:

No, doing data.length is not a good idea. It will need to access length
property in each iteration.
On 9 Feb 2015 00:49, "Christoph" notifications@github.com wrote:

Or simply remove these unused var and check for "i < data.length" :)
(Though I only read this ticket and did not check the issue.)
—
Reply to this email directly or view it on GitHub
https://github.com/lhorie/mithril.js/issues/448#issuecomment-73426445.

—
Reply to this email directly or view it on GitHub
https://github.com/lhorie/mithril.js/issues/448#issuecomment-73489912.

Fixed in origin/next and scheduled to be released in the next version

authors: hurelu inta kavaro lhorie vivekimsit


text:
空指针

1 com.lxj.xpopup.util.KeyboardUtils.registerSoftInputChangedListener(KeyboardUtils.java:73)
2 com.lxj.xpopup.core.BasePopupView.show(BasePopupView.java:185)
3 com.yujianapp.achat.activity.UserActivity.SettingActivity$8.onClick(SettingActivity.java:320)
4 android.view.View.performClick(View.java:6304)
5 android.view.View$PerformClick.run(View.java:24803)
6 android.os.Handler.handleCallback(Handler.java:794)
7 android.os.Handler.dispatchMessage(Handler.java:99)
8 android.os.Looper.loop(Looper.java:176)
9 android.app.ActivityThread.main(ActivityThread.java:6651)
10 java.lang.reflect.Method.invoke(Native Method)
11 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
12 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)

java.lang.NullPointerException
Attempt to invoke virtual method 'android.view.ViewTreeObserver android.widget.FrameLayout.getViewTreeObserver()' on a null object reference

哪个版本

最新版

试试1.9.3，应该修复了这个问题

repo: li-xiaojun/XPopup


text:
Update README allowlist -> whitelist

I stumble upon dependencies I wanted to include in the bundle. Actually the doc is not up-to-date and allowlist is actually named whitelist

@Edweis thank you for your feedback, can you please check which version do you have? Starting version 2.0 it should only be allowlist.

Closing this as it should always be 'allowlist'. Let me know if it works.

authors: Edweis liady

repo: liady/webpack-node-externals


text:
Add alignment options to the SelectBox class.

This takes similar approach to #3964 and fixes merge conflicts with current master.  Unclear what to do with drawItem() in List.java, as layout requires alignment, width, etc and I have removed the only caller.

@NathanSweet Appreciate any feedback you have, when time allows.

It's been a month, any feedback on this PR?

This is a duplicate of #3964 which has been merged already.

authors: MrStahlfelge keypusher

repo: libgdx/libgdx


text:
ECDSA support

We'd like to be able to natively verify ECDSA signatures (Ethereum). Parallel to https://github.com/libp2p/js-libp2p-crypto/issues/57
@vyzo is on it, just giving you a heads up here

To be more precise, we are interested in the SECP256k1 curve, as used by BTC and ethereum.

@parkan @vyzo  this is merged now, good to close? (Working on bubbling changes up now)

🙏

authors: parkan vyzo whyrusleeping


text:
speed of peer discovery VS content discovery

Version: 0.15.2
Platform: OSX
Subsystem: NodeJs

Type:

Bug/Enhancement

Severity

Medium

Description:

I try to use libp2p to discover content provided by other node's in the network. The problem is that it take's more than 10 minutes to discover content provided by another node (I know that the node exist and provide that content). As as a comparison - finding that node take's only two seconds. Please have a look at the example that I provide.

Steps to reproduce the error:

Clone this repo: https://github.com/Bit-Nation/group-chat-poc
Checkout commit 96d9b013929d1f57b7ae30c5d67d4c843537b5f8
Run npm install
Start the provider node provide.js and wait a few seconds for the node to dial to peers
Start the node that look's for the content by running node chat.js
Wait till you see the timeout error (should appear after 10 minutes).

Hi @florianlenz thanks for the report. Seems that the bug is coming from https://github.com/libp2p/js-libp2p-kad-dht, still experimental. Do you think you can add a failing test there that would enable us to track down the issue? Thanks!

Closing this due to inactivity. The current content and peer routing example https://github.com/libp2p/js-libp2p/tree/master/examples/peer-and-content-routing is returning those calls. The original code linked in the issue doesn't look like it was enabled the dht, which would cause the issue.
If you're still having issues, please feel free to reopen this.

authors: diasdavid florianlenz jacobheun


text:
[language] remove string from the ir parser and compiler

Summary
This removes the String constructs in the IR parser and compiler, as we've decided to not have a string type any time soon.
Test Plan
cargo test

@bors-libra r=tnowacki

:pushpin: Commit e57d693 has been approved by tnowacki

:hourglass: Testing commit e57d693a3b2352b1dc27f52b52fe0906dc86c795 with merge d0f132d674d49c1a5f50551bd3cf7220940bdc0c...

:sunny: Test successful - checks-circle_commit_workflow
Approved by: tnowacki
Pushing d0f132d674d49c1a5f50551bd3cf7220940bdc0c to master...

repo: libra/libra


text:
[cluster-test] Shorter validator pod names

Renames validator-xxx -> val-xxx and fullnode-x-y -> fn-x-y.
Those names are part of UX, for example they will appear in trace, so it is good to have them short

:umbrella: The latest upstream changes (presumably e2ff6d3d6ffb04347fd16965543374e2f50c349b) made this pull request unmergeable. Please resolve the merge conflicts.

@bors-libra delegate+
Can you test this once before landing (after tf apply)

:v: @andll can now approve this pull request

@bors-libra r=ankushagarwal

:pushpin: Commit debfd0d has been approved by ankushagarwal

@bors-libra p=10

:hourglass: Testing commit debfd0d4700d93245bb48148766067f89ab85196 with merge aa55a5a2f30f1f3a29e770d42d0c8859c66a04d6...

@ankushagarwal did this PR really need to jump the queue by setting a priority? There are other people in the queue who have been waiting and since this seems noncritical it seems like the priority feature is being taken advantage of here

We have made some changes to cluster test CI and this PR needs to be merged for the tests to pass. The other PRs would fail cluster test CI is they land before this.

:broken_heart: Test failed - checks-circle_commit_workflow

@bors-libra retry

:hourglass: Testing commit debfd0d4700d93245bb48148766067f89ab85196 with merge 1901314431caa6c1902a0c6e8ba483ef7836cfc6...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: ankushagarwal
Pushing 1901314431caa6c1902a0c6e8ba483ef7836cfc6 to master...

authors: andll ankushagarwal bmwill bors-libra


text:
[docker] Make local running work

Remove the old pre-config-builder faucet key from mint
Have it connect to the first node in the validator set, since it will
always exist so long as there is one validator
Move Mint port since it overlapped with JSON-RPC
Merged build-dynamic.sh into build.sh from validator-dynamic since every other build was build.sh
Expose validator-dyanmic JSON-RPC from docker
Update readme to note all historical changes
Remove run.sh from validator as it won't really work any more... and it isn't worth the hassle to bring back

@bors-libra delegate+
Chatted with David offline about the sequence of landing various commits:

this PR #3278 will land first
next https://github.com/calibra/libra-ops/pull/487
finally #3279

Will forgo commit history of the touched docker files, reason being that little has changed in them.

:v: @davidiw can now approve this pull request

@bors-libra r=sausagee

:pushpin: Commit 56ea482 has been approved by sausagee

:hourglass: Testing commit 56ea482d1daf842f06cd20901007bc0e74d18eb8 with merge b610d423daa0a1601a6f1ce5cdffca0b7ca45fb0...

:broken_heart: Test failed - checks-circle_commit_workflow

@bors-libra r=sausagee

:pushpin: Commit 35f16b7 has been approved by sausagee

:hourglass: Testing commit 35f16b743821b128d9dbb5a65051d556e5e53cf6 with merge e362b41d014e3b1c4d8762bb60dfe70e80c0e9d6...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: sausagee
Pushing e362b41d014e3b1c4d8762bb60dfe70e80c0e9d6 to master...

authors: bors-libra davidiw sausagee


text:
Improve --device ? functionality for the alsa backend

This makes --device ? only show compatible devices (ones that support 2 ch 44.1 Interleaved) and it shows what librespot format(s) they support.
This should be more useful to users as the info maps directly to librespot's --device and --format options.
The output looks like this:

Compatible alsa device(s):

----------------------------------------------

Device:

hw:CARD=Generic,DEV=3

Description:

HD-Audio Generic, HDMI 0
Direct hardware device without any conversions

Supported Format(s):

S32 S16

----------------------------------------------

Device:

hw:CARD=Generic,DEV=7

Description:

HD-Audio Generic, HDMI 1
Direct hardware device without any conversions

Supported Format(s):

S32 S16

----------------------------------------------

Device:

hw:CARD=Generic,DEV=8

Description:

HD-Audio Generic, HDMI 2
Direct hardware device without any conversions

Supported Format(s):

S32 S16

----------------------------------------------

Device:

plughw:CARD=Generic,DEV=3

Description:

HD-Audio Generic, HDMI 0
Hardware device with all software conversions

Supported Format(s):

F64 F32 S32 S24 S16 S24_3

----------------------------------------------

Device:

plughw:CARD=Generic,DEV=7

Description:

HD-Audio Generic, HDMI 1
Hardware device with all software conversions

Supported Format(s):

F64 F32 S32 S24 S16 S24_3

----------------------------------------------

Device:

plughw:CARD=Generic,DEV=8

Description:

HD-Audio Generic, HDMI 2
Hardware device with all software conversions

Supported Format(s):

F64 F32 S32 S24 S16 S24_3

----------------------------------------------

Device:

hdmi:CARD=Generic,DEV=0

Description:

HD-Audio Generic, HDMI 0
HDMI Audio Output

Supported Format(s):

S32 S16

----------------------------------------------

Device:

hdmi:CARD=Generic,DEV=1

Description:

HD-Audio Generic, HDMI 1
HDMI Audio Output

Supported Format(s):

S32 S16

----------------------------------------------

Device:

hdmi:CARD=Generic,DEV=2

Description:

HD-Audio Generic, HDMI 2
HDMI Audio Output

Supported Format(s):

S32 S16

----------------------------------------------

Device:

hw:CARD=DAC,DEV=0

Description:

JDS Labs Element DAC, USB Audio
Direct hardware device without any conversions

Supported Format(s):

S16 S24_3

----------------------------------------------

Device:

hw:CARD=DAC,DEV=1

Description:

JDS Labs Element DAC, USB Audio #1
Direct hardware device without any conversions

Supported Format(s):

S16

----------------------------------------------

Device:

plughw:CARD=DAC,DEV=0

Description:

JDS Labs Element DAC, USB Audio
Hardware device with all software conversions

Supported Format(s):

F64 F32 S32 S24 S16 S24_3

----------------------------------------------

Device:

plughw:CARD=DAC,DEV=1

Description:

JDS Labs Element DAC, USB Audio #1
Hardware device with all software conversions

Supported Format(s):

F64 F32 S32 S24 S16 S24_3

----------------------------------------------

Device:

sysdefault:CARD=DAC

Description:

JDS Labs Element DAC, USB Audio
Default Audio Device

Supported Format(s):

F64 F32 S32 S24 S16 S24_3

----------------------------------------------

Device:

front:CARD=DAC,DEV=0

Description:

JDS Labs Element DAC, USB Audio
Front output / input

Supported Format(s):

S16 S24_3

----------------------------------------------

Device:

surround40:CARD=DAC,DEV=0

Description:

JDS Labs Element DAC, USB Audio
4.0 Surround output to Front and Rear speakers

Supported Format(s):

S16 S24_3

----------------------------------------------

Device:

iec958:CARD=DAC,DEV=0

Description:

JDS Labs Element DAC, USB Audio
IEC958 (S/PDIF) Digital Audio Output

Supported Format(s):

S16 S24_3

----------------------------------------------

I have a lot of devices on my desktop. Integrated audio, a few HDMI ports and a USB DAC. That's why the list is so long. Ofc the length would depend on how many devices were on the system. With my Pi Zero for example the list would be much shorter since there's only 1 device. (a DAC HAT).

Not sure what Error: The operation was canceled. is all about?

Force pushed to see if I can get past that error. Nothing changed.

Cool. I think I'd like a few spaces of indentation before the content of the description and supported formats to improve legibility. And don't forget the changelog entry. But those are about the only nits have. Anyone else have any comments?

Cool. I think I'd like a few spaces of indentation before the content of the description and supported formats to improve legibility. And don't forget the changelog entry. But those are about the only nits have. Anyone else have any comments?

I can do that. No problem.

@roderickvd Now the output looks like:

	Compatible alsa device(s):

	------------------------------------------------------

	Device:

		hw:CARD=Generic,DEV=3

	Description:

		HD-Audio Generic, HDMI 0
		Direct hardware device without any conversions

	Supported Format(s):

		S16 S32

	------------------------------------------------------

	Device:

		hw:CARD=Generic,DEV=7

	Description:

		HD-Audio Generic, HDMI 1
		Direct hardware device without any conversions

	Supported Format(s):

		S16 S32

	------------------------------------------------------

Sorry about that. 1 to many /n in there,lol!!!

If no one else has any comments, I'll check on my Alsa rig tonight or tomorrow and merge on success.

Here's the output of my system. You see one minor annoyance with "dsnoop", but that shouldn't hold back getting this in. So I'll be merging this now and if anyone wants to fix that cosmetic thing then just do a small follow-up PR.

[2021-11-25T08:44:44Z INFO  librespot] librespot 0.3.1 c006a23 (Built on 2021-11-25, Build ID: TJGb2gVC, Profile: debug)

	Compatible alsa device(s):

	------------------------------------------------------

	Device:

		sysdefault:CARD=sndrpirpidac

	Description:

		snd_rpi_rpi_dac, RPi-DAC HiFi pcm1794a-codec-0
		Default Audio Device

	Supported Format(s):

		S16 S24 S24_3 S32 F32 F64

	------------------------------------------------------

	Device:

		dmix:CARD=sndrpirpidac,DEV=0

	Description:

		snd_rpi_rpi_dac, RPi-DAC HiFi pcm1794a-codec-0
		Direct sample mixing device

	Supported Format(s):

		S16

	------------------------------------------------------

ALSA lib pcm_dsnoop.c:575:(snd_pcm_dsnoop_open) The dsnoop plugin supports only capture stream
	Device:

		hw:CARD=sndrpirpidac,DEV=0

	Description:

		snd_rpi_rpi_dac, RPi-DAC HiFi pcm1794a-codec-0
		Direct hardware device without any conversions

	Supported Format(s):

		S16 S24

	------------------------------------------------------

	Device:

		plughw:CARD=sndrpirpidac,DEV=0

	Description:

		snd_rpi_rpi_dac, RPi-DAC HiFi pcm1794a-codec-0
		Hardware device with all software conversions

	Supported Format(s):

		S16 S24 S24_3 S32 F32 F64

	------------------------------------------------------

That's weird. That's coming from alsa. It shouldn't be even probing dsnoop since it's only supposed to be checking playback devices

That's leaking from the C code.

repo: librespot-org/librespot


text:
/MD

SDL uses /MT option by default:
if(MSVC)
  dep_option(SDL_STATIC_VCRT "Use /MT for static VC runtimes" ON "NOT WINDOWS_STORE" OFF)
  ...

SDL_mixer uses /MD option.
This cause warning:
LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library

Let's remove SDL_STATIC_VCRT form SDL, and return the control of CMAKE_C_FLAGS and CMAKE_MSVC_RUNTIME_LIBRARY to the users.

license: Zlib


text:
Windows: ensure fs_event always provides filename for delete

Reviving this pull request https://github.com/joyent/libuv/pull/1436 to fix the issue of a delete on windows not giving out the path of the file deleted.
Btw are you guys tracking the pull requests in https://github.com/joyent/libuv? Looks like some good contributions there that are now no longer being looked at since you moved to this repository.

Btw are you guys tracking the pull requests in https://github.com/joyent/libuv? Looks like some good contributions there that are now no longer being looked at since you moved to this repository.

Not anymore. Mosft of what's left there is outdated and/or fell though the cracks, unfortunately.

Thanks @bpasero we're going to need a couple of things:

A test
A fixed commit message, see CONTRIBUTING.md

I ran into this again today while testing the new recursive watch option for Windows.
Here is a related issue: https://github.com/joyent/libuv/issues/1479
Would be great if this could be changed, even the short name would be better than null, when a file is deleted or renamed on Windows.

@jorangreef looks like @bpasero hasn't pursued this further, so anyone who wants to revive it is more than welcome to do so :-)

Fixed in https://github.com/libuv/libuv/commit/e0250b7d5c6fcb74602039afc8457d715e11c1b8

Nice :+1:

authors: bpasero jorangreef saghul

repo: libuv/libuv


text:
LImit K unrolling in amx gemm kernel

The amx gemm kernels now fully unroll K. This results in code buffer size issues, thus for K >= 4096 we fallback to avx512 code gen. We can limit the unrolling of the K loop for large K values and still get amx code.

Addendum: It also seems that we have undefined behavior when running out of code buffer space. Sometimes we gracefully exit with NULL pointer return by code gen, sometime we just exit and crash.

Close by PR #868

authors: alheinecke egeor

repo: libxsmm/libxsmm


text:
Issue #790: restore error bounds/logic

It can be assumed libxsmm_matdiff_epsilon mostly impacted by normf_rel (old/new error bounds applicable before/after).
This keeps calculating error based on libxsmm_matdiff_epsilon (rather than normf_rel).
Any tighter error bounds introduced by #785 are kept (tighter is better).

I rebased on top of main_stable, this PR is ready also.


text:
Inconsistency about dimensions

I am trying to run this project using a dataset that we have prepared.
After modifying( https://github.com/lifeiteng/vall-e/blob/main/egs/libritts/prepare.sh ) for our dataset and running it, the following error occurred:
Computing features in batches:   7%|█████▉ | 1001/89992
Traceback (most recent call last):
  File "/home/user/VALL-E-X/egs/my_data/bin/tokenizer.py", line 276, in <module>
    main()
  File "/home/user/VALL-E-X/egs/my_data/bin/tokenizer.py", line 199, in main
    cut_set = cut_set.compute_and_store_features_batch(
  File "/home/user/python3.10/site-packages/lhotse/cut/set.py", line 2308, in compute_and_store_features_batch
    features = extractor.extract_batch(
  File "/home/user/valle/data/tokenizer.py", line 332, in extract_batch
    samples, lengths = self.pad_tensor_list(samples, device)
  File "/home/user/valle/data/tokenizer.py", line 324, in pad_tensor_list
    padded_tensor = torch.nn.utils.rnn.pad_sequence(
  File "/home/user/python3.10/site-packages/torch/nn/utils/rnn.py", line 398, in pad_sequence
    return torch._C._nn.pad_sequence(sequences, batch_first, padding_value)
RuntimeError: The size of tensor a (2) must match the size of tensor b (706) at non-singleton dimension 1

Upon inspection, it seems that the error is occurring in the function compute_and_store_features_batch located at https://github.com/lhotse-speech/lhotse/blob/db40bc4e8595c0c3c1a418da200848e58df5b1c8/lhotse/cut/set.py#L1968.
As the root cause, it appears that the dimensions of the variable 'waves' created between lines https://github.com/lhotse-speech/lhotse/blob/db40bc4e8595c0c3c1a418da200848e58df5b1c8/lhotse/cut/set.py#L2127-L2150 seem to be incorrect.
Specifically, when I run:
for i in waves:
   print(i.shape)

I notice that there are a few instances with a dimension of 2, as shown below:
torch.Size([8561])
torch.Size([4882])
torch.Size([32987])
torch.Size([881])
torch.Size([6682])
torch.Size([9713])
torch.Size([2, 706])
torch.Size([806])
....
torch.Size([6683])

Is there anyone who knows the reason for this inconsistency about dimensions?
lhotse version: v1.17

Is it possible that some of your audio files have more than one channel?

Thank you very much for answering. I'll search for it.

@FrancescoVV Thank you, I solved the problem. As you said, some of your audio files have multiple channels.

authors: FrancescoVV yuto-nozaki

repo: lifeiteng/vall-e


text:
Article post

i gave up on my local

hahaha thanks


text:
Infinine loop when using stateless firewall

When using statless firewall the application goes into infinte loop after sucessfull authentication.
The symptoms are similar to what is described here: https://github.com/lightSAML/SpBundle/issues/35
The loop looks like this:
GET lightsaml_sp.discovery
GET lightsaml_sp.login
POST lightsaml_sp.login_check
GET /some/route/needs/auth/ => An AuthenticationException was thrown; redirecting to authentication entry point. A Token was not found in the TokenStorage

Our configuration looks like this:
pattern:            (^/)
    logout_on_user_change: true
    stateless: true

    form_login:
        provider:       hybrid
        login_path:     /sso/form
        check_path:     /sso/formcheck
        csrf_token_generator: security.csrf.token_manager

    light_saml_sp:
        username_mapper: lightsaml_sp.username_mapper.simple
        provider:       hybrid
        login_path:     /saml/login
        check_path:     /saml/login_check
        user_creator:   user_creator

I understand that the bundle is probably using the user session, to store the token, when SAML authentication response is received. User is then redirected to some default page, and the firewall finds the token in the storage.
What we would need is a way that would force Symfony the set the authentication cookie (phpsession) while redirecting to the default page.
Would there be a configuration option for LightSaml bundle?

In my understanding, stateless means that credentials (not tokens) should be passed on every request. So why not remove the stateless listener?

authors: frostieDE hoonzis

repo: lightSAML/SpBundle


text:
Fix codegen windows paths

References https://github.com/lightbend/kalix-javascript-sdk/issues/404

Test on Windows OK

repo: lightbend/kalix-javascript-sdk


text:
Can't proxy using browsermob, able to proxy using mitmproxy

[DEBUG 2018-05-18T17:43:29,797 org.eclipse.jetty.util.log] (qtp1548010882-17 - www.gstatic.com:443) REQUEST www.gstatic.com:443 on org.eclipse.jetty.server.nio.SelectChannelConnector$2@72bed59c [DEBUG 2018-05-18T17:43:29,797 org.eclipse.jetty.util.log] (qtp1548010882-17 - www.gstatic.com:443) sessionManager=org.eclipse.jetty.server.session.HashSessionManager@30af5b6b [DEBUG 2018-05-18T17:43:29,797 org.eclipse.jetty.util.log] (qtp1548010882-17 - www.gstatic.com:443) session=null [DEBUG 2018-05-18T17:43:29,797 org.eclipse.jetty.util.log] (qtp1548010882-17 - www.gstatic.com:443) servlet holder= [DEBUG 2018-05-18T17:43:29,797 org.eclipse.jetty.util.log] (qtp1548010882-17 - www.gstatic.com:443) RESPONSE www.gstatic.com:443  200 [DEBUG 2018-05-18T17:43:29,804 org.eclipse.jetty.util.log] (qtp1548010882-18) EOF org.eclipse.jetty.io.EofException: null 	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:321) ~[browsermob-dist-2.1.4.jar:?] 	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214) ~[browsermob-dist-2.1.4.jar:?] 	at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426) ~[browsermob-dist-2.1.4.jar:?] 	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:520) [browsermob-dist-2.1.4.jar:?] 	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) [browsermob-dist-2.1.4.jar:?] 	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528) [browsermob-dist-2.1.4.jar:?] 	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Any help is appreciated

Hello @saurabh-agarwals ,
Were you able to solve the issue?
I am facing the same issue here. Any suggestions?
Thanks!

authors: rchougule saurabh-agarwals

repo: lightbody/browsermob-proxy


text:
Insuffcient capacity and HTLC

If there is a topology, say, A-B-C, and A want to send a transaction to C via this route.
However, the channel from B to C does not have sufficient capacity, from the wiki, we know that there will be a temporary_channel_failure error msg responsed.
Then the question is: Will the HTLC contract between A and B be cancelled before the timeout of this HTLC?

Yes, they'll cancel it back.

authors: Roasbeef yehen

repo: lightningnetwork/lightning-onion


text:
payinvoice is ignoring --amt

When paying an invoice with an amount, but providing the --amt flag, I would have expected it to override the invoice. If this is not the intended behavior, I think it'd be safer to just throw a hard error ("error: trying to pay an invoice that already has an amount") or something.
lncli --no-macaroons payinvoice lntb132u1pdwvgp7pp5up5ztqwgx3udtzwhcn4khhf3cjr7r2h9ns4zzsu7r6dsp7k4aesqdplx5syymr0vd4kzcmrd9hx7tpqxvs9xcmpd3sjqsmgd9czq3njv9c8qatrvd5kumccqp23nylvgl5s6p0jswtt84ux23vnqhsq8k074znz5swnhmpgmjprpl58te4j7mryzk8mecv2jk0mx4qad2yh2mkyk2ypp65gqr0nxqndfqqamzgll --amt 1000
{
	"payment_error": "",
	"payment_preimage": "cf8b9092beb938b319b0cc1d48e8b611762e10dd75ada9d9f35d3001f38ebf2d",
	"payment_route": {
		"total_time_lock": 1295566,
		"total_fees": 3,
		"total_amt": 13203,
		"hops": [
			{
				"chan_id": 1423975310111473664,
				"chan_capacity": 16777216,
				"amt_to_forward": 13202,
				"fee": 1,
				"expiry": 1295422,
				"amt_to_forward_msat": 13202320,
				"fee_msat": 1013
			},
			{
				"chan_id": 1422978053063704577,
				"chan_capacity": 8155553,
				"amt_to_forward": 13200,
				"fee": 2,
				"expiry": 1295278,
				"amt_to_forward_msat": 13200000,
				"fee_msat": 2320
			},
			{
				"chan_id": 1418214968692047872,
				"chan_capacity": 15000000,
				"amt_to_forward": 13200,
				"expiry": 1295278,
				"amt_to_forward_msat": 13200000
			}
		],
		"total_fees_msat": 3333,
		"total_amt_msat": 13203333
	}
}

It's not the intended behavior. The value is only observed if the passed invoice doesn't explicitly specify an amount.

authors: RHavar Roasbeef

repo: lightningnetwork/lnd


text:
REST API newaddress is not generating the correct address per address type

Background
REST API newaddress is not generating the correct address per address type while sending the address type as query parameter '?type={address_type}'
Your environment
lnd v0.5.0
Windows 10
bitcoind 0.16.2
WebUI: Angular 6, Node 8.12.0, TypeScript 2.7.2
Steps to reproduce
NA
Expected behaviour
REST API should generate the correct address as per address type passed in query param.
Actual behaviour
It is only generating the address with 'np2wkh' address type.

You'll need to update lnd to the latest commit on the master branch in order for the fix to apply.

When are you planning to update the binaries?

The next release can be tracked at https://github.com/lightningnetwork/lnd/milestone/8. There are still a couple of items left, so once everything's wrapped up you can expect a release shortly after.

authors: ShahanaFarooqui wpaulino


text:
Close-transaction not in the mem pool, funds locked in "limbo", channel in "pending close" forever.

Background
My node Caffeine has a channel in pending status (close txid: 0de535ea74d72a952157640187b5a207fe977870a5c9b92f0aa99b9707c94779) with The Cave since months!
My local balance is stuck in a "limbo" and I have no idea what to do...
How to finalize the closure? How to get the balance out of the limbo?
Your environment

lnd 0.12.99-beta commit=v0.12.0-beta-494-g140dd944
Linux Mint 20.1 - Kernel 5.4.0-72-generic x86_64 GNU/Linux
bitcoind,  Bitcoin Core 0.21.1

Expected behaviour
I expected the transaction to end in the mem pool and the channel to be closed.
In case something goes wrong (like in this case) I expect the transaction to be reverted without issues.
Actual behaviour
The transaction is lost, funds are locked in the "limbo", the channel is stuck.

Did you close the channel with a low fee? Or was it a force-close?
The close TX cannot be found in the mempool anymore so it will never close. Try restarting lnd to re-publish the transaction. The fees are currently pretty low so hopefully it will go through now.

It was a force close. I have restarted LND plenty of times, it didn't change. Also, it appears that the other node, The Cave, is not existing anymore. How do you re-publish a transaction?

Do you see in the logs that lnd is trying to re-publish the transaction when you restart it? Do you see an error message? Maybe until now it couldn't broadcast it because it was below the minimum mempool fee rate. Can you try again and post any log that mentions the channel ( f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0)?

Here are the log lines I could find. I don't see a clear error message.
2021-05-30 12:07:44.899 [INF] NTFN: New spend subscription: spend_id=8, outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34, height_hint=685499

2021-05-30 12:07:44.899 [INF] NTFN: Dispatching historical spend rescan for outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34, start=685499, end=685500

2021-05-30 12:07:52.114 [INF] CNCT: Close observer for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0) active

2021-05-30 12:08:10.855 [INF] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): starting state=StateDefault, trigger=chainTrigger, triggerHeight=685500

2021-05-30 12:08:33.218 [WRN] CHBU: Replacing disk backup for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0) w/ newer version

I think you might need to increase the debuglevel=debug to see more. There should be an attempt to publish the transaction again.
If not, can you please post the full output of lncli pendingchannels?

I can't restart lnd right now, will do it in a couple of hours.
Here is the output of lncli pendingchannels
{
    "total_limbo_balance": "997524",
    "pending_open_channels": [
    ],
    "pending_closing_channels": [
    ],
    "pending_force_closing_channels": [
    ],
    "waiting_close_channels": [
        {
            "channel": {
                "remote_node_pub": "02ae3c06f6db6a87ea874ef7ba86c87ab0041eabf6d8be0594582505b1fd5d7ee8",
                "channel_point": "f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0",
                "capacity": "1003840",
                "local_balance": "997524",
                "remote_balance": "0",
                "local_chan_reserve_sat": "10038",
                "remote_chan_reserve_sat": "10038",
                "initiator": "INITIATOR_LOCAL",
                "commitment_type": "LEGACY"
            },
            "limbo_balance": "997524",
            "commitments": {
                "local_txid": "0de535ea74d72a952157640187b5a207fe977870a5c9b92f0aa99b9707c94779",
                "remote_txid": "f7cfe31b1b2a3cd64f1c99adeff797694c931f0c392a210c6c4fbd8147ca583a",
                "remote_pending_txid": "",
                "local_commit_fee_sat": "6316",
                "remote_commit_fee_sat": "6316",
                "remote_pending_commit_fee_sat": "0"
            }
        }
    ]
}

Here is the debug log
cat Desktop/lnd_log.txt| grep f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815

2021-05-30 12:07:44.899 [INF] NTFN: New spend subscription: spend_id=8, outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34, height_hint=685499
2021-05-30 12:07:44.899 [INF] NTFN: Dispatching historical spend rescan for outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34, start=685499, end=685500
2021-05-30 12:07:52.114 [INF] CNCT: Close observer for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0) active
2021-05-30 12:08:10.855 [INF] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): starting state=StateDefault, trigger=chainTrigger, triggerHeight=685500
2021-05-30 12:08:33.218 [WRN] CHBU: Replacing disk backup for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0) w/ newer version
2021-06-01 15:07:57.386 [DBG] CHBU: Crafting backup for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0)
2021-06-01 15:07:59.855 [DBG] CNCT: New ChainEventSubscription(id=0) for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0)
2021-06-01 15:07:59.873 [DBG] CNCT: Starting chain watcher for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0)
2021-06-01 15:07:59.874 [DBG] NTFN: Using height hint 685795 retrieved from cache for outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34 instead of 552251
2021-06-01 15:07:59.875 [INF] NTFN: New spend subscription: spend_id=14, outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34, height_hint=685795
2021-06-01 15:07:59.875 [INF] NTFN: Dispatching historical spend rescan for outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34, start=685795, end=685795
2021-06-01 15:08:00.000 [DBG] NTFN: Updated spend hint to height=685795 for unconfirmed spend request outpoint=f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0, script=0 9777d97101cae0062f7604a41b37f05a356eb835829244ecce5227fc31c31c34
2021-06-01 15:08:00.000 [INF] CNCT: Close observer for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0) active
2021-06-01 15:08:00.336 [DBG] CNCT: Starting ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0), htlc_set=(map[contractcourt.HtlcSetKey]contractcourt.htlcSet) (len=2) {
2021-06-01 15:08:00.338 [INF] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): starting state=StateDefault, trigger=chainTrigger, triggerHeight=685795
2021-06-01 15:08:00.338 [DBG] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): new block (height=685795) examining active HTLC's
2021-06-01 15:08:00.339 [DBG] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): checking commit chain actions at height=685795, in_htlc_count=0, out_htlc_count=0
2021-06-01 15:08:00.370 [DBG] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): new block (height=685795) examining active HTLC's
2021-06-01 15:08:00.371 [DBG] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): checking commit chain actions at height=685795, in_htlc_count=0, out_htlc_count=0
2021-06-01 15:08:00.576 [DBG] LNWL: ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): starting local commitment: (*lnwallet.commitment)(0xc0008100c0)({
    PreviousOutPoint: (wire.OutPoint) f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0,
2021-06-01 15:08:00.582 [DBG] LNWL: ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): starting remote commitment: (*lnwallet.commitment)(0xc0045e4240)({
    PreviousOutPoint: (wire.OutPoint) f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0,
2021-06-01 15:08:00.597 [DBG] LNWL: ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): Restoring 0 dangling remote updates
2021-06-01 15:08:00.608 [DBG] LNWL: ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): Restoring 0 local updates that the peer should sign
2021-06-01 15:08:00.609 [DBG] FNDG: ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0) with chan_id=155820e0812ca5392cc0b2f9f3cbdde7d521641595e891915179d0c3664fa9f8 not found in opening database, assuming already announced to the network
2021-06-01 15:08:00.617 [WRN] CHBU: Replacing disk backup for ChannelPoint(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0) w/ newer version

Can you please DM me the full log, for example on Slack or Keybase? Not sure if the log message I'm looking for really contains the channel TXID.

2021-06-01 15:08:00.338 [INF] CNCT: ChannelArbitrator(f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0): starting state=StateDefault, trigger=chainTrigger, triggerHeight=685795

StateDefault indicates that we're still waiting for an action. Maybe the initial close attempt failed to complete? Have you tried force closing it again since then?

No, I didn't try anything else. I waited for a while, then forgot about it. And a few days ago I noticed that it hanged.

Are you able to try again? In case it hangs again, you can enable profiling before trying again to see where it gets stuck. To enable profiling you'll need to restart and run with the config option profile=host:port.

Here is the full log of a LND session https://gist.github.com/25shmeckles/c387bc42b3a88b409d48a85014468f71

Thanks. So the channel is definitely still in the "normal" state. Can you try closing it again? First lncli closechannel f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815 --sat_per_vbyte X and if that doesn't work or hangs try lncli closechannel f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815 --force ?

Mmm... not working... I get cannot close channel with state: ChanStatusLocalDataLoss
$ lncli closechannel f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815 --sat_per_vbyte 20
[lncli] rpc error: code = Unknown desc = cannot close channel with state: ChanStatusLocalDataLoss

$ lncli closechannel f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815 --force
[lncli] rpc error: code = Unknown desc = cannot close channel with state: ChanStatusLocalDataLoss

Okay, this is very weird. Not sure how lnd could ever get into this state (I will look into it).
For now, to proceed with this I think you'll need to use chantools for this.
Can you save this to a file called summary.json:
{
 "channels": [
  {
   "remote_pubkey": "020f0d93c700cf5cf556e61828fab473a5c30ee6eb927ae36a130cc1c57326d21a",
   "channel_point": "f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815:0",
   "funding_txid": "f8a94f66c3d079519191e895156421d5e7ddcbf3f9b2c02c39a52c81e0205815",
   "funding_tx_index": 0,
   "capacity": 1003840,
   "closing_tx": null,
   "force_close": null
  }
 ]
}

Then download chantools, stop lnd and run the following command:
chantools forceclose --fromsummary <path-to-summary.json> --channeldb <path-to-your-channel.db> --publish

If that succeeds then you can start lnd again. After the TX confirms lnd should pick up on it and move the channel to waiting_close or pending_force_close.

Excuse my ignorance, where shall I look for channel.db?

In your lnd's data directory, usually ~/.lnd/data/graph/mainnet/channel.db.

It asks for a 24-word mnemonic phrase that I don't think I have... Where shall I get it?
$ chantools forceclose --fromsummary Desktop/summary.json --channeldb .lnd/data/graph/mainnet/channel.db --publish
2021-06-03 15:20:50.779 [INF] CHAN: chantools version v0.8.5 commit
Input your 24-word mnemonic separated by spaces:

That's your node's seed. You should definitely have that, otherwise all your funds are at risk!

I have the wallet file encrypted and saved in multiple places, isn't enough? Is there a way to close the channel without using the seed? I never needed it with lnd. Same for the node itself, I have multiple backups scattered around. Can I retrieve it somehow?

You won't be able to restore lnd without the seed. The wallet file only contains the xprv which is hashed from the seed and cannot be reversed.
You can use chantools with the xprv if you use the --rootkey=xprv... parameter. To extract the xprv from the wallet, you can use chantools walletinfo. See chantools walletinfo --help for more information.

chaintools did the trick, now the channel status is "pending force close". I will confirm when the channel closes completely. Can you explain what did you do with the JSON file exactly?

Okay cool. I'll try if I can figure out how the channel could've become stuck in this situation in the first place. The issue will remain open until we know more.
The chantools forceclose basically just publishes the last commitment transaction that is in the channel DB (which is what force closing really is). The summary.json was more of a selector in this case that told chantools which channel to force-close. Normally you would do this for a list of channels during the advanced manual recovery (step 8): https://github.com/guggero/chantools#channel-recovery-scenario

I checked the code and the only 2 possibilities for a channel to get into the ChanStatusLocalDataLoss are:

There was some weird channel synchronization error with the peer. Perhaps an old version of lnd or other implementation running on the other side that has/had a bug? I don't suppose you still have all logs from back when you force-closed the channel? Do you remember why you force-closed it?
You tried using SCB recovery. Did you ever use restorechanbackup?

I don't have logs from that time, it was about 1y ago
never used

Thanks for the response. I don't think we can figure out what exactly went wrong then. It is possible you (or the peer) ran into a bug that's been fixed in the meantime.
Going to close this for now as your funds seem to be on their way back (I assume the pending_channels output now counts down the maturity height?).
Feel free to comment if you run into further issues with the channel in question.

Indeed, about 60 confirmations till maturity.
Thanks a lot for your help!

hi guys I am having the same issue with a smaller amount of sats in limbo but the lncli closechannel command returns a channel not found.
Here is the info from my RTL wallet
Transaction ID
8a2cc40bf052a3b8046d18b70be60ed313ea0fd66de084b4fc4de0e13c47c423
Channel Point
c783d1f629bfefadfaa9fd20386164a97b6cecc28c485c60ae0b185a149052b0:1
Peer Alias
doubleqp🍔
Peer Node Pubkey
0307eafebbf6583eaf3dce69181018185b193414901c029e98062455e328c76bf3
Capacity
137,880
Limbo Balance
121,215
Local Balance
121,215
Remote Balance
0
any help would be appreciated since the funds have been in limbo for months.

You need to force-close the channel. Try lncli closechannel --force c783d1f629bfefadfaa9fd20386164a97b6cecc28c485c60ae0b185a149052b0 1 (the "1" in the end is probably what you were missing when you tried the closechannel command previously).

authors: 25shmeckles guggero mantoles wpaulino


text:
Feature request: channel prefrence when there are parallel channels

It would be useful for managing liquidity if there was a way to prefer a certain channel when routing payments to a peer with 2 or more in parallel. There are times we would like to deplete a smaller one prior to closing it when replacing with a larger channel, or when using private channels in order to avoid channel churn with nodes that tend to drain liquidity.

This is already possible when sending payments outbound (--outgoing_chan_id).

Reading some of the htlcswitch code, the simplest way to add this may be to add a prefer-private/public option and a prefer-smaller/larger option, instead of picking a random link. destination := destinations[rand.Intn(len(destinations))] in switch.go.

I'd love to see this feature. Right now I have six channels to bfx-lnd0. While I think some of this is caused by imperfect channel management on my side, in general I see the need to have (and, eventually, close) parallel channels.
For a routing node I think that channels either are long-lived (and we don't need to think about balance distribution because it doesn't really matter), or that channels need to be closed once they are drained (so that the peer at the other side gets on-chain access to the funds).
Based on these thoughts I see at least three options:

prefer sending through private channels so that these can be opened/closed without anyone noticing, benefiting from the age and public gossip knowledge of the (single) public channel
prefer sending through younger channels (similar to above: keep old channels around because they are well known)
prefer sending through channel with lowest local liquidity (so that closing channels can be done faster)

This is somewhat related to #5972 as it touches the same part of the code.

Another option could be to allow for reallocating liquidity between channels in a negotiation with your peer

Oh that would be absolutely perfect. However, I believe some kind of protocol extension would be necessary for this. I'll raise an issue in the spec repository, so that we approach this issue from two sides. Thank you a lot for the suggestion!

authors: C-Otto Roasbeef alexbosworth lnd-routing


text:
contractcourt: Persist Resolution Outcomes

This PR adds a new bucket to store the outcome of on-chain resolutions. The original thought for this was just to keep the entire briefcase around, beginning of that approach coded up here.
Reasons for a new bucket:

Making a large change to the state machine of a critical component of lnd for the sake of accounting feels like a bad trade off
We do not gain any historical data by doing so, since all old briefcases are deleted
The current state that is persisted on disk in insufficient, we do not know the outcome of certain stages (only that they were resolved) and we do not have sweep transactions

This change does not currently persist fees for resolutions. This will be done in a follow up, and the reports are serialized on disk in a manner which allows us to easily add fees at a later stage without a migration. Fees are a non-trivial element to add because we batch sweeps, so would need to modify our spend notifications to attribute a portion of fees to a specific output. We also have cases (like successTx) where fees are not supplied by the wallet, so are not detected as fees by btcwallet.
Fixes #2472

In general, i think there is a risk with this issue of building new functionality on top of a not so solid foundation and not getting the best value for the effort.

While I think it is valuable to do things in order, I think we're currently throwing away a lot of data that is really useful for people to have. Would we be able to reproduce it entirely in this new stateless world order? And even if we can, would it be worth reprocessing all these special case channels (where we'd have to dig them out of historical chan bucket etc)? If not, I'd like to explore how we can keeping this data around in the most future proof way.

Especially when adding new db code, the cost to change it again later can be high.

That's what I like about adding a new bucket (rather than keeping around the old revolvers). I'm pretty confident that the information stored in this bucket is what is needed user side to get good insight into what went down on chain for each of their channels. Even if we do get rid of the morphing resolver (contest resolver -> success/timeout), that stage still does need to be recorded for the user; they need to know whether we went on chain with a successTx, or the remote party timed it out, for example. It may be done in a different way; eg a resolver hands of a report to the arbitrator, as you suggest, but the outcome we need on disk remains the same.

Another thought is that concerns could be more separated by keeping all the db code outside of the resolvers. Let them just expose a struct that channel arbitrator takes and persists.

Not sure if this can be done atomically in the current setup (which is a prio). But agreed in the theoretical stateless case, handoff of a report/outcome of some kind to channel arbitrator makes sense.

That could possibly be used as another data source for PendingChannels, but will there be problems with race conditions?

The potential race here would be that something is unresolved when we get our current set of resolvers from memory, it resolves but does not write to disk on time for when we get the already resolved set from disk. I don't think this is a huge concern, because PendingChannels is a temporal endpoint, and htlcs are only resolved on block arrival, so the chances of hitting it are slim. Having a record of what's been fully resolved is still a step in the right direction, and this unlikely race would be addressed if/when we transition to stateless by keeping in memory until fully resolved then flushing to disk.
Potential options here:

Do nothing, wait for channel arbitrator overhaul
[+] design reporting system based on future needs rather than guessing now
[-] might not be able to reconstruct historical resolvers; if we can, still have to write custom code to re-resolve already resolved channels to generate this data

Start writing to new bucket now
[+] we get the data we need now, in a separate bucket which does not affect existing state machine
[-] locks us into a db schema that we may not want

Keep resolvers around
[+] also get to keep data, although we still don't have all the info we need on disk, would need to ad hoc add fields
[-] large change to the state machine of a critical system

If we're going to be rehauling the channel arbitrator in the next few months, I'd say that it's worth waiting. But if that's not going to happen, I would like to start storing this information.

Great points @carlaKC, I don't think we cut off future possibilities of removing the nursery or removing the checkpointing from resolvers if we go through with this change. Those changes are IMO nice to haves, as the existing system does work, but is hauling around a bit of technical debt. The changes proposed in this PR would scratch several needs on our end, and also our major users w.r.t wanting to have air-tight accounting w.r.t on-chain sweeping and fees (also I'm all for filling in any low hanging gaps along the way). I worry that if we go the "long way around", then we'd risk landing this core feature, since as we all now, at times things have a tendency to sprawl. There's also the matter of the extra review cycles (particularly the nursery changes) as they touch a pretty critical area w.r.t safe operation of lnd.
In the end, I think #2 straddles a happy medium of making a small-er change here which allows us to finally have sane records of past channel history, without cutting off any possible refactors or slight re-designs in this area. Ultimately, I think we'll need to be storing this data anyway.

I'd rather have seen that we would address the pending channels output firs

Once information is written to this new store, it's largely omitted from the pending channels output. Once a contract has been resolved, it doesn't need to be shown as pending any longer, we only display that those funds are no longer in limbo.
Remember the end goal here: allow users to be able to do proper accounting w.r.t how their coins were swept after a channel was closed. Patching a distinct call is orthogonal though they may be slightly related, in that they deal with channels that are about to be fully closed. We must always be careful to not allow scope creep to dominate which devolves into the micro optimization of existing calls. There will always be diminishing returns. It is the case that there're existing gaps in the pending channels call, however those gaps aren't blocking progress on our ultimate goal here.

@carlaKC needs rebase!

hold off on merging until #971 is in

@carlaKC needs rebase

authors: Roasbeef carlaKC cfromknecht


text:
error out when non-anchor channels are tried to bump the force close fee.

Small bug-fix for the new bumpforceclose api.

Perhaps we should target this for 0.18.3? Small bug fix that makes the API harder to use incorrectly.

This api call was introduced in the current lnd 19 master branch (https://github.com/lightningnetwork/lnd/pull/8843)

Needs a rebase, then this should be g2g.


text:
Handle getCondition() method of BranchInst

Commit
Latest Main
Location

value-range-analysis/Liveness.h

Line 234
Line 1092

Description
At Line 234, the condition of the BranchInst is dynamically casted into ICmpInst. However, the condition is not always ICmpInst. For example, it could be a CastInst which casts an i32 into an i1. In this case, the variable cmpInst would be null and a NPD will happen at line 236.

At Line 1092, the situation is similar.
Proposed Fix
guard this dyn_cast with a if

已到，i will reply it later

authors: BowenZhang-UST wang-shijie

repo: lijiansong/clang-llvm-tutorial

license: WTFPL


text:
Where can I obtain an API key for Discord_Token

Hello ,
Where can I obtain an API key for Discord_Token?
I am looking forward to hearing back from you!
Best Regards
Peter Westin

Hi Peter I have added a new section in the readme where you can find the answers to this very good question!
Thanks for asking, let me know if you have any more questions 😄

authors: lilstiffy pwgit-create

repo: lilstiffy/StiffyBot

license: Unlicense