how to use littlefs with Freertos

Hi, I have an experiment project. Run FreeRtos + Littlefs + Nordic SDK on NRF52840.
I have experience with  Littlefs + Nordic SDK on NRF52832. And the file system works well.
Project of FreeRtos/Nordic SDK on NRF52840 is usable. I just replaced malloc/free with  pvPortMalloc/vPortFree(p) in Littlefs, But I can not mount the file system with wrong -84. It seems i missed something to mount file system under Freertos.
I am a newbie about this. Is there any bro give me some examples.

FreeRTOS really has almost nothing to do with it.  The only place FreeRTOS would be involved is if you are using the LFS_THREADSAFE option where you would uses a freertos mutex to serialize certain lfs operations - but for simple testing with lfs access from only a single task that isn't necessary.
However, since you are using the freertos heap, freertos supports multiple heap models - you probably should use heap 3, 4, or 5.
But it is likely an issue with your lfs configuration or your underlying block device driver.
Note the lfs filesystem needs to be formatted before it can be mounted.
If you can, single step into the mount operation to see what lfs doesn't like - a lot of things could result in a -84.

Hi, I am having the similar problem too using FreeRTOS.
Occasionally, I can mount little FS after trying to mount several times. However, most of the time I failed to mount it as what was being mentioned above. Even the formatting is not stable as well with more failure.
From the discussion above, I am using heap 4, and I don't think I use any LFS_THREADSAFE option at all. Should I enable the LFS_THREADSAFE options?
The lfs configuration is as follows which works in non-FreeRTOS environment.
const struct lfs_config LittleFS_config = {
.context = (void*)&LittleFS_ctx,
.read  = lfs_mflash_read,
.prog  = lfs_mflash_prog,
.erase = lfs_mflash_erase,
.sync  = lfs_mflash_sync,
.read_size = 16,
.prog_size = 256,
.block_size = 4096,
.block_count = 1024,
.cache_size = 256,
.block_cycles = 200,
.lookahead_size = 16
};
And the underlying block device driver has been tested working fine.
I follow the examples where I try to mount before format, and if it failed, I will format then remount it. Yet same thing happened. And I tried to single step through it but when it hit the lfs_raw, some how, it just return zero,,
Hope you are able to help on this. Thanks.

I use lfs successfully with FreeRTOS.  It really has no dependency on the OS.  I also use heap4 so that shouldn't be an issues as long as you have sufficient heap.
The LFS_THREADSAFE feature should only be needed if you are accessing the filesystem from multiple tasks.  In general with a multitasking OS such as FreeRTOS you will need that but in a simple testing scenario where you are just trying to get it working with a single task then it shouldn't matter.  In my test application for lfs and FreeRTOS I am not using LFS_THREADSAFE because it is only used from one task and there are no there tasks using the underlying resources such as the Flash and SPI.
If you are accessing files from multiple tasks you will need that.  But be aware that other resources such as your underlying block device might be accessed from other tasks (even if lfs isn't) in which case you might need to serialize access using a mutex - otherwise another task might try to access the block device at the same time as lfs.
I hadn't updated my lfs in over a year but it looks like it hasn't changed since then.
I've just not had any problems with lfs.  Most problems I have with freertos is because my task stack is too small which leads to memory corruption or crashing.
Matt
On Tuesday, March 8, 2022, 01:52:40 AM EST, deslim01<EMAIL_ADDRESS>wrote:

Hi, I am having the similar problem too using FreeRTOS.
Occasionally, I can mount little FS after trying to mount several times. However, most of the time I failed to mount it as what was being mentioned above. Even the formatting is not stable as well with more failure.
From the discussion above, I am using heap 4, and I don't think I use any LFS_THREADSAFE option at all. Should I enable the LFS_THREADSAFE options?
The lfs configuration is as follows which works in non-FreeRTOS environment.
const struct lfs_config LittleFS_config = {
.context = (void*)&LittleFS_ctx,
.read = lfs_mflash_read,
.prog = lfs_mflash_prog,
.erase = lfs_mflash_erase,
.sync = lfs_mflash_sync,
.read_size = 16,
.prog_size = 256,
.block_size = 4096,
.block_count = 1024,
.cache_size = 256,
.block_cycles = 200,
.lookahead_size = 16
};
And the underlying block device driver has been tested working fine.
I follow the examples where I try to mount before format, and if it failed, I will format then remount it. Yet same thing happened. And I tried to single step through it but when it hit the lfs_raw, some how, it just return zero,,
Hope you are able to help on this. Thanks.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.Message ID: @.***>

Hi Matt,
Thank you for your reply. In the case if there are multiple task sharing the same resources like SPI and Flash, does it mean I just need to enable the LFS_THREADSAFE option by defining the macro?
There are a few questions I have in mind for the lfs.

When you mention there is no problem for you, does it mean that you can mount your lfs 100% successfully or intermittently it fail to work and you need to format it?
I have partitioned the SPI or Flash specifically for this lfs to work in that region for testing purposes. I only partition 1MByte for the space because I was using another Flash sector for something else. From the configuration above with the block size of 4096 and block count of 256 (I have changed this from 1024 to 256), this should be about right.. Yet, I have experiencing corruption error when mounting and formatting. Is there something I have missed out in this case?
My idea of partitioning the Flash and allowing certain sector to be used for lfs I think should be ok right?
If it is ok, when I am doing mounting or formatting, will it format the other sector as well? I try to step through the code but it takes quite a fair bit of time to understand what the code is really doing in the rawmount function. Any insights on this?

That's all from me.

Hi Matt,
Additional question suddenly pops up in my mind.
5. In the configuration, read_size = 16 means able to read 16 bits right? If I change it to 8, then, it will read a single byte, am I correct? That goes with prog_size / write size =256 bytes right? Any problem with my configuration above?
Cheers,
Desmond

Hi Desmond,
If you SPI and Flash are shared below the LFS layer then using LFS_THREADSAFE win general will not be enough.
For example, assume you are using an SPI Flash for the LFS BD.  If there are other devices attached to the same SPI then if an LFS file is being accessed from one task and the other SPI device is being accessed from another task then it's possible that both tasks could be using the SPI at the same time and they would interfere with each other and have very unpredictable results - in which case you would want to protect the SPI with a mutex.
Likewise, if the SPI Flash used for the LFS BD is also used for things other than the LFS then if an LFS file is being accessed from one task and another task is making a direct access to the SPI Flash then it's possible that both tasks could be using the SPI Flash at the same time and they would interfere with each other and have very unpredictable results - in which case you would want to protect the Flash with a mutex.
And finally, if you have multiple tasks accessing LFS files then you would want to protect the LFS with a mutex (using the LFS_THREADSAFE options).
So in this scenario you could have three mutexes - one at the SPI driver level, one at the Flash driver level, and one at the LFS level.
If the LFS is the only thing that uses the Flash and the Flash is the only thing connected to the SPI then using just LFS_THREADSAFE would be sufficient because the only way to get to the Flash and to the SPI in that case is through the LFS layer.
Our SPI and Flash driver init functions have options to use a mutex or not.  The application developer knows if multiple devices and multiple tasks will be using the SPI and the Flash - if so then it will enable the mutex, otherwise it doesn't need to.  Our flow is typically open_flash->open_spi->close_spi->close_flash.  If the mutex is enabled then it will be obtained in the open and released in the close so we know that at most one task can be using them at a time.
Regarding your questions

Yes the LFS filesystem is remounted successfully each time.  I have firmware images stored in files which must be downloaded to their corresponding devices on startup and that works everytime.2) It is okay to partition the Flash for the LFS an other things.  The partitions should be non-overlapping of course.  This will work fine - I often have a FatFS and LFS in the same SPI Flash.  However, just partitioning isn't sufficient if the partitions are accessed by different tasks, you need the mutex.  For example one task could be trying to read an LFS file while another erasing a block and the Flash can't do both at the same time.3) Yeah as I said tat's fine, and a common use case.4) To be honest I don't know the details of the inner workings of LFS - nor do I really want to.  Either it works or likely I am unable to fix it.  Sometimes it is useful to step into the code to if for example it is failing to see how or why it is failing.  This is typically though more to understand what I am doing wrong than to identify what it is doing wrong.  Also keep in mind that it is sometimes difficult to step through an application that uses multiple tasks and interrupts.  If you want to see what's going on I would add a lot of printf's.5) The configuration settings are pretty well described in the config struct definition.  I guess it's not clear if read_size is bits or bytes but I assume it's bytes.  Nothing jumped out at me as wrong with your configuration but I am by no means an expert on LFS - I just used it and it seems to work.  In contrast I had tried SPIFFS and that was a trainwreck - I don't know how anyone can use that.
What processor and toolcahin are you using?
Matt
On Tuesday, March 8, 2022, 09:19:30 PM EST, deslim01 @.***> wrote:

Hi Matt,
Thank you for your reply. In the case if there are multiple task sharing the same resources like SPI and Flash, does it mean I just need to enable the LFS_THREADSAFE option by defining the macro?
There are a few questions I have in mind for the lfs.

When you mention there is no problem for you, does it mean that you can mount your lfs 100% successfully or intermittently it fail to work and you need to format it?
I have partitioned the SPI or Flash specifically for this lfs to work in that region for testing purposes. I only partition 1MByte for the space because I was using another Flash sector for something else. From the configuration above with the block size of 4096 and block count of 256 (I have changed this from 1024 to 256), this should be about right.. Yet, I have experiencing corruption error when mounting and formatting. Is there something I have missed out in this case?
My idea of partitioning the Flash and allowing certain sector to be used for lfs I think should be ok right?
If it is ok, when I am doing mounting or formatting, will it format the other sector as well? I try to step through the code but it takes quite a fair bit of time to understand what the code is really doing in the rawmount function. Any insights on this?

That's all from me.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.Message ID: @.***>

Hi Matt,
I am still exploring on this LittleFS thingy and with the minimum documentation and a lot of people facing similar corruption issue, what I can say is I will try to find what the heck is going on then. Anyway, I can understand your points and I really appreciate that you explain that in such thoroughness.
The processor I am using is NXP iMX and using the NXP MCU toolchain in MCUExpresso.
They have a SDK which work perfectly, however, after I ported it into my own projects, problems started to surface.
To be honest, my take on the mutex usage, I think there is no harm to enable that all the time because the no matter if the resources is shared or not, mutex will somehow protected it..
Oh, I was reading on the SPEC.md, it mentioned that for a single 4-byte files, additional 32k bytes are used. Is that the case for you?
Cheers,

Hi Desmond,
In my applications I usually use fatfs for convenient transfers with windows.  The files aren't mission critical so it's not catastrophic if the filesystem gets corrupted.  However my current application does rely on the files so I planned to use fatfs during development and later switch to lfs.  For testing I used the lfs fuse driver for linux to copy files to the lfs and then manipulated the files within my application and everything seemed okay.  I can certainly reboot and remount the lfs and load my firmware files without any problem or corruption. However I did more extensive write testing and it seems after some number of writes the filesystem does become corrupt.  Note that this is using the same block device driver as the fatfs which has worked flawlessly for a year on this project and for years on other project.
So I don't think the issue that I am seeing is the same as your issue but I will have to investigate it further.  I wanted to mention this because I don't want to mislead you into thinking it's okay when maybe it's not.  It certainly could be user error at this point.
Regarding the mutex it shouldn't hurt to have it even if you don't need it.  Just be aware though that the mutex at the lfs layer may not be sufficient to protect the block and SPI layers depending on how they are used.
The lfs in the mbed source tree might be different than the separate mbed module - I seem to recall at one time they were out of sync.  Also I think I updated lfs since my original testing so it's possible that introduced a bug.
In any case keep us informed of your findings and I will do the sae.
Matt
On Wednesday, March 9, 2022, 01:34:04 AM EST, deslim01 @.***> wrote:
Hi Matt,
I am still exploring on this LittleFS thingy and with the minimum documentation and a lot of people facing similar corruption issue, what I can say is I will try to find what the heck is going on then. Anyway, I can understand your points and I really appreciate that you explain that in such thoroughness.
The processor I am using is NXP iMX and using the NXP MCU toolchain in MCUExpresso.
They have a SDK which work perfectly, however, after I ported it into my own projects, problems started to surface.
To be honest, my take on the mutex usage, I think there is no harm to enable that all the time because the no matter if the resources is shared or not, mutex will somehow protected it..
Oh, I was reading on the SPEC.md, it mentioned that for a single 4-byte files, additional 32k bytes are used. Is that the case for you?
Cheers,
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you commented.Message ID: @.***>


stream doc tests are now disabled

Looks like they are no longer run since 73d7fea9 but they probably should be. At least in CI they are gone.

Tagging in @stjepang

So the problem here is that if #[cfg(feature = "docs")], then we're using the following signature:
fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ImplFuture<'a, io::Result<usize>>;

Otherwise, the signature is:
fn read_line<'a>(&'a mut self, buf: &'a mut String) -> ReadLine<'a, Self>;

We only have docs for the former but not the latter. The doc tests are not run because we're running tests with docs feature disabled, and we can't run them with the feature enabled because the code is broken in that case.
This is unfortunate and I'm not sure what's the best solution here. What if we copied examples in docs into a test file so that they get tested?

What's handy about rust docs especially with the cases like stdlib is that you:

are always sure that that example works (unless it's marked as non-run)
can press a "run" button and jump into the playground and run/modify it yourself however you like
Probably something else I'm missing

I am not sure that can be achieved with copying to testfile or some similar non-mainstream way, can it?


Segfault when having several topic properties in a display plugin and clicking second one

When creating a custom display plugin with several ros topic properties. The first works okay, but when clicking on second one to open the dropdown list, segfault happens in
rviz_common::properties::RosTopicProperty::fillTopicList() () from /opt/ros/eloquent/lib/librviz_common.so

Stacktrace:
#0  0x00007ffff7afe02d in rviz_common::properties::RosTopicProperty::fillTopicList() () at /opt/ros/eloquent/lib/librviz_common.so
#1  0x00007ffff6d24555 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#2  0x00007ffff7b615ef in rviz_common::properties::EditableEnumProperty::requestOptions(rviz_common::properties::EditableEnumProperty*) ()
    at /opt/ros/eloquent/lib/librviz_common.so
#3  0x00007ffff7af5228 in rviz_common::properties::EditableEnumProperty::createEditor(QWidget*, QStyleOptionViewItem const&) ()
    at /opt/ros/eloquent/lib/librviz_common.so
#4  0x00007ffff7af7e0f in rviz_common::properties::PropertyTreeDelegate::createEditor(QWidget*, QStyleOptionViewItem const&, QModelIndex const&) const () at /opt/ros/eloquent/lib/librviz_common.so
#5  0x00007ffff7559850 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#6  0x00007ffff7559a58 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007ffff7559c7a in QAbstractItemView::edit(QModelIndex const&, QAbstractItemView::EditTrigger, QEvent*) ()
    at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff755b4bb in QAbstractItemView::currentChanged(QModelIndex const&, QModelIndex const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#9  0x00007ffff75c7936 in QTreeView::currentChanged(QModelIndex const&, QModelIndex const&) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff7afacb1 in rviz_common::properties::PropertyTreeWidget::currentChanged(QModelIndex const&, QModelIndex const&) ()
    at /opt/ros/eloquent/lib/librviz_common.so
#11 0x00007ffff75569a1 in  () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#12 0x00007ffff6d24555 in QMetaObject::activate(QObject*, int, int, void**) () at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#13 0x00007ffff6ca168a in QItemSelectionModel::currentChanged(QModelIndex const&, QModelIndex const&) ()
    at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#14 0x00007ffff6ca197e in QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) ()
    at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

Code I'm using:
topic_property1_ = new RosTopicProperty("Topic1", "", "", "", this, SLOT(updateTopic()));

topic_property2_ = new RosTopicProperty("Topic2", "", "", "", this, SLOT(updateTopic()));

I'm using ROS Eloquent on Ubuntu 18.04. It worked fine in ROS1 Melodic.

@Tamme AFAIK, going from ROS 1 to ROS 2, rviz has changed. And without means of reproducing this, unless you can prove this is a fundamental issue with rviz, I'd be inclined to close this as a likely non-issue and encourage you to make this question (and any other question of this kind) in answer.ros.org, where you can get guidance while debugging your custom plugin. Can you provide any other information?

Yes. That was my bad. Hadn't initialized the variables correctly.


GH-39037: [Java] Remove (Contrib/Experimental) mention in Flight SQL

Rationale for this change
Considering that Flight SQL has been present for a while and should be fairly stable, remove the (Contrib/Experimental) mention from the pom file which also shows up on Maven Central UI pages
Are these changes tested?
Local test but there's no code change, only cosmetic
Are there any user-facing changes?
None

Closes: #39037

We still declare it as experimental in the format itself, though.

@lidavidm Would you prefer I also take care of the rest of the mentions, following up on the vote on the mailing list?

up to you, I already filed a new issue for that so don't feel like you have to here

Also took a look and LGTM.

up to you, I already filed a new issue for that so don't feel like you have to here

Ok, will keep my change as-is then. Thanks

A CI is failing, but it seems unrelated.


Eventhub Sink

As a developer I would like to write SLAB events to service bus eventhub

Better use this one: https://github.com/DeHeerSoftware/SemanticLogging.EventHub


'Job A' unable to access cache of downstream 'Job B'

Heya! I have these two jobs where Job B needs Job A: https://github.com/returntocorp/semgrep/blob/a9e8b90c2e3de705c54ca311b414608ffaa32ff7/.github/workflows/tests.yml#L15-L67
Both jobs do this:
        uses: actions/cache@v3
        with:
          path: ocaml-build-artifacts.tgz
          key: foo

But only Job B ever builds that artifact, while Job A only tries to restore it to see if Job B can be skipped altogether.
Now, I don't see why this wouldn't work, but it does not, see these logs:

Job A fails to restore the cache: https://github.com/returntocorp/semgrep/runs/6823861478?check_suite_focus=true#step:5:38
Job B successfully restores the cache: https://github.com/returntocorp/semgrep/runs/6823863765?check_suite_focus=true#step:6:61

I would expect the restore to succeed in Job A as well.

I encountered the same issue and it seems to happen commonly - and there are different reasons behind that:
https://github.com/actions/cache/issues/591
https://github.com/actions/cache/issues/790
https://github.com/actions/cache/issues/815 - not relevant in your case but maybe will help someone else that stumbles upon this issue
For me it was because "Job B" was running inside a debian container while "Job A" used ubuntu runner directly. Making "Job A" use the same debian container as "Job B" fixed the issue.

@underyx this is happening because of two different OS containers. Due to that, in Job A case zstd is used for compression. Can be inferred from logs
##[debug]Checking zstd --version
##[debug]*** zstd command line interface 64-bits v1.5.2, by Yann Collet ***

In Job B, zstd is not found and hence it falls back to gzip
##[debug]Checking zstd --version
##[debug]Unable to locate executable file: zstd. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.

Whenever compression technique is different, the caches are treated as unique even though cache-key is same. Otherwise the de-compression will fail.
The fix is either to use same OS or ensure that same tools (e.g. zstd) is installed on both.

Btw, there is a gh cli extension available now which lets you get more details about caches. This is very useful to investigate such cases where it can tell that there are multiple unique caches with same cache-key.
gh actions-cache -R returntocorp/semgrep list --key Linux-core-binary-33f5aa25ae29f43d727674444c46824dbccfcfba9f53e1a12936d6bbcb7d9e24-783548e45023fa5e1dfa2a0b4ab86792edea8d09fe8b2b20087253c7e12b10c0

We can update the error message to spit out more details about cache miss. Keeping the issue open.

Have updated the error message to show other versions on cache miss if debug is on


Fix parallel builds [DI-128]

Fixes cryptic errors in other plugins when the multimodule project is built using a parallel build.
E.g.
$ mvn -T0.5C clean install -DskipTests
....
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/frantisek/work/hz/repos/hazelcast-mono/hazelcast/hazelcast-spring/src/test/java/com/hazelcast/NoMixedJUnitAnnotationsInOurTestSourcesTest.java:[19,35] package com.hazelcast.test.archunit does not exist
[ERROR] /home/frantisek/work/hz/repos/hazelcast-mono/hazelcast/hazelcast-spring/src/test/java/com/hazelcast/NoMixedJUnitAnnotationsInOurTestSourcesTest.java:[20,35] package com.hazelcast.test.archunit does not exist

....
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project hazelcast-jet-csv: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile failed: Cannot invoke "java.io.File.getPath()" because "element" is null -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project hazelcast-jet-s3: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile failed: Cannot invoke "java.io.File.getPath()" because "element" is null -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project hazelcast-jet-avro: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile failed: Cannot invoke "java.io.File.getPath()" because "element" is null -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project hazelcast-jet-cdc-debezium: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile failed: Cannot invoke "java.io.File.getPath()" because "element" is null -> [Help 1]
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:testCompile (default-testCompile) on project hazelcast-spring: Compilation failure: Compilation failure:
[ERROR] /home/frantisek/work/hz/repos/hazelcast-mono/hazelcast/hazelcast-spring/src/test/java/com/hazelcast/NoMixedJUnitAnnotationsInOurTestSourcesTest.java:[19,35] package com.hazelcast.test.archunit does not exist
[ERROR] /home/frantisek/work/hz/repos/hazelcast-mono/hazelcast/hazelcast-spring/src/test/java/com/hazelcast/NoMixedJUnitAnnotationsInOurTestSourcesTest.java:[20,35] package com.hazelcast.test.archunit does not exist

@kwart are you able to describe what caused the issue please and how it was addressed?

@kwart are you able to describe what caused the issue please and how it was addressed?

During the parallel build, it sometimes happened that the artifacts within Set<Artifact> MavenProject.artifacts returned null when Artifact.getFile() was called. Some plugins don't have a null check and fail with NPEs.
My hypothesis is that the dependencies within the project (i.e. a submodule depending on another one) caused the troubles. The plugin now skips dependencies that have groupId:artifactId belonging to one of submodules. So the main part of the fix is she skip in https://github.com/hazelcast/attribution-maven-plugin/pull/75/files#diff-e69ba7d4e67ec4d2c25fdbcc0520e9b0f33ad311cb77ec3959300380fd9f89bfR45-R49

Sample of missing null-check in another plugin: https://github.com/apache/maven-compiler-plugin/blob/maven-compiler-plugin-3.13.0/src/main/java/org/apache/maven/plugin/compiler/CompilerMojo.java#L313


Publisher for Error.msg

Hi,
I can see that Franka_msg package of Franka_Ros has a message “Error.msg”.
But I wasnt able to find which topic publishes this message.
My objective is to get a notifcation when the robot goes into error and error_recovery is required. Could someone who knows which topic publishes the “error.msg” point out which topic it is ?

Hi,
I was trying to achieve something similar and the topic you need to look at is /franka_state_controller/franka_states of type FrankaState.msg, that has 2 Error.msg embedded (definition of both is in franka_msgs).
However, I found that some errors are reported correctly in the current_errors field (e.g. joint_position_limits_violation) but others seem not reported (e.g. I never seen a True for cartesian_reflex in current_errors).
If the Franka team could tell us how the different errors are handled and published it would be great!

Hi @MattiaRacca ,
I found that in the FrankaState message , there is a field called 'robot mode' which becomes 4 when the robot is in error.


Add website data

Add images and config for landr:
Usage:
npm i -g<EMAIL_ADDRESS>
From Balena root dir:
landr

visit :3000 to see dev server
build site
landr build

view built site
landr view

deploy
landr deploy

There is still some work to do on the docs page: ect, but can you pull and make sure you can build fine?


Add gnuTLS support to module

Allow use of either GnuTLS or OpenSSL for crypto functions in the module. (defaults to OpenSSL).

I couldn't build it in my development environment or CI, so I used it as a reference and tried to deal with it.
https://github.com/kjdev/nginx-auth-jwt/tree/feat/gnutls-support
I have not been able to pass the test yet, so I need to make some adjustments.
t/auth_jwt.t ................. ok
t/auth_jwt_claim.t ........... ok
t/auth_jwt_claim_set.t ....... ok
t/auth_jwt_claims.t .......... ok
t/auth_jwt_key_file.t ........ ok
t/auth_jwt_key_request.t ..... ok
t/auth_jwt_leeway.t .......... ok
t/auth_jwt_phase.t ........... ok
t/auth_jwt_validate_alg.t ....
Dubious, test returned 15 (wstat 3840, 0xf00)
Failed 15/176 subtests
t/auth_jwt_validate_aud.t .... ok
t/auth_jwt_validate_exp.t .... ok
t/auth_jwt_validate_iat.t .... ok
t/auth_jwt_validate_iss.t .... ok
t/auth_jwt_validate_nbf.t .... ok
t/auth_jwt_validate_nonce.t .. ok
t/auth_jwt_validate_sig.t .... ok
t/auth_jwt_validate_sub.t .... ok
t/bearer_token.t ............. ok

Test Summary Report
-------------------
t/auth_jwt_validate_alg.t  (Wstat: 3840 (exited 15) Tests: 176 Failed: 15)
  Failed tests:  97-101, 118-122, 139-143
  Non-zero exit status: 15
Files=18, Tests=977, 1144 wallclock secs ( 0.15 usr  0.05 sys +  3.71 cusr  2.19 csys =  6.10 CPU)

I did manage to get this working and used it for some internal testing but I ended up abandoning it in favour of using the openssl version on a more recent os distro.
Im considering declining this PR but if you wanted to carry on working on it, feel free :)


Subrequests

Add the possibility to do subrequests on several reducers. This is needed so you can get the data in on the same page for different components. For example if you need a listing tile. We need it for the following reducers:

content
search

Closing, already implemented in #575


Turn a string to a channel?

when I use onWhisper I just have it send a whisper back, like so:
public void onWhisper(User user, String message){         this.whisper(user, message);         //this.sendMessage("BY GOD WE DID IT " + user + "SAID: " + message, channel); }
But there is no whisper sent back, so the event just doesn't work?

Well, the problem here is that the Whisper is a WIP, so I don't expect it to work right now. As stated in the README, nowadays I see is a more used function so I will try to make it happen for next update. Or if you know how to code this function the community would really appreciate it. Thanks :smile:


chore(doc): updating community meeting details

Signed-off-by: Pawan<EMAIL_ADDRESS>

@GlennBullingham we have concluded on timing also in that meeting. It is there in the MOM.

@kmova Please take a look at this PR.


Keybind issue while leveling

Details
When creating a new character and starting the leveling profile (lightning sorc and paladin) it just stands in town trying to bind some skill over and over. Turning off autobind works but then no skills will used/bound.
Version
dev

Did you ever figure out what causes this?

you can bind them yourself as a workaround.
I thought there was another, releated issue for this but unable to find it r/n

This is an issue with current versions but the logic will be completely rewritten in the upcoming release.


Login controller error after multi tenancy refactor

This is  a bug | feature request.

Prerequisites

[ ] Are you running the latest version?
[ ] Are you reporting to the correct repository?
(enso is made of many specialized packages: https://github.com/familytree365)
[ ] Did you check the documentation?
[ ] Did you perform a cursory search?

Description

Steps to Reproduce

Expected behavior

Actual behavior

Fixed can you test?


Run a Node

What

added diagram
revised language
re-structured to match the spec
re-formatted screenshots on deposits page to be smaller
outsourced much of the setup instructions to the corresponding client's official docs

Refs
https://github.com/gnosischain/developers-portal/issues/19

Hi @CJBangert thanks for your contribution! The bullets in the description of the PR are meant to be filled with the information related to this PR. Also, in the title you could specify that is a draft by putting the "WIP" prefix.

Comments from review session

Needs more "client-focused" tutorials (i.e. setup Teku node)
Should reuse as much as possible from Ethereum

@CJBangert now that you have the "tools" section merged, please check the following:

all "https://developers.gnosischain.com" links point to tools, they should point to internally in the project "/tools/..."
update Dune analytics page with the work you and @nitric made
add when necessary more internal links to tools in the "run a node" section
Thanks!!


Testing

in your code there is no testing yet, but I see the testing data already exists. how to implement it? is it the same as validation
Can you help me for the steps i need to do?

is it the same as validation

Yes.

I'm trying to understand the code, in the summary of the results of the training you did, why did the results only 3 words? while the maximum summary is 31.
I tried to use longer data and only 3 words were issued.
Are there any parameters that must be changed other than the maximum summary?
please answer, thanks in advance

I don't think you can control how many words are generated directly. The
maximum length is juts that: the maximum upperbound. In practice, the model
is trained to predict a special token called e d of sequence (eos) token
after the summary. The eos token marks the end of the generation. During
inference I ignore every token after eos . If you are getting only 3 words
it means the model is generating eos after the 3 words.
The reason why it is mostly around 3 words could be partly  because a lot
of training data has similar 3-4 words summary. Otherwise, it may be a
model issue, hyperparameters issue, or lack of more training issue. If the
data has mostly few short words, and you generally want bigger summaries,
then it's probably best to try a different dataset. I think there are also
some paper available that tries to do more length controlled generation if
you want more control. But yeah, in general you can't do much here.
You can change the code where I filter tokens after the eos token to print
the whole generated tokens if you want to see the whole generated sequence.
I think you will find the code around the section where I am printing the
generated text.
On Wed, Aug 18, 2021, 4:08 AM Karima Marwazia Shaliha <
@.***> wrote:

I'm trying to understand the code, in the summary of the results of the
training you did, why did the results only 3 words? while the maximum
summary is 31.
I tried to use longer data and only 3 words were issued.
Are there any parameters that must be changed other than the maximum
summary?
please answer, thanks in advance
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/JRC1995/Abstractive-Summarization/issues/17#issuecomment-900950312,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYBQNTHE7NIQAMFB6MA76DT5N2ADANCNFSM45MVKHDQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

umm, okay For that problem I understand, maybe because the data I use is not so good so the accuracy produced is not as good as the accuracy you produce.
This text summarization model can be used in other language datasets, right? Maybe just need to replace the pre-trained embedding Glove

Yes. You can also try other models from github.
On Thu, Aug 19, 2021, 4:38 AM Karima Marwazia Shaliha <
@.***> wrote:

umm, okay For that problem I understand, maybe because the data I use is
not so good so the accuracy produced is not as good as the accuracy you
produce.
This text summarization model can be used in other language datasets,
right? Maybe just need to replace the pre-trained embedding Glove
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/JRC1995/Abstractive-Summarization/issues/17#issuecomment-901765816,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACYBQNXZ2E56TWPPSTAIJC3T5TGKJANCNFSM45MVKHDQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email
.

Vp = tf.get_variable("Vp", shape=[128,1],
dtype=tf.float32,
trainable=True,
initializer=tf.glorot_uniform_initializer())
Okay, I'm still curious about the number 128 in the code above. What size is that for?

It's the number of neurons in the layers used to predict the local attention window position. https://arxiv.org/pdf/1508.04025.pdf (eqn. 9) if Wp transforms some vector of dimension d to 128, then Vp transformes the 128 dimension to 1.

why use the value 128?
and maybe this is my last question, I don't quite understand yet for the value 5 in Gradient Clipping. Can you explain a little?
this is the code:
capped_gvs = [(tf.clip_by_norm(grad,5), var) for grad, var in gvs]
thanks for all the answers

I don't remember, I probably chose 128 randomly. Ideally, we are supposed to hyperparameter tune it.
Same for 5. I have seen 1 or 5 been used as reasonable values for gradient clipping. I just randomly chose 5.